这年头该用啥代理?

富强、民主、文明、和谐

自由、平等、公正、法治

爱国、敬业、诚信、友善

更新

19.4.8更新权限配置

Server

Trojan

这里还是说在Debian上的搭建方式

首先建议你升级到Debian 10(buster):

apt update
apt dist-upgrade
cp /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i 's/stretch/buster/g' /etc/apt/sources.list #将stretch更换为你的codename
apt update
apt dist-upgrade
apt --purge autoremove

然后安装Trojan:

apt install trojan

Trojan的配置位于/etc/trojan.json

编辑它将"password":内的值改为你自己的密码
"cert":"key":改为你网站的ssl证书和私钥
通过acme申请证书:

# 安装acme
curl  https://get.acme.sh | sh
echo 'alias acme.sh=~/.acme.sh/acme.sh' >> ~/.bashrc
source ~/.bashrc
# 声明Cloudflare帐号与API KEY并申请证书(在这个[页面](https://www.cloudflare.com/a/profile)点击Global API Key--->View API Key即可看到):
export CF_Key="你的API KEY"
export CF_Email="你的邮箱"
acme.sh --issue --dns dns_cf -d google.com -d *.google.com #这里的google.com换成你的域名
# 安装证书:
mkdir -p /etc/letsencrypt/live/google.com/
acme.sh  --installcert  -d  google.com   \ # 记得更改域名
        --key-file   /etc/letsencrypt/live/google.com/privkey.pem \ # 记得更改域名
        --fullchain-file /etc/letsencrypt/live/google.com/fullchain.pem \ # 记得更改域名
        --reloadcmd  "chown -R nginx:nginx /etc/letsencrypt/ && systemctl restart trojan" # 这里的nginx注意修改为nginx使用的用户名

(完整内容可以阅读这篇文章
其他可保持默认

如果你使用Nginx,则建议将trojan服务(/lib/systemd/system/trojan.service)的运行用户修改为nginx或www-data(其它web server用对应的用户也可以):

...
User=nginx # 或www-data 
...

否则将证书的权限开放出来(不建议):

chmod 755 -R /etc/letsencrypt/ # 记得修改acme.sh的--reloadcmd参数

启用服务:

systemctl enable trojan
systemctl start trojan

Nginx

Trojan对于非Trojan客户端的请求都会转向服务端本地80端口(仍是443端口),这里选用nginx作为web服务器

apt install nginx
nano /etc/nginx/sites-enabled/default

所以nginx的配置不能写有监听443,监听在本地的80端口即可

至于其它配置照常写就行了(关于ssl证书等配置将无效)

如果你还希望运行v2ray则加上(因为trojan还没有像样的手机客户端,所以只能先跑个v2ray):

...
 location /download {
        proxy_redirect off;
        proxy_pass http://localhost:1234;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        }
...

启动Nginx:

systemctl enable nginx
systemctl start nginx

V2ray

V2ray的TLS+websocket+Nginx应该是最稳的方案之一了
但是延迟却比较感人,且因为GO未支持tls1.3还只能用tls1.2

wget https://install.direct/go.sh -O v2ray.sh
bash v2ray.sh

更改配置:

rm /etc/v2ray/config.json
nano /etc/v2ray/config.json

写入(请注意并删除中文注释):

{
  "outbound": {
    "streamSettings": null,
    "tag": null,
    "protocol": "freedom",
    "mux": null,
    "settings": null
  },
  "log": {
    "access": "/var/log/v2ray/access.log",
    "loglevel": "info",
    "error": "/var/log/v2ray/error.log"
  },
  "outboundDetour": [{
      "tag": "direct",
      "protocol": "freedom",
      "settings": null
    },
    {
      "tag": "blocked",
      "protocol": "blackhole",
      "settings": null
    }
  ],
  "inbound": {
    "streamSettings": {
      "network": "ws",
      "kcpSettings": null,
      "wsSettings": {
        "path": "/download" #这里必须和Nginx配置中"/download"的路径一样
      },
      "tcpSettings": null,
      "tlsSettings": {},
      "security": ""
    },
    "settings": {
      "ip": null,
      "udp": true,
      "clients": [{
        "alterId": 100,
        "security": "none",
        "id": "xxxx-xxxx-xxxx-xxxx" #请访问 https://www.uuidgenerator.net/ 获取UUID并改入
      }],
      "auth": null
    },
    "protocol": "vmess",
    "port": 1234, #这里的端口也必须和Nginx配置中"/download"的端口一样
    "listen": null
  },
  "inboundDetour": null,
  "routing": {
    "settings": {
      "rules": [{
        "ip": [
          "0.0.0.0/8",
          "10.0.0.0/8",
          "100.64.0.0/10",
          "127.0.0.0/8",
          "169.254.0.0/16",
          "172.16.0.0/12",
          "192.0.0.0/24",
          "192.0.2.0/24",
          "192.168.0.0/16",
          "198.18.0.0/15",
          "198.51.100.0/24",
          "203.0.113.0/24",
          "::1/128",
          "fc00::/7",
          "fe80::/10"
        ],
        "domain": null,
        "type": "field",
        "port": null,
        "outboundTag": "blocked"
      }],
      "domainStrategy": null
    },
    "strategy": "rules"
  },
  "dns": null
}
# 你可真鸡儿长

启动V2ray服务:

systemctl enable v2ray
systemctl start v2ray

Client

Trojan

Cient配置文件示例(注意并删除中文注释):

{
    "run_type": "client",
    "local_addr": "127.0.0.1",
    "local_port": 这里为你本地的socks5代理端口,例如1080,
    "remote_addr": "这里改为你网站的地址,例如google.com",
    "remote_port": 这里改为你的端口,例如443,
    "password": ["这里改为你的密码"],
    "append_payload": true,
    "log_level": 1,
    "ssl": {
        "verify": true,
        "verify_hostname": true,
        "cert": "",
        "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA",
        "sni": "这里改为你网站的地址,例如google.com",
        "alpn": [
            "h2",
            "http/1.1"
        ],
        "reuse_session": true,
        "curves": "",
        "sigalgs": ""
    },
    "tcp": {
        "keep_alive": true,
        "no_delay": true,
        "fast_open": true,
        "fast_open_qlen": 5
    }
}

当然,你可以使用这个生成配置:https://trojan-gfw.github.io/trojan-config-gen/

记得启用服务:
Gentoo:

rc-update add trojan default
rc-service trojan start

systemd:

systemctl enable trojan
systemctl start trojan

Known issues

如果你的Server有ipv6 IP
修改/etc/gai.conf

加入或去掉注释以下内容然后重启网络(简单重启也行):

precedence ::ffff:0:0/96  100

Community

Telegram Group
Telegram Channel


V2ray

这货配置文件太鸡儿长了
对于json配置我还是直接丢链接吧:https://github.com/KiriKira/vTemplate

这里说下V2ray手动配置(Android客户端为例,不建议直接导入使用json配置):

###服务器###
主机:域名(无路径)
端口: 443
用户ID:填server的UUID
Alterid: 100
加密方式:none
用户等级: 0
网络: WebSocket 或 ws
加密方式: tls
服务器证书域名: 不填
允许不安全连接: 关闭
WebSocket或ws路径: /download
HTTP头: 不填
20条评论
  1. [...]!function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);e=[...]

    回复
  2. Caffreyfans
    Caffreyfans2019-05-29

    大神换波友链

    1. YangMame
      YangMame2019-05-30

      okay,加上啦

      回复
    回复
  3. repostone
    repostone2019-05-19

    不是说代理问题么?

    回复
  4. 阿呆
    阿呆2019-01-14

    请问Caddyfile怎么设置才能转到Trojan啊?

    1. YangMame
      YangMame2019-01-14

      caddy不要用443端口(HTTPS)因为trojan要用443端口,挂在80端口(HTTP)就行了(Trojan会代理过去)。(域名/IP后面加“:80”,且不要指定用https://)

      1. 阿呆
        阿呆2019-01-14

        还有一个问题,这样配的话,blog、file这些子域名怎么配呢?

        1. YangMame
          YangMame2019-01-14

          我也没有在yangmame.org上使用trojan,建议用子域名在别的server上搭建或者另外搞个域名(免费域名比如.tk)

          回复
        2. YangMame
          YangMame2019-01-14

          如果没有其它域名,可以用通配证书(即所有子域名都可以用一张证书)然后这些域名的caddy配置全部用http就行了 caddy不用配置任何HTTPS/SSL相关的配置。不过还是不建议拿trojan当所有子域名的HTTPS服务端,具体怎样分隔看你自己需求了

          回复
        3. 阿呆
          阿呆2019-01-14

          试了下好象有问题 这样的blog.yangmame.org:80 { ...

          回复
        回复
      2. 阿呆
        阿呆2019-01-14

        谢谢,试了这样确实可以。

        回复
      回复
    回复
  5. 嘿嘿嘿
    嘿嘿嘿2018-12-21

    sed -i 's/stretch/buster/g' /etc/apt/sources.list #将stretch更换为你的codename

    codename是什么???

    1. YangMame
      YangMame2018-12-21

      你理解成版本代号就行了

      1. 嘿嘿嘿
        嘿嘿嘿2018-12-21

        现在IOS端已经有3个APP支持trojan协议了呀~ Debian就唯一有你这个教程。但我这种小白可能不太好接受。假如能更大众化一些的话你这个博客会上热搜了啊。

        1. YangMame
          YangMame2019-01-10

          有三个了嘛?我怎么只看到俩个有支持了 能说下嘛?

          1. 嘿嘿嘿
            嘿嘿嘿2019-01-10

            火箭、圈、pharos

          回复
        回复
      回复
    2. YangMame
      YangMame2018-12-21

      比如stretch和buster就是debian的两个codename

      回复
    回复
  6. a-wing
    a-wing2018-06-17

    因缺思厅。。貌似有点意思

    1. asdf
      asdf2019-06-03

      不存在留不留,有无,cnx不管怎么说,可说任何任何都可

      回复
    2. YangMame
      YangMame2018-08-02

      回复测试(邮箱)

      回复
    回复
添加新评论