mirror of
https://github.com/p4gefau1t/trojan-go.git
synced 2024-04-21 12:21:34 +00:00
deploy: fccba27a47
This commit is contained in:
@@ -30,7 +30,7 @@
|
||||
<meta itemprop="name" content="正确配置Trojan-Go">
|
||||
<meta itemprop="description" content="下面将介绍如何正确配置Trojan-Go以完全隐藏你的代理节点特征。 在开始之前,你需要 一个服务器,且未被GFW封锁 一个域名,可以使用免费的域">
|
||||
|
||||
<meta itemprop="wordCount" content="2021">
|
||||
<meta itemprop="wordCount" content="2029">
|
||||
<meta itemprop="image" content="https://p4gefau1t.github.io/trojan-go/images/og-image.png"/>
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
<p>Trojan-Go,可以从release页面下载</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>证书密钥对,可以从letsencrpyt等机构免费申请签发</p>
|
||||
<p>证书和密钥,可以从letsencrpyt等机构免费申请签发</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h3 id="服务端配置">服务端配置</h3>
|
||||
@@ -84,7 +84,6 @@
|
||||
<span style="color:#f92672">"ssl"</span>: {
|
||||
<span style="color:#f92672">"cert"</span>: <span style="color:#e6db74">"server.crt"</span>,
|
||||
<span style="color:#f92672">"key"</span>: <span style="color:#e6db74">"server.key"</span>,
|
||||
<span style="color:#f92672">"sni"</span>: <span style="color:#e6db74">"your-domain-name.com"</span>,
|
||||
<span style="color:#f92672">"fallback_port"</span>: <span style="color:#ae81ff">1234</span>
|
||||
}
|
||||
}
|
||||
@@ -98,7 +97,7 @@
|
||||
<p>如果TLS握手成功,并且被确认是Trojan协议头部,并且其中的密码正确,那么服务器将解析来自客户端的请求并进行代理,否则和上一步的处理方法相同。</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>如果TLS握手失败,说明对方使用的不是TLS协议进行连接。此时Trojan-Go将这个TCP连接代理到本地127.0.0.1:1234上运行的HTTPS服务,返回一个展示400 Bad Reqeust的HTTP页面。<code>fallback_port</code>是一个可选选项,如果没有填写,Trojan-Go会直接终止连接。虽然是可选的,但是还是强烈建议填写。</p>
|
||||
<p>如果TLS握手失败,说明对方使用的不是TLS协议进行连接。此时Trojan-Go将这个TCP连接代理到本地127.0.0.1:1234上运行的HTTPS服务(或者HTTP服务),返回一个展示400 Bad Reqeust的HTTP页面。<code>fallback_port</code>是一个可选选项,如果没有填写,Trojan-Go会直接终止连接。虽然是可选的,但是还是强烈建议填写。</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>你可以通过使用浏览器访问你的域名<code>https://your-domain-name.com</code>来验证。如果工作正常,你的浏览器会显示一个正常的HTTPS保护的Web页面,页面内容与服务器本机80端口上的页面一致。你还可以使用<code>http://your-domain-name.com:443</code>验证<code>fallback_port</code>工作是否正常。</p>
|
||||
@@ -177,6 +176,7 @@
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/simplesocks/">SimpleSocks协议</a></li>
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/api/">API开发</a></li>
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/plugin/">可插拔传输层插件开发</a></li>
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/url/">URL方案(草案)</a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<meta itemprop="name" content="完整的配置文件">
|
||||
<meta itemprop="description" content="下面是一个完整的配置文件,其中的必填选项有 run_type local_addr local_port remote_addr remote_port 对于服务器server,key和cert为必填。 对于客户端client,反向代理隧道fo">
|
||||
|
||||
<meta itemprop="wordCount" content="6706">
|
||||
<meta itemprop="wordCount" content="6755">
|
||||
<meta itemprop="image" content="https://p4gefau1t.github.io/trojan-go/images/og-image.png"/>
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
<span style="color:#f92672">"log_file"</span>: <span style="color:#e6db74">""</span>,
|
||||
<span style="color:#f92672">"password"</span>: [],
|
||||
<span style="color:#f92672">"disable_http_check"</span>: <span style="color:#66d9ef">false</span>,
|
||||
<span style="color:#f92672">"udp_timeout"</span>: <span style="color:#ae81ff">10</span>,
|
||||
<span style="color:#f92672">"udp_timeout"</span>: <span style="color:#ae81ff">60</span>,
|
||||
<span style="color:#f92672">"ssl"</span>: {
|
||||
<span style="color:#f92672">"verify"</span>: <span style="color:#66d9ef">true</span>,
|
||||
<span style="color:#f92672">"verify_hostname"</span>: <span style="color:#66d9ef">true</span>,
|
||||
@@ -127,7 +127,7 @@
|
||||
<span style="color:#f92672">"websocket"</span>: {
|
||||
<span style="color:#f92672">"enabled"</span>: <span style="color:#66d9ef">false</span>,
|
||||
<span style="color:#f92672">"path"</span>: <span style="color:#e6db74">""</span>,
|
||||
<span style="color:#f92672">"hostname"</span>: <span style="color:#e6db74">""</span>
|
||||
<span style="color:#f92672">"host"</span>: <span style="color:#e6db74">""</span>
|
||||
},
|
||||
<span style="color:#f92672">"shadowsocks"</span>: {
|
||||
<span style="color:#f92672">"enabled"</span>: <span style="color:#66d9ef">false</span>,
|
||||
@@ -158,12 +158,6 @@
|
||||
<span style="color:#f92672">"password"</span>: <span style="color:#e6db74">""</span>,
|
||||
<span style="color:#f92672">"check_rate"</span>: <span style="color:#ae81ff">60</span>
|
||||
},
|
||||
<span style="color:#f92672">"redis"</span>: {
|
||||
<span style="color:#f92672">"enabled"</span>: <span style="color:#66d9ef">false</span>,
|
||||
<span style="color:#f92672">"server_addr"</span>: <span style="color:#e6db74">"localhost"</span>,
|
||||
<span style="color:#f92672">"server_port"</span>: <span style="color:#ae81ff">6379</span>,
|
||||
<span style="color:#f92672">"password"</span>: <span style="color:#e6db74">""</span>
|
||||
},
|
||||
<span style="color:#f92672">"api"</span>: {
|
||||
<span style="color:#f92672">"enabled"</span>: <span style="color:#66d9ef">false</span>,
|
||||
<span style="color:#f92672">"api_addr"</span>: <span style="color:#e6db74">""</span>,
|
||||
@@ -211,7 +205,7 @@
|
||||
<p><code>verify</code>表示客户端(client/nat/forward)是否校验服务端提供的证书合法性,默认开启。出于安全性考虑,这个选项不应该在实际场景中选择false,否则可能遭受中间人攻击。如果使用自签名或者自签发的证书,开启<code>verify</code>会导致校验失败。这种情况下,应当保持<code>verify</code>开启,然后在<code>cert</code>中填写服务端的证书,即可正常连接。</p>
|
||||
<p><code>verify_hostname</code>表示服务端是否校验客户端提供的SNI与服务端设置的一致性。如果服务端SNI字段留空,认证将被强制关闭。</p>
|
||||
<p>服务端必须填入<code>cert</code>和<code>key</code>,对应服务器的证书和私钥文件,请注意证书是否有效/过期。如果使用权威CA签发的证书,客户端(client/nat/forward)可以不填写<code>cert</code>。如果使用自签名或者自签发的证书,应当在的<code>cert</code>处填入服务器证书文件,否则可能导致校验失败。</p>
|
||||
<p><code>sni</code>指的是TLS客户端请求中的服务器名字段,一般和证书的Common Name相同。如果你使用let’sencrypt等机构签发的证书,这里填入你的域名。如果这一项未填,将使用<code>remote_addr</code>填充。你应当指定一个有效的SNI(和远端证书CN一致),否则客户端可能无法验证远端证书有效性从而无法连接。</p>
|
||||
<p><code>sni</code>指的是TLS客户端请求中的服务器名字段,一般和证书的Common Name相同。如果你使用let’sencrypt等机构签发的证书,这里填入你的域名。对于客户端,如果这一项未填,将使用<code>remote_addr</code>填充。你应当指定一个有效的SNI(和远端证书CN一致),否则客户端可能无法验证远端证书有效性从而无法连接;对于服务端,若此项不填,则使用证书中Common Name作为SNI校验依据,支持通配符如*.example.com。</p>
|
||||
<p><code>fingerprint</code>用于指定客户端TLS Client Hello指纹伪造类型,以抵抗GFW对于TLS Client Hello指纹的特征识别和阻断。trojan-go使用<a href="https://github.com/refraction-networking/utls">utls</a>进行指纹伪造,默认伪造Firefox的指纹。合法的值有</p>
|
||||
<ul>
|
||||
<li>
|
||||
@@ -286,9 +280,9 @@
|
||||
<p>Websocket传输是trojan-go的特性。在<strong>正常的直接连接代理节点</strong>的情况下,开启这个选项不会改善你的链路速度(甚至有可能下降),也不会提升你的连接安全性。你只应该在需要利用CDN进行中转,或利用nginx等服务器根据路径分发的情况下,使用websocket。</p>
|
||||
<p><code>enabled</code>表示是否启用Websocket承载流量,服务端开启后同时支持一般Trojan协议和基于websocket的Trojan协议,客户端开启后将只使用websocket承载所有Trojan协议流量。</p>
|
||||
<p><code>path</code>指的是Websocket使用的URL路径,必须以斜杠("/")开头,如”/longlongwebsocketpath”,并且服务器和客户端必须一致。</p>
|
||||
<p><code>hostname</code>Websocket握手时使用的主机名,客户端如果留空则使用<code>remote_addr</code>填充。如果使用了CDN,这个选项一般填入域名。不正确的<code>hostname</code>可能导致CDN无法转发请求。</p>
|
||||
<p><code>host</code>Websocket握手时,HTTP请求中使用的主机名。客户端如果留空则使用<code>remote_addr</code>填充。如果使用了CDN,这个选项一般填入域名。不正确的<code>host</code>可能导致CDN无法转发请求。</p>
|
||||
<h3 id="shadowsocks-aead加密选项"><code>shadowsocks</code> AEAD加密选项</h3>
|
||||
<p>此选项用于替代弃用的混淆加密和双重TLS。如果此选项被设置启用,Trojan协议层下将插入一层Shadowsocks AEAD加密层。也即(已经加密的)TLS隧道内,所有的Trojan协议将再使用AEAD加密。注意,此选项和Websocket是否开启无关。无论Websocket是否开启,所有Trojan流量都会被再进行一次加密。</p>
|
||||
<p>此选项用于替代弃用的混淆加密和双重TLS。如果此选项被设置启用,Trojan协议层下将插入一层Shadowsocks AEAD加密层。也即(已经加密的)TLS隧道内,所有的Trojan协议将再使用AEAD方法进行加密。注意,此选项和Websocket是否开启无关。无论Websocket是否开启,所有Trojan流量都会被再进行一次加密。</p>
|
||||
<p>注意,开启这个选项将有可能降低传输性能,你只应该在不信任承载Trojan协议的传输信道的情况下,启用这个选项。例如:</p>
|
||||
<ul>
|
||||
<li>
|
||||
@@ -343,11 +337,11 @@
|
||||
<p><code>keep_alive</code>是否启用TCP心跳存活检测。</p>
|
||||
<p><code>prefer_ipv4</code>是否优先使用IPv4地址。</p>
|
||||
<h3 id="mysql数据库选项"><code>mysql</code>数据库选项</h3>
|
||||
<p>trojan-go兼容trojan-gfw的基于mysql的用户管理方式,但更推荐的方式是使用API。</p>
|
||||
<p>trojan-go兼容trojan的基于mysql的用户管理方式,但更推荐的方式是使用API。</p>
|
||||
<p><code>enabled</code>表示是否启用mysql数据库进行用户验证。</p>
|
||||
<p><code>check_rate</code>是trojan-go从MySQL获取用户数据并更新缓存的间隔时间,单位为秒。</p>
|
||||
<p>其他选项可以顾名思义,不再赘述。</p>
|
||||
<p>users表结构和trojan-gfw版本定义一致,下面是一个创建users表的例子。注意这里的password指的是密码经过SHA224散列之后的值(字符串),流量download, upload, quota的单位是字节。你可以通过修改数据库users表中的用户记录的方式,添加和删除用户,或者指定用户的流量配额。trojan-go会根据所有的用户流量配额,自动更新当前有效的用户列表。如果download+upload>quota,trojan-go服务器将拒绝该用户的连接。</p>
|
||||
<p>users表结构和trojan版本定义一致,下面是一个创建users表的例子。注意这里的password指的是密码经过SHA224散列之后的值(字符串),流量download, upload, quota的单位是字节。你可以通过修改数据库users表中的用户记录的方式,添加和删除用户,或者指定用户的流量配额。trojan-go会根据所有的用户流量配额,自动更新当前有效的用户列表。如果download+upload>quota,trojan-go服务器将拒绝该用户的连接。</p>
|
||||
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql"><span style="color:#66d9ef">CREATE</span> <span style="color:#66d9ef">TABLE</span> <span style="color:#a6e22e">users</span> (
|
||||
id <span style="color:#66d9ef">INT</span> <span style="color:#66d9ef">UNSIGNED</span> <span style="color:#66d9ef">NOT</span> <span style="color:#66d9ef">NULL</span> <span style="color:#66d9ef">AUTO_INCREMENT</span>,
|
||||
username <span style="color:#66d9ef">VARCHAR</span>(<span style="color:#ae81ff">64</span>) <span style="color:#66d9ef">NOT</span> <span style="color:#66d9ef">NULL</span>,
|
||||
@@ -435,6 +429,7 @@
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/simplesocks/">SimpleSocks协议</a></li>
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/api/">API开发</a></li>
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/plugin/">可插拔传输层插件开发</a></li>
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/url/">URL方案(草案)</a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/simplesocks/">SimpleSocks协议</a></li>
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/api/">API开发</a></li>
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/plugin/">可插拔传输层插件开发</a></li>
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/url/">URL方案(草案)</a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
@@ -125,6 +125,7 @@
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/simplesocks/">SimpleSocks协议</a></li>
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/api/">API开发</a></li>
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/plugin/">可插拔传输层插件开发</a></li>
|
||||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/url/">URL方案(草案)</a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
Reference in New Issue
Block a user