一、Trojan-Go介绍
Trojan
二、Trojan-Go原理
1、为什么Shadowsocks容易遭到封锁
防火墙在早期仅仅只是对出境流量进行截获和审查,也即被动检测
。Shadowsocks的加密协议设计使得传输的数据包本身几乎没有任何特征,看起来类似于完全随机的比特流,这在早期的确能有效绕过GFW。
目前的GFW已经开始采用主动探测
的方式。具体来说,当GFW发现一个可疑的无法识别的连接时(大流量,随机字节流,高位端口等特征),将会主动连接
这个服务器端口,重放之前捕获到的流量(或者经过一些精心修改后重放)。Shadowsocks服务器检测到不正常的连接,将连接断开。这种不正常的流
2、Trojan如何绕过GFW
与Shadowsocks相反,Trojan不使用自定义的加密协议来隐藏自身。相反,使用特征明显的TLS协议(TLS/SSL),使得流量看起来与正常的HTTPS网站相同。TLS是一个成熟的加密体系,HTTPS即使用TLS承载HTTP流量。使用正确配置
的加密TLS隧道,可以保证传输的
- 保密性(GFW无法得知传输的内容)
- 完整性(一旦GFW试图篡改传输的密文,通讯双方都会发现)
- 不可抵赖(GFW无法伪造身份冒充服务端或者客户端)
- 前向安全(即使密钥泄露,GFW也无法解密先前的加密流量)
对于被动检测,Trojan协议的流量与HTTPS流量的特征和行为完全一致。而HTTPS流量占据了目前互联网流量的一半以上,且TLS握手成功后流量均为密文,几乎不存在可行方法从其中分辨出Trojan协议流量。
对于主动检测,当防火墙主动连接Trojan服务器进行检测时,Trojan可以正确识别非Trojan协议的流量。与Shadowsocks等代理不同的是,此时Trojan不会断开连接,而是将这个连接代理到一个正常的Web服务器。在GFW看来,该服务器的行为和一个普通的HTTPS网站行为完全相同,无法判断是否是一个Trojan代理节点。这也是Trojan推荐使用合法的域名、使用权威CA签名的HTTPS证书的原因: 这让你的服务器完全无法被GFW使用主动检测判定是一个Trojan服务器。
因此,就目前的情况来看,若要识别并阻断Trojan的连接,只能使用无差别封锁(封锁某个IP段,某一类证书,某一类域名,甚至阻断全国所有出境HTTPS连接)或发动大规模的中间人攻击(劫持所有TLS流量并劫持证书,审查内容)。对于中间人攻击,可以使用Websocket的双重TLS应对,高级配置中有详细讲解。
三、Trojan-Go部署
1、准备工作
- 首先我们去腾讯云或者万网申请一个域名,申请域名主要是为了保护我们的VPS真实服务器IP地址,申请的域名我们需要由Cloudflare托管,然后使用Cloudflare免费CDN功能实现隐藏真实IP;
- 注:
此步骤可选
;域名有了之后,我们现在需要申请一个SSL证书,后面部署Trojan-Go时我们选择使用自己的证书,申请证书可以到腾讯云或者阿里云申请免费的SSL证书(免费的申请有次数限制);如果不想申请的话,也可以在部署Trojan-Go时选择【1】; - 查看下面链接中的文章,为自己的VPS开启BBR,加速VPS访问。
- 下图为本文的示例,域名地址更改为自己申请的,并按下图所示进行域名解析

2、执行脚本
- 上面我们添加完域名解析记录之后,接下来就需要安装部署Trojan-Go了,这里我们使用Jrohy大神开源的Trojan-Go一键部署面板实现Trojan-Go的部署;
- 安装更新脚本下载(后期的更新也使用该条命令即可)
[root@dqzboy-vps ~]# source <(curl -sL https://git.io/trojan-install)




source <(curl -sL https://git.io/trojan-install) --remove
3、访问页面
- 上面安装完成后,我们就可以使用提前解析好的域名进行访问了,注意是
https


4、修改配置
- 添加以下代码,开启CND和多路复用支持
[root@dqzboy-vps ~]# vim /usr/local/etc/trojan/config.json
}, //下面的为新增的内容,这里必须加一个英文的逗号这是json格式的写法
"websocket": {
"enabled": true,
"path": "/", //ws路径,自定义
"host": "你的域名" //域名地址
},
"mux": { //多路复用
"enabled": true,
"concurrency": 8, //单个TLS隧道可承载的最大连接数,默认为8
"idle_timeout": 60 //空闲超时时间
}
四、Trojan-Go客户端
Trojan-QT5 (支持WIN/MACOS)
新版v2rayNG手机客户端也可以连trojan-go了(可添加websocket路径)
新版v2rayNG手机客户端已支持trojan-go连接(可添加websocket路径)