mirror of
https://github.com/p4gefau1t/trojan-go.git
synced 2024-04-21 12:21:34 +00:00
276 lines
19 KiB
HTML
276 lines
19 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-us">
|
||
<head><meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||
<title>完整的配置文件 - Trojan-Go</title>
|
||
<meta name="description" content="An unidentifiable mechanism that helps you bypass GFW. ">
|
||
<meta name="generator" content="Hugo 0.69.0" />
|
||
<link href="https://p4gefau1t.github.io/trojan-goindex.xml" rel="alternate" type="application/rss+xml">
|
||
<link rel="canonical" href="https://p4gefau1t.github.io/trojan-go/basic/fullconfig/">
|
||
<link rel="stylesheet" href="https://p4gefau1t.github.io/trojan-go/css/theme.min.css">
|
||
<script src="https://use.fontawesome.com/releases/v5.0.6/js/all.js"></script>
|
||
<link rel="stylesheet" href="https://p4gefau1t.github.io/trojan-go/css/chroma.min.css">
|
||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/jquery.easing@1.4.1/jquery.easing.min.js"></script>
|
||
<script src="https://p4gefau1t.github.io/trojan-go/js/bundle.js"></script><style>
|
||
:root {}
|
||
</style>
|
||
<meta property="og:title" content="完整的配置文件" />
|
||
<meta property="og:description" content="下面是一个完整的配置文件,其中的必填选项有 run_type local_addr local_port remote_addr remote_port 对于服务器server,key和cert为必填。 对于客户端client,反向代理隧道fo" />
|
||
<meta property="og:type" content="article" />
|
||
<meta property="og:url" content="https://p4gefau1t.github.io/trojan-go/basic/fullconfig/" />
|
||
<meta property="og:image" content="https://p4gefau1t.github.io/trojan-go/images/og-image.png"/>
|
||
<meta property="og:site_name" content="Hugo Techdoc Theme" />
|
||
<meta name="twitter:card" content="summary_large_image"/>
|
||
<meta name="twitter:image" content="https://p4gefau1t.github.io/trojan-go/images/og-image.png"/>
|
||
|
||
<meta name="twitter:title" content="完整的配置文件"/>
|
||
<meta name="twitter:description" content="下面是一个完整的配置文件,其中的必填选项有 run_type local_addr local_port remote_addr remote_port 对于服务器server,key和cert为必填。 对于客户端client,反向代理隧道fo"/>
|
||
<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="3897">
|
||
<meta itemprop="image" content="https://p4gefau1t.github.io/trojan-go/images/og-image.png"/>
|
||
|
||
|
||
|
||
<meta itemprop="keywords" content="" /></head>
|
||
<body><div class="container"><header>
|
||
<h1>Trojan-Go</h1>
|
||
|
||
<span class="version">Version 0.2.0</span>
|
||
<a href="https://github.com/p4gefau1t/trojan-go" class="github"><i class="fab fa-github"></i></a>
|
||
<p class="description">An unidentifiable mechanism that helps you bypass GFW. </p>
|
||
|
||
</header>
|
||
<div class="global-menu">
|
||
<nav>
|
||
<ul>
|
||
<li><a href="/trojan-go/">Home</a></li>
|
||
<li><a href="https://github.com/p4gefau1t">GitHub</a></li>
|
||
<li><a href="https://twitter.com/p4gefau1t">Twitter</a></li></ul>
|
||
</nav>
|
||
</div>
|
||
<div class="content-container">
|
||
<main><h1>完整的配置文件</h1>
|
||
<p>下面是一个完整的配置文件,其中的必填选项有</p>
|
||
<ul>
|
||
<li>
|
||
<p><code>run_type</code></p>
|
||
</li>
|
||
<li>
|
||
<p><code>local_addr</code></p>
|
||
</li>
|
||
<li>
|
||
<p><code>local_port</code></p>
|
||
</li>
|
||
<li>
|
||
<p><code>remote_addr</code></p>
|
||
</li>
|
||
<li>
|
||
<p><code>remote_port</code></p>
|
||
</li>
|
||
</ul>
|
||
<p>对于服务器server,<code>key</code>和<code>cert</code>为必填。</p>
|
||
<p>对于客户端client,反向代理隧道forward,以及透明代理nat,<code>password</code>必填</p>
|
||
<p>其余未填的选项,用下面给出的值进行填充。</p>
|
||
<pre><code>{
|
||
"run_type": "client/server/nat",
|
||
"local_addr": "127.0.0.1",
|
||
"local_port": your_port1,
|
||
"remote_addr": "example.com",
|
||
"remote_port": your_port2,
|
||
"log_level": 1,
|
||
"password": [
|
||
"password1",
|
||
"password2"
|
||
],
|
||
"ssl": {
|
||
"verify": true,
|
||
"verify_hostname": true,
|
||
"cert": "your_crt_file(optional for a client/forward/nat)",
|
||
"key": "your_key_file(optional for a client/forward/nat)",
|
||
"key_password": "",
|
||
"cipher": "",
|
||
"cipher_tls13": "",
|
||
"prefer_server_cipher": false,
|
||
"sni": "",
|
||
"session_ticket": true,
|
||
"reuse_session": true,
|
||
"plain_http_response": "",
|
||
"fallback_port":0
|
||
},
|
||
"tcp": {
|
||
"no_delay": false,
|
||
"reuse_port": false,
|
||
"prefer_ipv4": false,
|
||
"fast_open": false
|
||
},
|
||
"mux": {
|
||
"enabled": false,
|
||
"concurrency": 8,
|
||
"idle_timeout": 60
|
||
},
|
||
"router": {
|
||
"enabled": false,
|
||
"bypass": [],
|
||
"proxy": [],
|
||
"block": [],
|
||
"route_by_ip": false,
|
||
"route_by_ip_on_nonmatch": false,
|
||
"default_policy": "proxy"
|
||
},
|
||
"websocket": {
|
||
"enabled": false,
|
||
"path": "",
|
||
"hostname": "",
|
||
"password": "",
|
||
"double_tls": true
|
||
},
|
||
"mysql": {
|
||
"enabled": false,
|
||
"server_addr": "",
|
||
"server_port": 0,
|
||
"database": "",
|
||
"username": "",
|
||
"password": "",
|
||
"check_rate": 60
|
||
}
|
||
}
|
||
</code></pre><h2 id="说明">说明</h2>
|
||
<h3 id="一般选项">一般选项</h3>
|
||
<p>对于client/nat/forward,<code>remote_xxxx</code>应当填写你的trojan服务器地址和端口号,<code>local_xxxx</code>对应本地开放的socks5/http代理地址(自动适配)</p>
|
||
<p>对于server,<code>local_xxxx</code>对应trojan服务器监听地址(强烈建议使用443端口),<code>remote_xxxx</code>填写发现非trojan流量时代理到的Web服务地址,通常填写本地80端口。</p>
|
||
<p><code>log_level</code>是日志等级,等级越高,输出的信息越少,0输出所有日志,1输出Info及以上日志,2输出Warning及以上日志,3输出Error及以上信息,4输出Fatal及以上信息,5完全不输出日志。</p>
|
||
<p><code>password</code>可以填入多个密码。除了使用配置文件配置密码之外,Trojan-Go还支持使用mysql配置密码,参见下文。客户端的密码,只有与服务端配置文件中或者在数据库中的密码记录一致,才能通过服务端的校验,正常使用代理服务。</p>
|
||
<h3 id="ssl选项"><code>ssl</code>选项</h3>
|
||
<p><code>verify</code>表示客户端(client/nat/forward)是否校验服务端提供的证书合法性,默认开启。出于安全性考虑,这个选项不应该在实际场景中选择false,否则可能遭受中间人攻击。如果使用自签名或者自签发的证书,开启<code>verify</code>会导致校验失败。这种情况下,应当保持<code>verify</code>开启,然后在<code>cert</code>中填写服务端的证书,即可正常连接。</p>
|
||
<p><code>verify_hostname</code>表示客户端(client/nat/forward)是否校验服务端提供的证书的Common Name和本地提供的SNI字段的一致性。</p>
|
||
<p>服务端必须填入<code>cert</code>和<code>key</code>,对应服务器的证书和私钥文件,请注意证书是否有效/过期。如果使用权威CA签发的证书,客户端(client/nat/forward)可以不填写<code>cert</code>。如果使用自签名或者自签发的证书,应当在的<code>cert</code>处填入服务器证书文件,否则可能导致校验失败。</p>
|
||
<p><code>sni</code>指的是证书的Common Name,如果你使用letsencrypt等机构签名的证书,这里填入你的域名。如果这一项未填,将使用<code>remote_addr</code>填充。你应当指定一个有效的SNI(和远端证书CN一致),否则客户端可能无法验证远端证书有效性从而无法连接。</p>
|
||
<p><code>cipher</code>和<code>cipher13</code>指client/server使用的密码学套件。只有在你明确知道自己在做什么的情况下,你才应该去填写cipher/cipher_tls13以修改trojan-go使用的TLS密码学套件。<strong>正常情况下,你应该将其留空或者不填</strong>,trojan-go会根据当前硬件平台以及远端的情况,自动选择最合适的加密算法以提升性能和安全性。如果需要填写,密码学套件名用分号(":")分隔。Golang的TLS库中中弃用了TLS1.2不安全的密码学套件,完全支持TLS1.3。如果你需要较高的安全性,而不担心跨硬件和软件平台的兼容性和性能,你可以强制要求trojan-go只使用TLS1.3密码学套件,设置cipher或者cipher13如下(填写cipher13和cipher是一样的):</p>
|
||
<pre><code>cipher13:"TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384"
|
||
</code></pre><p><code>plain_http_response</code>指定了当TLS握手失败时,明文发送的原始数据(原始TCP数据),这个字段填入该文件路径。推荐使用<code>fallback_port</code>而不是该字段。</p>
|
||
<p><code>fallback_port</code>指TLS握手失败时,Trojan-Go将该连接代理到该端口上。这是Trojan-Go的特性,以便更好地隐蔽Trojan服务器,抵抗GFW的主动检测,使得服务器的443端口在遭遇非TLS协议的探测时,行为与正常服务器完全一致。当服务器接受了一个连接但无法进行TLS握手时,如果<code>fallback_port</code>不为空,则流量将会被代理至remote_addr:fallback_port。例如,你可以在本地使用nginx开启一个https服务,当你的服务器443端口被非TLS协议请求时(比如http请求),trojan-go将代理至本地https服务器,nginx将使用http协议明文返回一个400 Bad Request页面。你可以通过使用浏览器访问http://your_domain_name.com:443进行验证。</p>
|
||
<h3 id="mux多路复用选项"><code>mux</code>多路复用选项</h3>
|
||
<p>多路复用是Trojan-Go的特性。如果服务器和客户端都是Trojan-Go,可以开启mux多路复用以减少高并发情景下的延迟(只需要客户端开启此选项即可,服务端自动适配)。</p>
|
||
<p><code>enabled</code>是否开启多路复用</p>
|
||
<p><code>mux_concurrency</code>指单个TLS隧道可以承载的最大连接数,默认为8。这个数值越大,多连接并发时TLS由于握手产生的延迟就越低,但网络吞吐量可能会有所降低,填入负数或者0表示所有连接只使用一个TLS隧道承载。</p>
|
||
<p><code>mux_idle_timeout</code>指TLS隧道在空闲多久之后关闭,单位为秒。</p>
|
||
<h3 id="router路由选项"><code>router</code>路由选项</h3>
|
||
<p>路由功能是Trojan-Go的特性。Trojan-Go的路由策略有三种。</p>
|
||
<ul>
|
||
<li>
|
||
<p>Proxy 代理。将请求通过TLS隧道进行代理,由trojan服务器和目的地址进行连接。</p>
|
||
</li>
|
||
<li>
|
||
<p>Bypass 绕过。直接在本地和目的地址进行连接。</p>
|
||
</li>
|
||
<li>
|
||
<p>Block 封锁。不代理请求,直接关闭连接。</p>
|
||
</li>
|
||
</ul>
|
||
<p>在<code>proxy</code>, <code>bypass</code>, <code>block</code>字段中填入对应列表文件名或者geoip/geosite标签名,Trojan-Go即根据列表中的IP(CIDR)或域名执行相应路由策略。列表文件中每行是一个IP或者域名,Trojan-Go会自动识别。</p>
|
||
<p><code>enabled</code>是否开启路由模块。</p>
|
||
<p><code>route_by_ip</code> 开启后,所有域名会被在本地解析为IP后,仅使用IP列表进行匹配。如果开启这个选项,可能导致DNS泄露。</p>
|
||
<p><code>route_by_ip_on_nonmatch</code>开启后,如果一个域名不在三个列表中,则会被在本地解析为IP后,仅使用IP列表进行匹配。如果开启这个选项,可能导致DNS泄露。</p>
|
||
<p><code>default_policy</code>指的是三个列表匹配均失败后,使用的默认策略,默认为Proxy,即进行代理。</p>
|
||
<h3 id="websocket选项"><code>websocket</code>选项</h3>
|
||
<p>Websocket传输是Trojan-Go的特性。在<strong>正常的直接连接服务器节点</strong>的情况下,开启这个选项不会提升线路质量(甚至有可能下降),也不会提升你的连接安全性。你只应该在下面两种情况下启用它:</p>
|
||
<ul>
|
||
<li>
|
||
<p>你需要利用CDN进行流量中转</p>
|
||
</li>
|
||
<li>
|
||
<p>你到代理节点的直接TLS连接遭到了GFW的中间人攻击</p>
|
||
</li>
|
||
</ul>
|
||
<p><em>警告:由于信任CDN证书并使用CDN网络进行传输,HTTPS连接对于CDN是透明的,CDN运营商可以查看Websocket流量传输内容。如果你使用了国内CDN,务必开启double_tls进行双重加密,并使用password进行流量混淆</em></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,这个选项一般填入域名。</p>
|
||
<p><code>double_tls</code>是否开启双重TLS,默认开启。开启后在TLS+Websocket上将会再承载一次TLS连接。双重TLS的意义在于即使第一层TLS遭到中间人攻击也能保证通信安全。第二层TLS的证书校验被强制打开。客户端和服务端设置必须相同。这个选项对性能有一定影响,如果需要更改,请自行斟酌安全性和性能的平衡。</p>
|
||
<p><code>password</code>混淆密码,留空则不启用混淆。用于加密混淆Websocket连接内容以消除Websocket所承载流量(Trojan或者TLS)的特征。如果设置了密码,服务端和客户端必须相同。只使用混淆而不使用双重TLS有可能导致遭到重放攻击。这个选项对性能有一定影响,如果需要更改,请自行斟酌安全性和性能的平衡。</p>
|
||
<h3 id="mysql数据库选项"><code>mysql</code>数据库选项</h3>
|
||
<p><code>enabled</code>表示是否启用mysql数据库进行用户验证。</p>
|
||
<p><code>check_rate</code>是Trojan-Go从MySQL获取用户数据,更新缓存的间隔时间,单位是秒。</p>
|
||
<p>其他选项可以顾名思义,不再赘述。</p>
|
||
<p>users表结构和trojan原版一致,下面是一个创建users表的命令。注意这里的password指的是密码经过SHA224哈希之后的值(字符串),流量download, upload, quota的单位是字节。你可以通过修改数据库users表中的用户记录的方式,添加和删除用户,或者指定用户的流量配额。Trojan-Go会根据所有的用户流量配额,自动更新当前有效的用户列表。如果download+upload>quota,trojan-go服务器将拒绝该用户的连接。</p>
|
||
<pre><code>CREATE TABLE users (
|
||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
username VARCHAR(64) NOT NULL,
|
||
password CHAR(56) NOT NULL,
|
||
quota BIGINT NOT NULL DEFAULT 0,
|
||
download BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||
upload BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||
PRIMARY KEY (id),
|
||
INDEX (password)
|
||
);
|
||
</code></pre><div class="edit-meta">
|
||
|
||
<br><a href="https://github.com/p4gefau1t/trojan-go/docs/edit/master/content/basic/fullconfig.md" class="edit-page"><i class="fas fa-pen-square"></i> Edit on GitHub</a></div><nav class="pagination"><a class="nav nav-prev" href="https://p4gefau1t.github.io/trojan-go/basic/config/" title="正确配置Trojan-Go"><i class="fas fa-arrow-left" aria-hidden="true"></i> Prev - 正确配置Trojan-Go</a>
|
||
<a class="nav nav-next" href="https://p4gefau1t.github.io/trojan-go/advance/" title="高级配置">Next - 高级配置 <i class="fas fa-arrow-right" aria-hidden="true"></i></a>
|
||
</nav><footer><p class="powered">Powered by <a href="https://gohugo.io">Hugo</a>. Theme by <a href="https://themes.gohugo.io/hugo-theme-techdoc/">TechDoc</a>. Designed by <a href="https://github.com/thingsym/hugo-theme-techdoc">Thingsym</a>.</p>
|
||
</footer>
|
||
</main><div class="sidebar">
|
||
|
||
<nav class="open-menu">
|
||
<ul>
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go">Home</a></li>
|
||
|
||
<li class="parent"><a href="https://p4gefau1t.github.io/trojan-go/basic/">基本配置</a>
|
||
|
||
<ul class="sub-menu">
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/basic/trojan/">Trojan基本原理</a></li>
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/basic/config/">正确配置Trojan-Go</a></li>
|
||
<li class="active"><a href="https://p4gefau1t.github.io/trojan-go/basic/fullconfig/">完整的配置文件</a></li>
|
||
</ul>
|
||
|
||
</li>
|
||
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/advance/">高级配置</a>
|
||
|
||
<ul class="sub-menu">
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/advance/mux/">启用多路复用提升并发性能</a></li>
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/advance/websocket/">使用Websocket进行CDN转发</a></li>
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/advance/router/">国内直连和广告屏蔽</a></li>
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/advance/relay/">流量中继</a></li>
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/advance/forward/">DNS隧道和反向代理</a></li>
|
||
</ul>
|
||
|
||
</li>
|
||
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/">实现细节和开发指南</a>
|
||
|
||
<ul class="sub-menu">
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/overview/">基本介绍</a></li>
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/trojan/">Trojan协议</a></li>
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/mux/">多路复用</a></li>
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/websocket/">Websocket</a></li>
|
||
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/developer/api/">API</a></li>
|
||
</ul>
|
||
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
|
||
|
||
|
||
<div class="sidebar-footer"></div>
|
||
</div>
|
||
</div><a href="#" id="backtothetop-fixed" class="backtothetop"
|
||
data-backtothetop-duration="600"
|
||
data-backtothetop-easing="easeOutQuart"
|
||
data-backtothetop-fixed-fadeIn="1000"
|
||
data-backtothetop-fixed-fadeOut="1000"
|
||
data-backtothetop-fixed-bottom="10"
|
||
data-backtothetop-fixed-right="20">
|
||
<span class="fa-layers fa-fw">
|
||
<i class="fas fa-circle"></i>
|
||
<i class="fas fa-arrow-circle-up"></i>
|
||
</span></a>
|
||
</div>
|
||
</body>
|
||
</html>
|