Files
trojan-go/basic/config/index.html
T
2020-05-11 08:41:04 +00:00

215 lines
15 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<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 - Trojan-Go Docs</title>
<meta name="description" content="An unidentifiable mechanism that helps you bypass GFW. ">
<meta name="generator" content="Hugo 0.69.2" />
<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/config/">
<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="正确配置Trojan-Go" />
<meta property="og:description" content="下面将介绍如何正确配置Trojan-Go以完全隐藏你的代理节点特征。 在开始之前,你需要 一个服务器,且未被GFW封锁 一个域名,可以使用免费的域" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://p4gefau1t.github.io/trojan-go/basic/config/" />
<meta property="og:image" content="https://p4gefau1t.github.io/trojan-go/images/og-image.png"/>
<meta property="og:site_name" content="Trojan-Go Docs" />
<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="正确配置Trojan-Go"/>
<meta name="twitter:description" content="下面将介绍如何正确配置Trojan-Go以完全隐藏你的代理节点特征。 在开始之前,你需要 一个服务器,且未被GFW封锁 一个域名,可以使用免费的域"/>
<meta itemprop="name" content="正确配置Trojan-Go">
<meta itemprop="description" content="下面将介绍如何正确配置Trojan-Go以完全隐藏你的代理节点特征。 在开始之前,你需要 一个服务器,且未被GFW封锁 一个域名,可以使用免费的域">
<meta itemprop="wordCount" content="2278">
<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 Docs</h1>
<span class="version">Version 0.4.8</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></ul>
</nav>
</div>
<div class="content-container">
<main><h1>正确配置Trojan-Go</h1>
<p>下面将介绍如何正确配置Trojan-Go以完全隐藏你的代理节点特征。</p>
<p>在开始之前,你需要</p>
<ul>
<li>
<p>一个服务器,且未被GFW封锁</p>
</li>
<li>
<p>一个域名,可以使用免费的域名服务,如.tk等</p>
</li>
<li>
<p>Trojan-Go,可以从release页面下载</p>
</li>
</ul>
<h3 id="配置证书">配置证书</h3>
<p>为了伪装成一个正常的HTTPS站点,也为了保证传输的安全,我们需要一份经过权威证书机构签名的证书。Trojan-Go支持从Let&rsquo;s Encrypt自动申请证书。首先将你的域名正确解析到你的服务器IP。然后准备好一个邮箱地址,合乎邮箱地址规则即可,不需要真实邮箱地址。保证你的服务器443和80端口没有被其他程序(nginxapache,正在运行的Trojan等)占用。然后执行</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-shell" data-lang="shell">sudo ./trojan-go -autocert request
</code></pre></div><p>按照屏幕提示填入相关信息。如果操作成功,当前目录下将得到四个文件</p>
<ul>
<li>
<p>server.key 服务器私钥</p>
</li>
<li>
<p>server.crt 经过Let&rsquo;s Encrypt签名的服务器证书</p>
</li>
<li>
<p>user.key 用户Email对应的私钥</p>
</li>
<li>
<p>domain_info.json 域名和用户Email信息</p>
</li>
</ul>
<p>备份好这些文件,不要将.key文件分享给其他任何人,否则你的身份可能被冒用。</p>
<p>证书的有效期通常是三个月,你可以使用</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-shell" data-lang="shell">sudo ./trojan-go -autocert renew
</code></pre></div><p>进行证书更新。更新之前请确保同目录下有上述的四个文件。如果你没有指定ACME challenge使用的端口,Trojan-Go将默认使用443和80端口,请确保这两个端口没有被Trojan-Go或者其他程序(nginx, caddy等等)占用。</p>
<h3 id="服务端配置">服务端配置</h3>
<p>我们的目标是,使得你的服务器和正常的HTTPS网站表现相同。</p>
<p>首先你需要一个HTTP服务器,可以使用nginx,apache,caddy等配置一个本地HTTP服务器,也可以使用别人的HTTP服务器。HTTP服务器的作用是,当GFW主动探测时,向它展示一个完全正常的Web页面。</p>
<p><strong>你需要在<code>remote_addr</code><code>remote_port</code>指定这个HTTP服务器的地址。<code>remote_addr</code>可以是IP或者域名。Trojan-Go将会测试这个HTTP服务器是否工作正常,如果不正常,Trojan-Go会拒绝启动。</strong></p>
<p>下面是一份比较安全的服务器配置,需要你在本地80端口配置一个HTTP服务(必要,你也可以使用其他的网站HTTP服务器,如&quot;remote_addr&rdquo;: &ldquo;example.com&rdquo;),在1234端口配置一个HTTPS服务(可选,可以删除<code>fallback_port</code>字段,跳过这个步骤)</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-json" data-lang="json">{
<span style="color:#f92672">&#34;run_type&#34;</span>: <span style="color:#e6db74">&#34;server&#34;</span>,
<span style="color:#f92672">&#34;local_addr&#34;</span>: <span style="color:#e6db74">&#34;0.0.0.0&#34;</span>,
<span style="color:#f92672">&#34;local_port&#34;</span>: <span style="color:#ae81ff">443</span>,
<span style="color:#f92672">&#34;remote_addr&#34;</span>: <span style="color:#e6db74">&#34;127.0.0.1&#34;</span>,
<span style="color:#f92672">&#34;remote_port&#34;</span>: <span style="color:#ae81ff">80</span>,
<span style="color:#f92672">&#34;password&#34;</span>: [
<span style="color:#e6db74">&#34;your_awesome_password&#34;</span>
],
<span style="color:#f92672">&#34;ssl&#34;</span>: {
<span style="color:#f92672">&#34;cert&#34;</span>: <span style="color:#e6db74">&#34;server.crt&#34;</span>,
<span style="color:#f92672">&#34;key&#34;</span>: <span style="color:#e6db74">&#34;server.key&#34;</span>,
<span style="color:#f92672">&#34;fallback_port&#34;</span>: <span style="color:#ae81ff">1234</span>
}
}
</code></pre></div><p>这个配置文件使Trojan-Go在服务器的所有IP地址上(0.0.0.0)监听443端口,分别使用server.crt和server.key作为证书和密钥进行TLS握手。你应该使用尽可能复杂的密码,同时确保客户端和服务端<code>password</code>是一致的。</p>
<p>当一个连接试图连接Trojan-Go的监听端口时,会发生下面的事情:</p>
<ul>
<li>
<p>如果TLS握手成功,检测到TLS的内容非Trojan协议(有可能是HTTP请求,或者来自GFW的主动探测)。Trojan-Go将TLS连接代理到本地127.0.0.1:80上的HTTP服务。这时在远端看来,Trojan-Go服务就是一个HTTPS网站。</p>
</li>
<li>
<p>如果TLS握手成功,并且被确认是Trojan协议头部,并且其中的密码正确,那么服务器将解析来自客户端的请求并进行代理,否则和上一步的处理方法相同。</p>
</li>
<li>
<p>如果TLS握手失败了,说明对方使用的不是TLS协议进行主动连接。此时Trojan-Go将这个TCP连接代理到本地127.0.0.1:1234上运行的HTTPS服务,本地HTTPS服务器也会检测到连接不是TLS连接,返回一个400 Bad Reqeust的HTTP页面。<code>fallback_port</code>是一个可选选项,如果没有填写,Trojan-Go会直接终止连接。虽然是可选的,但是还是强烈建议填写。</p>
</li>
</ul>
<p>你可以通过使用浏览器访问你的域名<code>https://your_domain_name</code>来验证。如果工作正常,你的浏览器会显示一个正常的HTTPS保护的Web页面,页面内容与服务器本机80端口上的页面一致。你还可以使用<code>http://your_domain_name:443</code>验证<code>fallback_port</code>工作是否正常。</p>
<p>事实上,你甚至可以将Trojan-Go当作你的HTTPS服务器,用来给你的网站提供HTTPS服务。访客可以正常地通过Trojan-Go浏览你的网站,而和代理流量互不影响。</p>
<h3 id="客户端配置">客户端配置</h3>
<p>对应的客户端配置</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-json" data-lang="json">{
<span style="color:#f92672">&#34;run_type&#34;</span>: <span style="color:#e6db74">&#34;client&#34;</span>,
<span style="color:#f92672">&#34;local_addr&#34;</span>: <span style="color:#e6db74">&#34;127.0.0.1&#34;</span>,
<span style="color:#f92672">&#34;local_port&#34;</span>: <span style="color:#ae81ff">1080</span>,
<span style="color:#f92672">&#34;remote_addr&#34;</span>: <span style="color:#e6db74">&#34;your_awesome_server&#34;</span>,
<span style="color:#f92672">&#34;remote_port&#34;</span>: <span style="color:#ae81ff">443</span>,
<span style="color:#f92672">&#34;password&#34;</span>: [
<span style="color:#e6db74">&#34;your_awesome_password&#34;</span>
],
<span style="color:#f92672">&#34;ssl&#34;</span>: {
<span style="color:#f92672">&#34;fingerprint&#34;</span>: <span style="color:#e6db74">&#34;firefox&#34;</span>,
<span style="color:#f92672">&#34;sni&#34;</span>: <span style="color:#e6db74">&#34;your_domain_name&#34;</span>
}
}
</code></pre></div><p>这个客户端配置使Trojan-Go开启一个监听在本地1080端口的socks5/http代理(自动识别),远端服务器为your_awesome_server:443your_awesome_server可以是IP或者域名。</p>
<p>如果你在<code>remote_addr</code>中填写的是域名,<code>sni</code>可以省略。<code>sni</code>字段应当填写你申请证书的对应域名,或者你自己签发的证书的Common Name,而且必须一致。注意,<code>sni</code>字段目前的在TLS协议中是<strong>明文传送</strong>的(目的是使服务器提供相应证书)。GFW已经被证实具有SNI探测和阻断能力,所以不要填写类似<code>google.com</code>等已经被封锁的域名,否则很有可能导致你的服务器也被封锁。</p>
<p><code>fingerprint</code>将设置Trojan-Go伪造Firefox浏览器的TLS请求指纹,使得Trojan-Go的流量混杂在正常的HTTPS流量中无法被识别。还可以设置为<code>ios</code><code>chrome</code>,<code>randomized</code>等。</p>
<p>更多关于配置文件的信息,可以在左侧导航栏中找到相应介绍。</p>
<div class="edit-meta">
<br><a href="https://github.com/p4gefau1t/trojan-go/docs/edit/master/content/basic/config.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/trojan/" title="Trojan基本原理"><i class="fas fa-arrow-left" aria-hidden="true"></i> Prev - Trojan基本原理</a>
<a class="nav nav-next" href="https://p4gefau1t.github.io/trojan-go/basic/fullconfig/" 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="active"><a href="https://p4gefau1t.github.io/trojan-go/basic/config/">正确配置Trojan-Go</a></li>
<li class=""><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/">隧道和反向代理</a></li>
<li class=""><a href="https://p4gefau1t.github.io/trojan-go/advance/nginx-relay/">一种基于SNI代理的多路径分流中继方案</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/build/">编译和自定义Trojan-Go</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/simplesocks/">SimpleSocks协议</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>