update docs

This commit is contained in:
Page Fault
2020-06-26 08:41:27 +00:00
parent ba892860e1
commit 81e79d98c8
4 changed files with 50 additions and 22 deletions
+14
View File
@@ -188,6 +188,20 @@ client.json
}
```
可以使用更简明易读的YAML语法进行配置,下面是一个客户端的例子,与上面的client.json等价
client.yaml
```yaml
run-type: client
local-addr: 127.0.0.1
local-port: 1080
remote-addr: www.your_awesome_domain_name.com
remote-port: 443
password:
- your_awesome_password
```
<a name="WebSocket"></a>
### WebSocket
@@ -38,10 +38,10 @@ Trojan-Go将所有协议抽象为隧道,每个隧道可能提供客户端,
|shadowsocks | y | n | y | n | y | y |
|websocket | y | n | y | n | y | y |
|freedom | n | n | y | y | n | y |
|socks | y | n | y | y | y | n |
|socks | y | y | y | y | y | n |
|http | y | n | y | n | y | n |
|router | y | y | y | y | n | y |
|adapter | y | n | y | n | y | n |
|adapter | n | n | y | y | y | n |
自定义协议栈的工作方式是,定义树/链上节点并分别它们起名(tag)并添加配置,然后使用tag组成的有向路径,描述这棵树/链。例如,对于一个典型的Trojan-Go服务器,可以如此描述:
@@ -55,7 +55,15 @@ Trojan-Go将所有协议抽象为隧道,每个隧道可能提供客户端,
- router->freedom
对于入站,从根开始描述多条路径,组成一棵**多叉树**(也可以退化为一条链),不满足树性质的图将导致未定义的行为;对于出站,必须描述一条链。**注意,每条路径,必须以不需要下层提供流或包的隧道开始(transport/tproxy/dokodemo等),必须以能向上层提供包和流的隧道终止(trojan/simplesocks/freedom),且必须确认对应隧道是否可作为出站/入站**
对于入站,从根开始描述多条路径,组成一棵**多叉树**(也可以退化为一条链),不满足树性质的图将导致未定义的行为;对于出站,必须描述一条**链**
每条路径必须满足这样的条件:
1. 必须以**不需要下层提供流或包**的隧道开始(transport/adapter/tproxy/dokodemo等)
2. 必须以**能向上层提供包和流**的隧道终止(trojan/simplesocks/freedom等)
3. 出站单链上,隧道必须都可作为出站。入站的所有路径上,隧道必须都可作为入站。
要启用自定义协议栈,将```run_type```指定为custom,此时除```inbound```和```outbound```之外的其他选项将被忽略。
@@ -68,16 +76,19 @@ run-type: custom
inbound:
node:
- protocol: transport
tag: transport
- protocol: adapter
tag: adapter
config:
local-addr: 127.0.0.1
local-port: 1080
- protocol: socks
tag: socks
config:
local-addr: 127.0.0.1
local-port: 1080
path:
-
- transport
- adapter
- socks
outbound:
@@ -103,7 +114,7 @@ outbound:
- 12345678
path:
-
-
- transport
- tls
- trojan
@@ -154,7 +165,7 @@ inbound:
- 87654321
path:
-
-
- transport
- tls
- trojan1
@@ -170,7 +181,6 @@ outbound:
tag: freedom
path:
-
-
- freedom
```
+11 -8
View File
@@ -37,6 +37,7 @@ weight: 30
"buffer_size": 32,
"dns": [],
"disable_http_check": false,
"udp_timeout": 10,
"ssl": {
"verify": true,
"verify_hostname": true,
@@ -176,6 +177,8 @@ weight: 30
```disable_http_check```是否禁用HTTP可用性检查。
```udp_timeout``` UDP会话超时时间。
### ```ssl```选项
```verify```表示客户端(client/nat/forward)是否校验服务端提供的证书合法性,默认开启。出于安全性考虑,这个选项不应该在实际场景中选择false,否则可能遭受中间人攻击。如果使用自签名或者自签发的证书,开启```verify```会导致校验失败。这种情况下,应当保持```verify```开启,然后在```cert```中填写服务端的证书,即可正常连接。
@@ -222,7 +225,7 @@ weight: 30
```concurrency```指单个TLS隧道可以承载的最大连接数,默认为8。这个数值越大,多连接并发时TLS由于握手产生的延迟就越低,但网络吞吐量可能会有所降低,填入负数或者0表示所有连接只使用一个TLS隧道承载。
```idle_timeout```指TLS隧道在空闲多之后关闭,单位为秒。如果数值为负值或0,则一旦TLS隧道空闲,则立即关闭。
```idle_timeout```空闲超时时间。指TLS隧道在空闲多长时间之后关闭,单位为秒。如果数值为负值或0,则一旦TLS隧道空闲,则立即关闭。
### ```router```路由选项
@@ -256,7 +259,7 @@ weight: 30
- "ip_on_demand",域名均解析为IP,在IP列表中匹配。该策略可能导致DNS泄漏或遭到污染。
```geoip```和```geosite```字段指geoip和geosite数据库文件路径,默认使用当前目录的geoip.dat和geosite.dat。
```geoip```和```geosite```字段指geoip和geosite数据库文件路径,默认使用程序所在目录的geoip.dat和geosite.dat。也可以通过指定环境变量TROJAN_GO_LOCATION_ASSET指定工作目录。
### ```websocket```选项
@@ -266,7 +269,7 @@ Websocket传输是trojan-go的特性。在**正常的直接连接代理节点**
```path```指的是Websocket使用的URL路径,必须以斜杠("/")开头,如"/longlongwebsocketpath",并且服务器和客户端必须一致。
```hostname```Websocket握手时使用的主机名,客户端如果留空则使用```remote_addr```填充。如果使用了CDN,这个选项一般填入域名。
```hostname```Websocket握手时使用的主机名,客户端如果留空则使用```remote_addr```填充。如果使用了CDN,这个选项一般填入域名。不正确的```hostname```可能导致CDN无法转发请求。
### ``shadowsocks`` AEAD加密选项
@@ -373,14 +376,14 @@ trojan-go基于gRPC提供了API,以支持服务端和客户端的管理和统
```api_port```gRPC监听的端口。
```ssl``` TLS相关设置
```ssl``` TLS相关设置
- ```enabled```是否使用开启TLS传输
- ```enabled```是否使用TLS传输gRPC流量。
- ```key``````cert```服务器私钥和证书
- ```key``````cert```服务器私钥和证书
- ```verify_client```是否认证客户端证书
- ```verify_client```是否认证客户端证书
- ```client_cert```客户端证书列表
- ```client_cert```如果开启客户端认证,此处填入认证的客户端证书列表
警告:**不要将未开启TLS双向认证的API服务直接暴露在互联网上,否则可能导致各类安全问题。**
+5 -4
View File
@@ -4,18 +4,19 @@ draft: false
weight: 100
---
Trojan-Go基于gRPC实现了API,使用protobuf交换数据。客户端可获取流量和速度信息;服务端可获取各用户流量,速度,在线情况,并动态增删用户和限制速度。可以通过在配置文件中添加```api```选项激活API模块。下面是一个例子
Trojan-Go基于gRPC实现了API,使用protobuf交换数据。客户端可获取流量和速度信息;服务端可获取各用户流量,速度,在线情况,并动态增删用户和限制速度。可以通过在配置文件中添加```api```选项激活API模块。下面是一个例子,各字段含义参见“完整的配置文件”一节。
```json
...
"api": {
"enabled": true,
"api_addr": "0.0.0.0",
"api_port": 10000,
"api_tls": true,
"ssl": {
"enabled": true,
"cert": "api_cert.crt",
"key": "api_key.crt",
"key_password": "",
"key": "api_key.key",
"verify_client": true,
"client_cert": [
"api_client_cert1.crt",
"api_client_cert2.crt"