diff --git a/404.html b/404.html index c973dd7..012ffd1 100644 --- a/404.html +++ b/404.html @@ -89,6 +89,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/advance/aead/index.html b/advance/aead/index.html index e5a04f2..43c3723 100644 --- a/advance/aead/index.html +++ b/advance/aead/index.html @@ -127,6 +127,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/advance/api/index.html b/advance/api/index.html index 2f61275..362752b 100644 --- a/advance/api/index.html +++ b/advance/api/index.html @@ -30,7 +30,7 @@ - + @@ -115,7 +115,7 @@
  • 添加一个用户信息

    -
    ./trojan-go -api-addr 127.0.0.1:10000 -api list -add-profile -target-password password
    +
    ./trojan-go -api-addr 127.0.0.1:10000 -api set -add-profile -target-password password
     
  • 删除一个用户信息

    @@ -127,7 +127,7 @@ -ip-limit 3 \ -upload-speed-limit 5242880 \ -download-speed-limit 5242880 -

    这个命令将密码为password的用户上传和下载速度限制为5MiB/s,同时连接的IP数量限制为3个,注意这里5242880的单位是字节。如果不填写这些限制或填写0,则维持原状。如果填写负数,则表示不进行限制。

    +

    这个命令将密码为password的用户上传和下载速度限制为5MiB/s,同时连接的IP数量限制为3个,注意这里5242880的单位是字节。如果填写0或者负数,则表示不进行限制。

  • @@ -180,6 +180,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/advance/customize-protocol-stack/index.html b/advance/customize-protocol-stack/index.html index c482d52..60b3171 100644 --- a/advance/customize-protocol-stack/index.html +++ b/advance/customize-protocol-stack/index.html @@ -400,6 +400,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/advance/forward/index.html b/advance/forward/index.html index bec77a5..0fc7b97 100644 --- a/advance/forward/index.html +++ b/advance/forward/index.html @@ -144,6 +144,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/advance/index.html b/advance/index.html index 55e9f8a..6395439 100644 --- a/advance/index.html +++ b/advance/index.html @@ -94,6 +94,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/advance/mux/index.html b/advance/mux/index.html index b25438d..e417c55 100644 --- a/advance/mux/index.html +++ b/advance/mux/index.html @@ -121,6 +121,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/advance/nat/index.html b/advance/nat/index.html index b3b76a8..f36b5a2 100644 --- a/advance/nat/index.html +++ b/advance/nat/index.html @@ -82,7 +82,7 @@ iptables -t mangle -A PREROUTING -p udp -i $INTERFACE -j TROJAN_GO # 添加路由,打上标记的包重新进入本地回环 ip route add local default dev lo table 100 ip rule add fwmark 1 lookup 100 -

    配置完成后以root权限启动Trojan-Go客户端:

    +

    配置完成后以root权限启动Trojan-Go客户端:

    sudo trojan-go
     
    @@ -134,6 +134,7 @@ ip rule add fwmark 1 lookup SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/advance/nginx-relay/index.html b/advance/nginx-relay/index.html index 01eea04..3bbff22 100644 --- a/advance/nginx-relay/index.html +++ b/advance/nginx-relay/index.html @@ -179,6 +179,7 @@ Trojan 的配置和通常配置方法无异,这里还是提供一份例子。
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/advance/plugin/index.html b/advance/plugin/index.html index 387844c..c2a0919 100644 --- a/advance/plugin/index.html +++ b/advance/plugin/index.html @@ -129,6 +129,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/advance/router/index.html b/advance/router/index.html index 0fc5db9..22548b1 100644 --- a/advance/router/index.html +++ b/advance/router/index.html @@ -159,6 +159,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/advance/websocket/index.html b/advance/websocket/index.html index 4522f06..c719e01 100644 --- a/advance/websocket/index.html +++ b/advance/websocket/index.html @@ -30,7 +30,7 @@ - + @@ -54,15 +54,15 @@

    注意,Trojan不支持这个特性

    Trojan-Go支持使用TLS+Websocket承载Trojan协议,使得利用CDN进行流量中转成为可能。

    Trojan协议本身不带加密,安全性依赖外层的TLS。但流量一旦经过CDN,TLS对CDN是透明的。其服务提供者可以对TLS的明文内容进行审查。如果你使用的是不可信任的CDN(任何在中国大陆注册备案的CDN服务均应被视为不可信任),请务必开启Shadowsocks AEAD对Webosocket流量进行加密,以避免遭到识别和审查。

    -

    服务器和客户端配置文件中同时添加websocket选项,并将其enabled字段设置为true,并填写path字段和hostname字段即可启用Websocket支持。下面是一个完整的Websocket选项:

    +

    服务器和客户端配置文件中同时添加websocket选项,并将其enabled字段设置为true,并填写path字段和host字段即可启用Websocket支持。下面是一个完整的Websocket选项:

    "websocket": {
         "enabled": true,
    -    "path": "/imaurlpath",
    -    "hostname": "www.your_awesome_domain_name.com"
    +    "path": "/your-websocket-path",
    +    "host": "example.com"
     }
    -

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

    +

    host是主机名,一般填写域名。客户端host是可选的,填写你的域名。如果留空,将会使用remote_addr填充。

    path指的是websocket所在的URL路径,必须以斜杠("/")开始。路径并无特别要求,满足URL基本格式即可,但要保证客户端和服务端的path一致。path应当选择较长的字符串,以避免遭到GFW直接的主动探测。

    -

    客户端的hostname将发送给CDN服务器,必须有效;服务端和客户端path必须一致,否则Websocket握手无法进行。

    +

    客户端的host将包含在Websocket的握手HTTP请求中,发送给CDN服务器,必须有效;服务端和客户端path必须一致,否则Websocket握手无法进行。

    下面是一个客户端配置文件的例子

    {
         "run_type": "client",
    @@ -76,7 +76,7 @@
         "websocket": {
             "enabled": true,
             "path": "/your-websocket-path",
    -        "hostname": "www.your_awesome_domain_name.com"
    +        "host": "example.com"
         },
         "shadowsocks": {
             "enabled": true,
    @@ -133,6 +133,7 @@
     
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/basic/config/index.html b/basic/config/index.html index 025b308..0c62360 100644 --- a/basic/config/index.html +++ b/basic/config/index.html @@ -30,7 +30,7 @@ - + @@ -64,7 +64,7 @@

    Trojan-Go,可以从release页面下载

  • -

    证书密钥对,可以从letsencrpyt等机构免费申请签发

    +

    证书和密钥,可以从letsencrpyt等机构免费申请签发

  • 服务端配置

    @@ -84,7 +84,6 @@ "ssl": { "cert": "server.crt", "key": "server.key", - "sni": "your-domain-name.com", "fallback_port": 1234 } } @@ -98,7 +97,7 @@

    如果TLS握手成功,并且被确认是Trojan协议头部,并且其中的密码正确,那么服务器将解析来自客户端的请求并进行代理,否则和上一步的处理方法相同。

  • -

    如果TLS握手失败,说明对方使用的不是TLS协议进行连接。此时Trojan-Go将这个TCP连接代理到本地127.0.0.1:1234上运行的HTTPS服务,返回一个展示400 Bad Reqeust的HTTP页面。fallback_port是一个可选选项,如果没有填写,Trojan-Go会直接终止连接。虽然是可选的,但是还是强烈建议填写。

    +

    如果TLS握手失败,说明对方使用的不是TLS协议进行连接。此时Trojan-Go将这个TCP连接代理到本地127.0.0.1:1234上运行的HTTPS服务(或者HTTP服务),返回一个展示400 Bad Reqeust的HTTP页面。fallback_port是一个可选选项,如果没有填写,Trojan-Go会直接终止连接。虽然是可选的,但是还是强烈建议填写。

  • 你可以通过使用浏览器访问你的域名https://your-domain-name.com来验证。如果工作正常,你的浏览器会显示一个正常的HTTPS保护的Web页面,页面内容与服务器本机80端口上的页面一致。你还可以使用http://your-domain-name.com:443验证fallback_port工作是否正常。

    @@ -177,6 +176,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/basic/full-config/index.html b/basic/full-config/index.html index 680ad34..74e3d6c 100644 --- a/basic/full-config/index.html +++ b/basic/full-config/index.html @@ -30,7 +30,7 @@ - + @@ -83,7 +83,7 @@ "log_file": "", "password": [], "disable_http_check": false, - "udp_timeout": 10, + "udp_timeout": 60, "ssl": { "verify": true, "verify_hostname": true, @@ -127,7 +127,7 @@ "websocket": { "enabled": false, "path": "", - "hostname": "" + "host": "" }, "shadowsocks": { "enabled": false, @@ -158,12 +158,6 @@ "password": "", "check_rate": 60 }, - "redis": { - "enabled": false, - "server_addr": "localhost", - "server_port": 6379, - "password": "" - }, "api": { "enabled": false, "api_addr": "", @@ -211,7 +205,7 @@

    verify表示客户端(client/nat/forward)是否校验服务端提供的证书合法性,默认开启。出于安全性考虑,这个选项不应该在实际场景中选择false,否则可能遭受中间人攻击。如果使用自签名或者自签发的证书,开启verify会导致校验失败。这种情况下,应当保持verify开启,然后在cert中填写服务端的证书,即可正常连接。

    verify_hostname表示服务端是否校验客户端提供的SNI与服务端设置的一致性。如果服务端SNI字段留空,认证将被强制关闭。

    服务端必须填入certkey,对应服务器的证书和私钥文件,请注意证书是否有效/过期。如果使用权威CA签发的证书,客户端(client/nat/forward)可以不填写cert。如果使用自签名或者自签发的证书,应当在的cert处填入服务器证书文件,否则可能导致校验失败。

    -

    sni指的是TLS客户端请求中的服务器名字段,一般和证书的Common Name相同。如果你使用let’sencrypt等机构签发的证书,这里填入你的域名。如果这一项未填,将使用remote_addr填充。你应当指定一个有效的SNI(和远端证书CN一致),否则客户端可能无法验证远端证书有效性从而无法连接。

    +

    sni指的是TLS客户端请求中的服务器名字段,一般和证书的Common Name相同。如果你使用let’sencrypt等机构签发的证书,这里填入你的域名。对于客户端,如果这一项未填,将使用remote_addr填充。你应当指定一个有效的SNI(和远端证书CN一致),否则客户端可能无法验证远端证书有效性从而无法连接;对于服务端,若此项不填,则使用证书中Common Name作为SNI校验依据,支持通配符如*.example.com。

    fingerprint用于指定客户端TLS Client Hello指纹伪造类型,以抵抗GFW对于TLS Client Hello指纹的特征识别和阻断。trojan-go使用utls进行指纹伪造,默认伪造Firefox的指纹。合法的值有

    • @@ -286,9 +280,9 @@

      Websocket传输是trojan-go的特性。在正常的直接连接代理节点的情况下,开启这个选项不会改善你的链路速度(甚至有可能下降),也不会提升你的连接安全性。你只应该在需要利用CDN进行中转,或利用nginx等服务器根据路径分发的情况下,使用websocket。

      enabled表示是否启用Websocket承载流量,服务端开启后同时支持一般Trojan协议和基于websocket的Trojan协议,客户端开启后将只使用websocket承载所有Trojan协议流量。

      path指的是Websocket使用的URL路径,必须以斜杠("/")开头,如”/longlongwebsocketpath”,并且服务器和客户端必须一致。

      -

      hostnameWebsocket握手时使用的主机名,客户端如果留空则使用remote_addr填充。如果使用了CDN,这个选项一般填入域名。不正确的hostname可能导致CDN无法转发请求。

      +

      hostWebsocket握手时,HTTP请求中使用的主机名。客户端如果留空则使用remote_addr填充。如果使用了CDN,这个选项一般填入域名。不正确的host可能导致CDN无法转发请求。

      shadowsocks AEAD加密选项

      -

      此选项用于替代弃用的混淆加密和双重TLS。如果此选项被设置启用,Trojan协议层下将插入一层Shadowsocks AEAD加密层。也即(已经加密的)TLS隧道内,所有的Trojan协议将再使用AEAD加密。注意,此选项和Websocket是否开启无关。无论Websocket是否开启,所有Trojan流量都会被再进行一次加密。

      +

      此选项用于替代弃用的混淆加密和双重TLS。如果此选项被设置启用,Trojan协议层下将插入一层Shadowsocks AEAD加密层。也即(已经加密的)TLS隧道内,所有的Trojan协议将再使用AEAD方法进行加密。注意,此选项和Websocket是否开启无关。无论Websocket是否开启,所有Trojan流量都会被再进行一次加密。

      注意,开启这个选项将有可能降低传输性能,你只应该在不信任承载Trojan协议的传输信道的情况下,启用这个选项。例如:

      • @@ -343,11 +337,11 @@

        keep_alive是否启用TCP心跳存活检测。

        prefer_ipv4是否优先使用IPv4地址。

        mysql数据库选项

        -

        trojan-go兼容trojan-gfw的基于mysql的用户管理方式,但更推荐的方式是使用API。

        +

        trojan-go兼容trojan的基于mysql的用户管理方式,但更推荐的方式是使用API。

        enabled表示是否启用mysql数据库进行用户验证。

        check_rate是trojan-go从MySQL获取用户数据并更新缓存的间隔时间,单位为秒。

        其他选项可以顾名思义,不再赘述。

        -

        users表结构和trojan-gfw版本定义一致,下面是一个创建users表的例子。注意这里的password指的是密码经过SHA224散列之后的值(字符串),流量download, upload, quota的单位是字节。你可以通过修改数据库users表中的用户记录的方式,添加和删除用户,或者指定用户的流量配额。trojan-go会根据所有的用户流量配额,自动更新当前有效的用户列表。如果download+upload>quota,trojan-go服务器将拒绝该用户的连接。

        +

        users表结构和trojan版本定义一致,下面是一个创建users表的例子。注意这里的password指的是密码经过SHA224散列之后的值(字符串),流量download, upload, quota的单位是字节。你可以通过修改数据库users表中的用户记录的方式,添加和删除用户,或者指定用户的流量配额。trojan-go会根据所有的用户流量配额,自动更新当前有效的用户列表。如果download+upload>quota,trojan-go服务器将拒绝该用户的连接。

        CREATE TABLE users (
             id INT UNSIGNED NOT NULL AUTO_INCREMENT,
             username VARCHAR(64) NOT NULL,
        @@ -435,6 +429,7 @@
         
      • SimpleSocks协议
      • API开发
      • 可插拔传输层插件开发
      • +
      • URL方案(草案)
    • diff --git a/basic/index.html b/basic/index.html index a5cd852..5ef43fb 100644 --- a/basic/index.html +++ b/basic/index.html @@ -94,6 +94,7 @@
    • SimpleSocks协议
    • API开发
    • 可插拔传输层插件开发
    • +
    • URL方案(草案)
    diff --git a/basic/trojan/index.html b/basic/trojan/index.html index 22af7f8..d181c5f 100644 --- a/basic/trojan/index.html +++ b/basic/trojan/index.html @@ -125,6 +125,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/categories/index.html b/categories/index.html index d2dca8d..261d15b 100644 --- a/categories/index.html +++ b/categories/index.html @@ -92,6 +92,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/developer/api/index.html b/developer/api/index.html index a75e642..535377d 100644 --- a/developer/api/index.html +++ b/developer/api/index.html @@ -119,6 +119,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/developer/build/index.html b/developer/build/index.html index 54f41e5..6ca64dc 100644 --- a/developer/build/index.html +++ b/developer/build/index.html @@ -117,6 +117,7 @@ go build -tags "server mysql" SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/developer/index.html b/developer/index.html index 98c35a3..7d7e59a 100644 --- a/developer/index.html +++ b/developer/index.html @@ -94,6 +94,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/developer/index.xml b/developer/index.xml index 9e567f1..5c33827 100644 --- a/developer/index.xml +++ b/developer/index.xml @@ -82,5 +82,14 @@ Trojan-Go鼓励开发传输层插件,以丰富协议类型,增加与GFW对抗的战略纵深。 传输层插件的作用,是替代tansport隧道的TLS进行传 + + URL方案(草案) + https://p4gefau1t.github.io/trojan-go/developer/url/ + Mon, 01 Jan 0001 00:00:00 +0000 + + https://p4gefau1t.github.io/trojan-go/developer/url/ + 概述 感谢 @DuckSoft @StudentMain @phlinhng 对 Trojan-Go URL 方案的讨论和贡献。目前 URL 方案为草案,需要更多的实践和讨论。 Trojan-Go客户端可以接受URL,以定位服务器资源。原则 + + \ No newline at end of file diff --git a/developer/mux/index.html b/developer/mux/index.html index f151aed..6df1eeb 100644 --- a/developer/mux/index.html +++ b/developer/mux/index.html @@ -133,6 +133,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/developer/overview/index.html b/developer/overview/index.html index 99a9e03..1d59bed 100644 --- a/developer/overview/index.html +++ b/developer/overview/index.html @@ -265,6 +265,7 @@
  • SimpleSocks协议
  • API开发
  • 可插拔传输层插件开发
  • +
  • URL方案(草案)
  • diff --git a/developer/plugin/index.html b/developer/plugin/index.html index 8c50d59..ffda33b 100644 --- a/developer/plugin/index.html +++ b/developer/plugin/index.html @@ -87,7 +87,7 @@