简介
Trojan-Go使用Go实现的完整Trojan代理,与Trojan协议以及Trojan版本的配置文件格式兼容。安全,高效,轻巧,易用。
支持使用多路复用提升并发性能,使用路由模块实现国内直连。
支持CDN流量中转(基于WebSocket over TLS/SSL)。
支持使用AEAD对Trojan流量二次加密(基于Shadowsocks AEAD)。
支持可插拔的传输层插件,允许替换TLS,使用其他加密隧道传输Trojan协议流量。
完整配置教程和配置介绍参见Trojan-Go文档。
准备工作
- 可用的公网 IP 服务器(例如在 BandwagonHost、Vultr 等处购买的 VPS)
- 注册一个域名,本文以 example.com为例
- 浏览器可正常访问 example.com的显示网页
- 请自行关闭防火墙,并放行80/443端口
安装并配置 trojan-go
安装
以 trojan-go v0.5.1 为例:
| 1
2
3
 | wget https://github.com/p4gefau1t/trojan-go/releases/download/v0.5.1/trojan-go-linux-amd64.zip
unzip -o trojan-go-linux-amd64.zip -d /usr/local/bin/trojan-go
rm trojan-go-linux-amd64.zip
 | 
 
 
设置自启
新建服务文件:
| 1
 | vim /etc/systemd/system/trojan-go.service
 | 
 
 
添加如下内容:
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 | [Unit]
Description=Trojan-Go
After=network.target nss-lookup.target
Wants=network-online.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/trojan-go/trojan-go -config /usr/local/etc/trojan-go/config.json
Restart=on-failure
RestartSec=15
[Install]
WantedBy=multi-user.target
 | 
 
 
启用服务:
| 1
 | systemctl enable trojan-go
 | 
 
 
配置
创建配置文件:
| 1
2
 | mkdir -p /usr/local/etc/trojan-go
vim /usr/local/etc/trojan-go/config.json
 | 
 
 
编辑配置文件,注意替换其中的password,以及ssl部分的内容:
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
 | {
    "run_type": "server",
    "local_addr": "0.0.0.0",
    "local_port": 443,
    "remote_addr": "127.0.0.1",
    "remote_port": 80,
    "password": [
        "fuckgfw"
    ],
    "ssl": {
        "cert": "/etc/ssl/certs/example.com.cer",
        "key": "/etc/ssl/certs/example.com.key",
        "sni": "example.com"
    },
    "router":{
        "enabled": true,
        "block": [
            "geoip:private"
        ]
    }
}
 | 
 
 
安装及配置Nginx及安装证书
启动服务
| 1
 | systemctl restart trojan-go
 | 
 
 
至此,服务端已部署完成。
客户端配置文件
编辑配置文件,注意替换其中的password及example.com内容:
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 | {
    "run_type": "client",
    "local_addr": "127.0.0.1",
    "local_port": 1080,
    "remote_addr": "example.com",
    "remote_port": 443,
    "password": [
        "fuckgfw"
    ],
    "ssl": {
        "sni": "example.com"
    },
    "mux" :{
        "enabled": true
    },
    "router":{
        "enabled": true,
        "bypass": [
            "geoip:cn",
            "geoip:private",
            "geosite:cn",
            "geosite:geolocation-cn"
        ],
        "block": [
            "geosite:category-ads"
        ],
        "proxy": [
            "geosite:geolocation-!cn"
        ],
        "default_policy": "proxy"
    }
} 
 | 
 
 
Cloudflare 设置
- 将域名的 Namesever 指向 Cloudflare 所提供的地址,等待生效
- NS 记录更新后,将 Cloudflare 中域名的 A 记录指向服务器 IP,确保云朵为橙色(Proxied)
- 在 SSL/TLS版块中的Overview里,将加密模式调整为Full (strict)
- 在 SSL/TLS版块中的Edge Certificates里,将Minimum TLS Version调整为TLS 1.3,并在下方确保开启对 TLS 1.3 的支持
- 在 Firewall版块中的Firewall Rules里,添加一个规则,允许/random路径的访问(Allow URI path)
- 在 Cloudflare 上获取域名的 Zone ID,记录之
- 在 Cloudflare 的 My Profile中生成一个API Token,权限为Zone Zone Read和Zone DNS Edit,Zone Resources特指区域为example.com,完成后记下Token
- 根据自己的需要在 Cloudflare 上进行其他设置(可选),例如配置 Always Use HTTPS、HSTS、Automatic HTTPS Rewrites、Auto Minify等等,主要影响浏览器访问网站的效果