Skip to content

Commit

Permalink
update docs
Browse files Browse the repository at this point in the history
  • Loading branch information
p4gefau1t committed May 15, 2020
1 parent 2e9f8ab commit 02e45f7
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 5 deletions.
20 changes: 17 additions & 3 deletions docs/content/advance/websocket.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,29 @@ 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": "",
}
}
```

```hostname```是主机名,一般填写域名。客户端```hostname```是可选的,填写你的域名。如果留空,将会使用```remote_addr```填充,服务端必须填写```hostname```,Trojan-Go可以以此转发Websocket请求,以抵抗针对Websocket的主动检测。

```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隧道保证。

Expand All @@ -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会被直接关闭。

Expand Down
6 changes: 4 additions & 2 deletions docs/content/basic/full-config.md
Original file line number Diff line number Diff line change
Expand Up @@ -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```路由选项

Expand Down

0 comments on commit 02e45f7

Please sign in to comment.