mirror of
https://github.com/p4gefau1t/trojan-go.git
synced 2024-04-21 12:21:34 +00:00
update docs
This commit is contained in:
@@ -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
|
||||
|
||||
```
|
||||
|
||||
@@ -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服务直接暴露在互联网上,否则可能导致各类安全问题。**
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user