diff --git a/docs/content/advance/websocket.md b/docs/content/advance/websocket.md index cad8619b3..6f7126082 100644 --- a/docs/content/advance/websocket.md +++ b/docs/content/advance/websocket.md @@ -16,7 +16,19 @@ Trojan-Go支持使用TLS+Websocket承载Trojan协议,使得利用CDN进行流 "path": "/imaurlpath", "hostname": "www.your_awesome_domain_name.com", "obfuscation_password": "another_password", - "double_tls": true + "double_tls": true, + "ssl": { + "verify": true, + "verify_hostname": true, + "cert": "", + "key": "", + "key_password": "", + "prefer_server_cipher": false, + "sni": "", + "session_ticket": true, + "reuse_session": true, + "plain_http_response": "", + } } ``` @@ -24,7 +36,9 @@ Trojan-Go支持使用TLS+Websocket承载Trojan协议,使得利用CDN进行流 ```path```指的是websocket所在的URL路径,必须以斜杠("/")开始。路径并无特别要求,满足URL基本格式即可,但要保证客户端和服务端的```path```一致。```path```应当选择较长的字符串,以避免遭到GFW直接的主动探测。 -```double_tls```表示是否开启双重TLS,如果省略,默认设置为true。因为Trojan-Go与CDN进行了TLS握手,对于CDN而言,TLS流量内容是明文。为了保证安全性,Trojan-Go默认将在Websocket连接上再建立一次TLS连接(双重TLS)。此时传输实际上经过了两次TLS握手,并且这个TLS隧道的证书校验被**强制开启**。 +```double_tls```表示是否开启双重TLS,如果省略,默认设置为true。因为Trojan-Go与CDN进行了TLS握手,对于CDN而言,TLS流量内容是明文。为了保证安全性,Trojan-Go默认将在Websocket连接上再建立一次TLS连接(双重TLS)。此时传输实际上经过了两次TLS握手。 + +```ssl```第二层TLS的配置。如果未填写,使用全局的```ssl```选项填充 ```obfuscation_password```为Websocket流量混淆密码。如果你使用了国内的CDN,建议设置```obfuscation_password```字段进行流量混淆。Trojan-Go将对Websocket承载的流量再进行一次加密(AES-128-CTR)。注意这个字段的主要目的仅仅是**混淆**上层流量的特征(TLS/Trojan),防止被国内的CDN识别和封锁,**它无法确保传输数据安全性**。安全性应该由第二层TLS隧道保证。 @@ -36,7 +50,7 @@ Trojan-Go支持使用TLS+Websocket承载Trojan协议,使得利用CDN进行流 **如果你使用的是国内的CDN,务必保证两者均开启。最坏情况下也应当保持混淆和双重TLS之一是打开的。** -CDN转发的场景,和GFW在2020年3月29日进行的对包括github pages等站点进行的HTTPS流量劫持和中间人攻击,是类似的。它们的共同点是,第一层TLS承载的流量明文均可以被第三者窃听(CDN或GFW)。**如果你使用了Websocket模式**,你可以将客户端的```verify```字段填写为false,并指定```cert```字段。在这样的设置下,即使第一层TLS传输的明文遭到审查或攻击,由于第二层TLS的保护(证书校验被强制开启),传输的内容依旧安全。 +CDN转发的场景,和GFW在2020年3月29日进行的对包括github pages等站点进行的HTTPS流量劫持和中间人攻击,是类似的。它们的共同点是,第一层TLS承载的流量明文均可以被第三者窃听(CDN或GFW)。**如果你使用了Websocket模式**,你可以将客户端全局```ssl```选项中```verify```字段填写为false。并指定```websocket```选项的```ssl```选项并且打开证书校验。在这样的设置下,即使第一层TLS传输的明文遭到审查或攻击,由于第二层TLS的保护,传输的内容依旧安全。 Trojan-Go同样具有针对Websocket的主动探测的欺骗能力。当一个合法的Webosocket握手完成,但密码不匹配或内容不合法时,将会尝试与```http://remote_addr:remote_port/path```的HTTP服务器进行Websocket握手,并将连入的Websocket连接代理给它。如果连接失败,Websocket会被直接关闭。 diff --git a/docs/content/basic/full-config.md b/docs/content/basic/full-config.md index 65e18d9b4..811acce54 100644 --- a/docs/content/basic/full-config.md +++ b/docs/content/basic/full-config.md @@ -194,11 +194,13 @@ weight: 30 多路复用是trojan-go的特性。如果服务器和客户端都是trojan-go,可以开启mux多路复用以减少高并发情景下的延迟(只需要客户端开启此选项即可,服务端自动适配)。 +注意,开启多路复用不会提升你的链路速度。相反,它会增加客户端和服务端的CPU和内存消耗,从而可能造成速度下降。多路复用的意义在于降低延迟。 + ```enabled```是否开启多路复用 -```mux_concurrency```指单个TLS隧道可以承载的最大连接数,默认为8。这个数值越大,多连接并发时TLS由于握手产生的延迟就越低,但网络吞吐量可能会有所降低,填入负数或者0表示所有连接只使用一个TLS隧道承载。 +```concurrency```指单个TLS隧道可以承载的最大连接数,默认为8。这个数值越大,多连接并发时TLS由于握手产生的延迟就越低,但网络吞吐量可能会有所降低,填入负数或者0表示所有连接只使用一个TLS隧道承载。 -```mux_idle_timeout```指TLS隧道在空闲多久之后关闭,单位为秒。 +```idle_timeout```指TLS隧道在空闲多久之后关闭,单位为秒。如果数值为负或0,则一旦TLS隧道空闲,则立即关闭 ### ```router```路由选项