trojan简介
trojan是近些年兴起的网络工具,项目官网 https://github.com/trojan-gfw。与强调加密和混淆的SS/SSR等工具不同,trojan将通信流量伪装成互联网上最常见的https流量,从而有效防止流量被检测和干扰。在敏感时期,基本上只有trojan和 v2ray伪装 能提供稳如狗的体验。
v2ray和trojan有如下区别及特点:
- v2ray是一个网络框架,功能齐全;trojan只是一个绕过防火墙的工具,轻量级、功能简单;都使用TLS加密的情况下,理论上trojan比V2ray性能更好;
- v2ray和trojan都能实现https流量伪装;
- v2ray内核用go语言开发,trojan是c++实现;
- v2ray名气大,使用的人多,客户端很好用;trojan关注和使用的人少,官方客户端简陋,生态完善度不高。
本教程先介绍trojan服务端的安装部署,然后以windows系统为例讲解客户端使用。下载trojan客户端请访问:trojan客户端下载。
- trojan无法配合CDN使用,如需过CDN请使用加强版的trojan-go
- V2ray发布了新一代VLESS协议,配合XTLS和direct模式性能大大超过trojan,详情请参考 VLESS协议介绍和使用教程
- 2020.12.28更新:XTLS目前在Xray项目中被支持,详情参考 Xray教程
- 注意:trojan项目已经许久未更新,更推荐使用 v2ray伪装教程 或 Xray教程
安装trojan
准备事项
按照本教程部署trojan需要如下前提条件:
1. 有一台运行Linux的境外vps;购买vps可参考:一些VPS商家整理;
2. 有一个域名;购买域名可参考:Namesilo域名注册和使用教程 或从 适合国人的域名注册商推荐 选购;
3. 将域名的某个子域名(伪装域名)解析到境外VPS的IP;
4. 为域名申请一个证书;请参考 使用acme.sh签发证书 或 从阿里云获取免费SSL证书(伪装域名用来做站推荐使用);
5. 通过ssh终端连接到vps;Windows系统请参考 Bitvise连接Linux服务器教程,mac用户请参考 Mac电脑连接Linux教程。
安装trojan服务端
本教程服务端系统是CentOS 7,其他系统的命令基本类似,请自行转换。
连到VPS后,终端输入如下命令安装trojan:
sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"
该命令会下载最新版的trojan并安装。安装完毕后,trojan配置文件路径是 /usr/local/etc/trojan/config.json
,其初始内容为:
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": [
"password1",
"password2"
],
"log_level": 1,
"ssl": {
"cert": "/path/to/certificate.crt",
"key": "/path/to/private.key",
"key_password": "",
"cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384",
"cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
"prefer_server_cipher": true,
"alpn": [
"http/1.1"
],
"reuse_session": true,
"session_ticket": false,
"session_timeout": 600,
"plain_http_response": "",
"curves": "",
"dhparam": ""
},
"tcp": {
"prefer_ipv4": false,
"no_delay": true,
"keep_alive": true,
"reuse_port": false,
"fast_open": false,
"fast_open_qlen": 20
},
"mysql": {
"enabled": false,
"server_addr": "127.0.0.1",
"server_port": 3306,
"database": "trojan",
"username": "trojan",
"password": "",
"key": "",
"cert": "",
"ca": ""
}
}
请重点关注配置文件中的如下参数:
-
local_port
:监听的端口,默认是443,除非端口被墙,不建议改成其他端口; -
remote_addr
和remote_port
:非trojan协议时,将请求转发处理的地址和端口。可以是任意有效的ip/域名和端口号,默认是本机和80端口; password
:密码。需要几个密码就填几行,最后一行结尾不能有逗号;cert
和key
:域名的证书和密钥,Let’s Encrypt申请的证书可用certbot certificates
查看证书路径。注意不是mysql里面的key和cert!key_password
:默认没有密码(如果证书文件有密码就要填上);alpn
:建议填两行:http/1.1和h2,保持默认也没有问题。
根据自己的需求修改配置文件(大部分参数保持默认即可),保存,然后设置开机启动:systemctl enable trojan
,并启动trojan: systemctl start trojan
。
检查trojan是否在运行:ss -lp | grep trojan
,如果输出为空,可能的原因包括:
- config.json文件有语法错误:请注意是否少了逗号,有特殊字符等;
- 开启了selinux:
setenforce 0
关闭再启动 trojan。
软件运行没问题的话,最后一步是防火墙放行端口(如果开了防火墙的话):
firewall-cmd --permanent --add-service=https # 端口是443
firewall-cmd --permanent --add-port=端口号/tcp # 其他端口号
firewall-cmd --reload # 重新加载防火墙
trojan服务端注意事项
以下是一些注意事项:
1. 为了让伪装更正常,配置文件中的 remote_addr
和 remote_port
请认真填写。如果使用默认的 127.0.0.1 和 80,请运行以下命令安装Nginx并放行80端口:
yum install -y epel-release && yum install -y nginx
systemctl enable nginx; systemctl start nginx
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
完成后打开浏览器输入域名,应该出现Nginx欢迎页。更换伪装网站页面只需上传文件到 /usr/share/nginx/html
目录即可。
2. remote_addr
和 remote_port
也可以填其他ip/域名和端口。例如将所有请求转发到本站,remote_addr
填 tlanyan.pp.ua,remote_port
填443。做大死的行为是remote_addr填 facebook/google/twitter等敏感域名,GFW过来一看可能就直接把你的ip安排得明明白白。
3. 如果vps网页后台有防火墙(阿里云/谷歌云/aws买的服务器),请记得放行相应端口。
到此服务端应该已经安装好并运行正常,接下来是配置客户端使用。
trojan windows客户端使用教程
本节以windows系统为例,讲解trojan客户端的配置和使用。
本文介绍trojan官方windows客户端的使用教程,配置较为麻烦,建议使用clash,参考:clash for windows配置trojan教程
运行trojan客户端
首先 下载trojan客户端,解压压缩包,进入trojan文件夹。用记事本打开 config.json
文件,做如下修改:
remote_addr可以设置成vps的ip,这时verify和verify_hostname需要设置成false
改好后保存并关闭文件,双击文件夹内的 trojan.exe 文件,trojan程序运行,出现如下黑窗口:
如果无法运行,先双击“VC_redist.x86.exe”安装依赖,然后再运行。
与SS/SSR/v2ray等客户端不同,trojan运行出现上述界面后,浏览器无法直接上外网,需要进行额外的设置。本文介绍两种方式:1. 设置系统代理;2. 借助v2rayN。
设置系统代理上网
1. 打开windows设置 -> 网络和Internet -> 代理,出现如下界面:
2. 设置pac方式上网(推荐!):关闭“自动检测设置”,打开“使用设置脚本”,在脚本地址一栏填入“https://itlanyan.com/trojan-pac.php?p=端口号”(端口号改成电脑上trojan配置文件中的local_port,例如1080),然后点击”保存”:
3. 如果你需要全局代理模式,请这样设置:关闭“自动检测设置”和“使用设置脚本”,打开“使用代理服务器”,地址填入127.0.0.1,端口填入trojan配置文件中的local_port,下面一栏填入以下内容:
localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;172.32.*;192.168.*
然后点击保存。
无论哪种方式,配置正确的话都能上外网。
借助v2rayN上网
设置系统代理方式不能方便的切换pac和全局模式,本节介绍使用v2rayN客户端达到灵活上外网。
1. 从 v2ray客户端 下载v2rayN,解压进入v2rayN-Core文件夹。双击文件夹内的 v2rayN.exe 启动,在桌面右下角找到v2rayN的图标(logo是V),双击打开配置界面,按下图添加socks5服务器:
2. 弹出来的配置界面分别填入 127.0.0.1 和设置的端口,别名随便填一个,比如 trojan,然后点击保存:
3. 右下角找到v2rayN图标,点右键,在”Http代理”中选择PAC模式或者全局模式:
接下来,就可以愉快的上外网了。
其他事项
1. 可以用SwitchOmega等插件、浏览器设置代理等方式达到同样效果;
2. v2rayN界面的服务器列表栏点右键可以测试延迟,设置活动服务器等。
本教程到此结束,如有问题请留言。
参考
1.V2ray教程
2. trojan – An unidentifiable mechanism that helps you bypass GFW.
3. 网络上的HTTPS加密
问下站长 trojan和trojan-go哪个略好一点。好像很少看到trojan-go的安装脚本。trojan又是很久没升级了。
trojan-go更强大,但是客户端少一些,不用ws的情况两者基本一样
大哥,我有一个问题哈,前天我的vpn突然不能用了,打开trojan客户端,没有任何信息更新(只有第一行的提示trojan打开了),然后不能访问外网,我重新安装了服务器的操作系统,然后用您的一键配置进行了配置,依然不能使用,不知道是什么原因。
没有任何信息说明你的浏览器没用到代理,换个浏览器或者把其他软件都退了
站主,你好,我是一个学生,平时会用Trojan翻 qiang查资料,就在十一月初突然发现Trojan一直报丢包的错误,类似于“[INFO] 127.0.0.1:61951 disconnected, 0 bytes received, 517 bytes sent, lasted for 93 seconds”,然后就开始很卡,几乎不能用了,但手机端完全不受影响。然后我尝试换了几个代理脚本的url,还是有同样的问题。我没办法了,希望你能帮忙解答一下,先谢了!
可能是服务端证书过期了,上去更新一下
大神好,我前几天还能科学上网的,但昨晚忽然间就不行了,重新安装也没用,连接是能连接,也能显示延迟,但不能科学上网,请问这是啥问题
手机和电脑都不行了吗?
大神你好啊,我是一个小白 ,我按照上面的步骤在可以科学3个多月了。
但是最近遇见问题了,就是我苹果手机上的shadowrocket上面的trojan节点连通性测试是ok的,延迟大概是200ms,但是连接上之后手机无法上网,电脑端用clash连接就是所有节点都是timeout。
我去测试IP和端口都能ping通,测试域名也都没被墙,用ssh软件也能连接服务端。服务端的trojan也重新配置过。证书什么的也更新了。就是不知道问题在哪儿。。
能打开伪装域名吗?
不能打开,告诉我证书有问题
那就是证书过期了,更新一下
我重新配置trojan后可以科学上网了,但是伪装域名还是无法打开。
证书是阿里云上申请的大概还有半年才到期,我把证书上传在服务器的/etc/pki/tls/certs这个里面,trojan配置文件里的”cert”和”key”的路径也改为我上传的证书路径。是那个步骤没对吗。
应该是你的配置错了,不过不影响你上网就没事
请问这个成功之后是不是可以支持多个账号在不同的设备使用的?谢谢!
可以在多个设备上使用
请问博主, 怎么设置vpn断线就断wifi, 以免vpn突然断线被检测到是国内ip?
这个设置不了
看到大神还在回复,我也来问个问题。
按教程装好TROJAN后,用客户端+V2rayN成功的用了大约十几分钟,忽然就断了,再也连不上。
经检查:
1,主机trojan,nginx运行正常,已关闭防火墙与selinux.
2,伪装网站可以正常打开,并有小锁,应该证明trojan支持没有问题。
而客户端这边的消息是:
连不上,网页上的消息是不能建立安全连接。
请教,是不是这个证明了是VPS主机自身的问题,我只是买个virmach的练练手?
另外,https://www.yourhorizon.tk 是我的站点,应该还可以正常方问。
谢谢!
应该是突然之间流量太大被qos了,过一会再试,流量要慢慢养
多谢大神回复。
今天来看,问题依旧。U2B等网站客户端都是显示发送请求就被断开,CHROME里面显示的是 此网站无法提供安全连接, ERR_SSL_PROTOCOL_ERROR。
像这种QOS是指VPS那边的限制对吧?也就是说没有办法解决,除非换个实例了?
换个客户端试试
在这里跟大神汇报下:
找了半天,终于搞明白真正原因。
由于折腾的时候开了CF的CDN,而TROJAN是不支持的,关了CF代理就可以了。
因为开始成功的十几分钟迷惑了我,没有往这方面想。
再次谢谢大神。
手机端用不了了,显示“连接失败 https://www.google.com: connection closed by peer”
路由器上的还好好的,直接连无线就能用,手机客户端就不行,大佬知道怎么回事吗
换个客户端试试,也可能是证书过期了
按您的教程操作,没有出现NGINX欢迎页面,反而出现400 Bad Request – Invalid Host的错误提示?
是否伪装不成功?
域名弄错了
大佬你好,请问一下啊,配置了无法连接网络
日志显示:
SSL handshake failed: sslv3 alert certificate unknown
disconnected, 0 bytes received, 0 bytes sent, lasted for 3 seconds
SSL handshake failed: sslv3 alert certificate unknown
disconnected, 0 bytes received, 0 bytes sent, lasted for 4 seconds
A SSL handshake failed: sslv3 alert certificate unknown
证书有问题,或者服务端配置错了
昨天家里的trojan用不了了(电脑,手机,pad),ping 75%的丢包率,以为是被墙,又在vultr申请了几个vps,结果都ping不通。今天用公司网可以连接,请问是什么问题呢?
vps的线路问题
wordpress
为什么报毒啊…
哪个报毒?
trojan的运行程序需要一直打开着吗,因为我发现好像窗口一关闭就连不上了
需要一直开着
ss -lp | grep trojan
Cannot open netlink socket: Protocol not supported
这个是为啥呢
试试ss -nltp|grep trojan
已连上,但为啥网速这么慢啊?youtube只能看到框架,视频刷不出来。😂
是VPS的问题吗,我用的vultr。
用全局模式试试,或者换个浏览器
新买的域名,怀米查结果是被qiang,一般的 是vps被qiang了吧?
不是,域名被墙就是域名有问题,和vps没关系
老哥,你这个Trojan配置路径在Windows中的哪啊?我没找到,
就在解压的文件夹里啊
我找到了,文件路径是在Bitvise的sftp界面里,默认显示的不是始端文件夹,需要返回上一文件夹才能找到路径usr。
老哥,按照你的步骤,我的搬瓦工GIAE线路,在阿里云买了个域名和弄好了证书(一个后缀是key、一个后缀是pem),域名解析正常。
我是纯小白,有个问题想了解一下,谢谢了:
“cert”: “/path/to/certificate.crt”,
“key”: “/path/to/private.key”,
到了这一步的时候,我应该用的是 apache ,iis , nginx , tomcat , other 哪一个证书类型?证书路径有没有什么要求的?crt和pem是通用的吧?
谢谢了。
还有个小白问题,就是搬瓦工创建的CentOS 7系统,还需要安装什么依赖的吗?谢谢了。
不需要
nginx的就可以
老哥帮忙
老哥 我这儿出现了这么一个情况 本来trojan用的好好地 但是忽然前几天windows端的就连不上了,我的mac也一样,我觉得可以排除是客户端出现问题的情况, 会显示与xxxx.com握手失败【
[2020-07-12 22:55:25] [INFO] 127.0.0.1:62357 disconnected, 0 bytes received, 517 bytes sent, lasted for 2 seconds
[2020-07-12 22:55:25] [INFO] 127.0.0.1:62361 requested connection to console.cloud.google.com:443
[2020-07-12 22:55:25] [ERROR] 127.0.0.1:62358 SSL handshake failed with test.liyelin.club:443: certificate verify failed
】,但是手机用Shadowrocket(ios)在4G模式下就能连上vpn(基于wifi连上也是不行 ),并且配置的两个域名都可以连上,怎么回事呢,浏览器直接访问伪装站也打不开了,我怀疑是不是gfw给我封禁了啊 但是手机4g就能连上该怎么解释呢
域名证书过期了,到服务器上更新一下证书,或者客户端证书检验设置为false
证书是更换到config.json中cert的路径里 还是更换到server.conf的cert路径里呢?
【现在的trojan这两个指向不一样 config指向crt类型证书 server指向cer证书】
刚才回复的地方错了
更新证书之后需要重启吗
在config.json里更改,更新证书后需要重启trojan
网页文件,是我自己弄个静态网页,要注册一个域名吗?
trojan需要域名的,你把网页文件上传上去就好了,不需要新的域名
设置pac上网方式为什么是这个“https://tlanyan.pp.ua/trojan-pac.php?p=端口号”,这个实际上是trojan设置里面的什么?是自己的remote_addr的地址再加上端口号吗?另外还想问,trojan配置成功了网页浏览都很快,但是看youtube很慢,只有80k,200k左右,不知道是什么原因
pac没必要用我这个网址,你能找到其他的也可以。看视频很慢,可能是你的服务器线路不好
我好像明白了,pac的脚本事实上就是相当于SwitchOmega里面的规则列表网址。youtube网速感觉不太像是服务器选择的问题…借了几个人的v2ray来用都是这样,最终就会掉到80k。不同的网络环境比如校园网可以无压力4K,4G网的速度也很快差不多3M,但是家里面的宽带就600k然后掉到80k,我不确定有没有可以优化的办法,搜了好久…还有个问题想问的是有时候搭好trojan不管怎么样速度都是只有300k,speedtest 1M左右,相比校园网搭的低了40倍…这可能是什么问题呢,或者说有没有什么加速的设置我没弄,我确定弄了的是开了bbr加速的。
同一个vps,不同的线路相差很大是非常正常的
“完成后打开浏览器输入域名,应该出现Nginx欢迎页。更换伪装网站页面只需上传文件到 /usr/share/nginx/html 目录即可”,安装完Night怎么操作?有命令行吗?
不需要操作啊,把文件上传到目录下就好了
上次什么文件?安装Nginx后,是cp复制黏贴上传吗?
你想做什么网站就上传什么文件
你是说还要再弄一个网站,用来伪装正常流量,而这个网站的文件那些就放在/usr/share/nginx/htm,是中国意思吗
对
看了看其他教程,没你那么详细,不过是说要一个域名,伪装网站页面只需上传文件到 /usr/share/nginx/html 目录这个步骤就是弄一个域名?
不是,上传文件要准备网页文件,然后用scp或者ftp传过去
我按照你的方法部署了trojan服务,但是就是访问不了,服务器ping google.com能ping通,这是什么情况?
浏览器输入伪装域名,出现什么?
请问第一天配置成功后上网一切正常,第二天网速就很慢了,有加速手段么?
服务端安装魔改bbr或者锐速
博主好!VPS重装系统后,按照您的方法安装了Trojan, 并修改了/usr/local/etc/trojan/config.json下的配置,Trojan更新后新增加的三行命令未修改,但是,启动Trojan总是失败,ss -lp | grep trojan输出为空,运行setenforce 0也不行,重装VPS系统试了几次,还是不行,实在是没折了。之前,根据您的方法VPS成功安装过Trojan和NGINX,后来,因NGINX配置未成功,卸载然后重装NGNIX,还是不能成功配置NGINX,不得以重装了VPS操作系统,结果安装TROJAN时,不能成功运行。请问大佬有何建议?总是麻烦您,非常感谢!
journal -xe,看看有什么提示
博主好!TROJAN 进行了更新,在配置文件后增加了三行命令,请问增加命令行中的证书钥匙需要配置吗?另外,根据您文章中的提示,就其更新,配置文件是否还需要进行其它修改或配置?
TROJAN未更新前,根据您的文件成功安装了TROJAN,但是,这次在第一步就卡住了。肯请并感谢您的帮助!
那是mysql的配置,不需要管
请教一下大佬,使用的是Trojan+V2ray,成功出国,但是想在V2ray上再开启内网共享就不行,设置中已经勾选允许来自局域网的连接,为了防止冲突,本地监听端口改成了1081,但是手机网络设置代理没有用
电脑的防火墙也要打开
o(╥﹏╥)o 不好意思,小白一枚,能请教下具体怎么设置吗,直接打开防火墙也不行
windows有防火墙,里面需要设置规则放行,mac暂时不清楚
安装是安装好了,但是我原来的网站都不可以访问了,请问有办法解决吗?
我服务器上配置了几个网站呢。
trojan换一个端口,或者配置nginx做好反代