github.com/ipfans/trojan-go@v0.11.0/docs/content/advance/websocket.md (about) 1 --- 2 title: "使用Websocket进行CDN转发和抵抗中间人攻击" 3 draft: false 4 weight: 2 5 --- 6 7 ### 注意,Trojan不支持这个特性 8 9 Trojan-Go支持使用TLS+Websocket承载Trojan协议,使得利用CDN进行流量中转成为可能。 10 11 Trojan协议本身不带加密,安全性依赖外层的TLS。但流量一旦经过CDN,TLS对CDN是透明的。其服务提供者可以对TLS的明文内容进行审查。**如果你使用的是不可信任的CDN(任何在中国大陆注册备案的CDN服务均应被视为不可信任),请务必开启Shadowsocks AEAD对Webosocket流量进行加密,以避免遭到识别和审查。** 12 13 服务器和客户端配置文件中同时添加websocket选项,并将其```enabled```字段设置为true,并填写```path```字段和```host```字段即可启用Websocket支持。下面是一个完整的Websocket选项: 14 15 ```json 16 "websocket": { 17 "enabled": true, 18 "path": "/your-websocket-path", 19 "host": "example.com" 20 } 21 ``` 22 23 ```host```是主机名,一般填写域名。客户端```host```是可选的,填写你的域名。如果留空,将会使用```remote_addr```填充。 24 25 ```path```指的是websocket所在的URL路径,必须以斜杠("/")开始。路径并无特别要求,满足URL基本格式即可,但要保证客户端和服务端的```path```一致。```path```应当选择较长的字符串,以避免遭到GFW直接的主动探测。 26 27 客户端的```host```将包含在Websocket的握手HTTP请求中,发送给CDN服务器,必须有效;服务端和客户端```path```必须一致,否则Websocket握手无法进行。 28 29 下面是一个客户端配置文件的例子 30 31 ```json 32 { 33 "run_type": "client", 34 "local_addr": "127.0.0.1", 35 "local_port": 1080, 36 "remote_addr": "www.your_awesome_domain_name.com", 37 "remote_port": 443, 38 "password": [ 39 "your_password" 40 ], 41 "websocket": { 42 "enabled": true, 43 "path": "/your-websocket-path", 44 "host": "example.com" 45 }, 46 "shadowsocks": { 47 "enabled": true, 48 "password": "12345678" 49 } 50 } 51 ```