正确配置Trojan-Go
下面将介绍如何正确配置Trojan-Go以完全隐藏你的代理节点特征。
在开始之前,你需要
服务端配置
我们的目标是,使得你的服务器和正常的HTTPS网站表现相同。
首先你需要一个HTTP服务器,可以使用nginx,apache,caddy等配置一个本地HTTP服务器,也可以使用别人的HTTP服务器。HTTP服务器的作用是,当GFW主动探测时,向它展示一个完全正常的Web页面。
你需要在remote_addr和remote_port指定这个HTTP服务器的地址。remote_addr可以是IP或者域名。Trojan-Go将会测试这个HTTP服务器是否工作正常,如果不正常,Trojan-Go会拒绝启动。
下面是一份比较安全的服务器配置server.json,需要你在本地80端口配置一个HTTP服务(必要,你也可以使用其他的网站HTTP服务器,如"remote_addr": “”),在1234端口配置一个HTTPS服务,或是一个展示"400 Bad Request"的静态HTTP网页服务。(可选,可以删除fallback_port字段,跳过这个步骤)
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": [
"your_awesome_password"
],
"ssl": {
"cert": "server.crt",
"key": "server.key",
"fallback_port": 1234
}
}
这个配置文件使Trojan-Go在服务器的所有IP地址上(0.0.0.0)监听443端口,分别使用server.crt和server.key作为证书和密钥进行TLS握手。你应该使用尽可能复杂的密码,同时确保客户端和服务端password是一致的。注意,Trojan-Go会检测你的HTTP服务器:remote_port是否正常工作。如果你的HTTP服务器工作不正常,Trojan-Go将拒绝启动。
当一个客户端试图连接Trojan-Go的监听端口时,会发生下面的事情:
你可以通过使用浏览器访问你的域名来验证。如果工作正常,你的浏览器会显示一个正常的HTTPS保护的Web页面,页面内容与服务器本机80端口上的页面一致。你还可以使用:443验证fallback_port工作是否正常。
事实上,你甚至可以将Trojan-Go当作你的HTTPS服务器,用来给你的网站提供HTTPS服务。访客可以正常地通过Trojan-Go浏览你的网站,而和代理流量互不影响。但是注意,不要在remote_port和fallback_port搭建有高实时性需求的服务,Trojan-Go识别到非Trojan协议流量时会有意增加少许延迟以抵抗GFW基于时间的检测。
配置完成后,可以使用
./trojan-go -config ./server.json
启动服务端。
客户端配置
对应的客户端配置client.json
{
"run_type": "client",
"local_addr": "127.0.0.1",
"local_port": 1080,
"remote_addr": "your_awesome_server",
"remote_port": 443,
"password": [
"your_awesome_password"
],
"ssl": {
"sni": "your-domain-name.com"
}
}
这个客户端配置使Trojan-Go开启一个监听在本地1080端口的socks5/http代理(自动识别),远端服务器为your_awesome_server:443,your_awesome_server可以是IP或者域名。
如果你在remote_addr中填写的是域名,sni可以省略。如果你在remote_addr填写的是IP地址,sni字段应当填写你申请证书的对应域名,或者你自己签发的证书的Common Name,而且必须一致。注意,sni字段目前的在TLS协议中是明文传送的(目的是使服务器提供相应证书)。GFW已经被证实具有SNI探测和阻断能力,所以不要填写类似等已经被封锁的域名,否则很有可能导致你的服务器也被遭到封锁。
配置完成后,可以使用
./trojan-go -config ./client.json
启动客户端。
更多关于配置文件的信息,可以在左侧导航栏中找到相应介绍。
Edit on GitHub
Prev - Trojan基本原理Next - 完整的配置文件
Powered by Hugo. Theme by TechDoc. Designed by Thingsym.
高级配置 实现细节和开发指南