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加密
“bash <(curl -sL https://raw.githubusercontent.com/daveleung/hijkpw-scripts-mod/main/xray_mod1.sh)”
你好,请问下我用这个一键安装代码安装的trojan,是否还需要做这个第4步“4. 为域名申请一个证书;”呢?
我没有单独申请证书,现在安装好使用也是正常的,只是过一段时间会被封端口,重新使用一键安装代码换个端口安装后又会正常一段时间。
用TLS就需要
你好大佬,安卓连接显示测试失败io read/write on closed pipe。Windows和ios可以连接无网络。
换个客户端,或者仔细检查配置
ss-ssr-trojan—v2ray 其中那个最快?延时最低连接稳定
ss
“完成后打开浏览器输入域名,应该出现Nginx欢迎页。更换伪装网站页面只需上传文件到 /usr/share/nginx/html 目录即可。”其他都可以抄作业,这里就不知道怎么搞了,大佬能否细说一下?
用ftp上传
大佬,这个支持ws吗?
原版不支持,trojan-go支持
博主你好
最近很多线路挂了,因此我重新安装了Trojan-qt5,但是以前是1.3.1,新安装的是1.4
问题是现在压缩包一解压,运行exe文件可以正常打开,导入配置以及订阅都可以,但是一旦完全退出关闭exe程序后,再打开就会有和Mac一样的报错”您的配置已由旧版升级,一个纯净安装是必须的,请参阅wiki获得更多信息” 网上都是Mac的解决方法 并没有Windows的
问题具体现象 路线配置完成(gui-config导入还是订阅)后,在文件目录中都会出现config.json和config.ini文件 关闭Trojan-qt5程序后,再打开就开始弹窗报错,但是我删掉config.ini文件,再运行能正常运行,但是,我的配置信息全都会不见了。也就是意味着我每一次开机都要去配置,且不能后台退出。
请问大佬能解答一下吗?谢谢
没怎么用过qt5,建议换一个客户端试试
您好,我稳定用了一年半的trojan上周二突然挂了。
以同一主机作为客户端,网页访问伪装站正常(不过伪装站就是nginx默认页面没搞进一步伪装),trojan客户端的报错是:trojan cannot establish connection to remote server XXX(我的域名) Operation timed out;trojan 服务器端日志根本没收到请求。
试了换IP(没换域名)也没用。
想了想可疑的原因,一是上上周日北京的动荡,可能GFW又加强了?二是上上周末在油管上看了几集非常正常的电影,平时几乎不看视频,只有我自己用,所以流量应该很小,不知道这有影响吗?
请问大佬原因和对策?这是说明GFW已经能识别被https封装的流量是常规web还是trojan流量了吗?有什么方法可以拯救一下吗?
你这应该是突然流量大了。
另外换IP也没用,可能就是你的域名被DNS污染了
您说的DNS污染是指域名被GFW标记了?
域名解析是正确的,伪装站访问正常的,子域名挂了其他服务也正常使用。
如果域名正常,换个ip不应该用不了
我花了几天时间按流程走了一遍,目前情况是ss -lp | grep trojan/nginx 都有反馈(没连接后系统会关闭运行),打开域名是欢迎使用centos不是nginx欢迎页面。WIN10代理设置全局后连不通网络。trojan客户端info显示517 bytes sent,其他两个是0,ERROR:cannot resolve remote server hostname 域名
能教一下吗,有偿
客户端的域名配置错了
大佬你好,使用V2RayN配置trojan,显示配置成功,可还是无法上网,服务器我用docker安装的,80,443都能链接
应该是配置错了,需要根据日志排查
服务器配置错了,还是客户端配置错了,客户端如何配置的呢
看v2rayN的输出日志
[Warning] [1329137862] app/proxyman/outbound: failed to process outbound traffic > proxy/socks: failed to establish connection to server > proxy/socks: unexpected server version: 72
帮我看一下,第一次弄,搜索了没有答案
https://github.com/233boy/v2ray/issues/852
https://github.com/2dust/v2rayNG/issues/1418
客户端和服务端版本不匹配
Version: v2.14.3
BuildDate: 20221105-1600
GoVersion: go1.19.3 linux/amd64
GitVersion: 024fc08dbaa051c37bb293991fc25702e8ce343c
TrojanVersion: 1.16.0
V2RayN版本:5.38
需要如何匹配呢?
大佬,现在v2RayN,5.38如何配置trojan服务器呢
您好 我按照教程完成服务器端设置 然后直接使用v2rayNG客户端连接 在测试真连接时显示基础连接已经关闭 发送时发生错误 的提示 请问这是什么原因造成的呢
配置错误,或者服务端没有正确设置好
哥们, 多谢你的分享,万分感谢。
大佬问个小问题,我是在windows server 2008r2上搭建的trojan,现在配置有点问题trojan.exe打开就闪退,我想看错误日志的话应该在配置文件中添加什么配置。。
用命令行启动就能看到日志了
没有一键暗安装的脚本,太不方便了,还要自己配置文件,又简便方法不?还要现学ubuntu的各种指令。
网上可以找一下
我记得之前有一键安装TROJAN的一篇文章,作者删除了吗? 谢谢
那个脚本失效了,为了避免误导读者就删除了
请问失效是不是指其安装时,一直说域名没有指向本服务器?谢谢
应该是这个问题
3. 将域名的某个子域名(伪装域名)解析道境外VPS的IP;
4. 为域名申请一个证书;请参考 从Let’s Encrypt获取免费证书 或 从阿里云获取免费SSL证书(伪装域名用来做站推荐使用);
5. 通过ssh终端连接到vps;Windows系统请参考 Bitvise连接Linux服务器教程,mac用户请参考 Mac电脑连接Linux教程。
请问第三步第四步怎么做,我新手无奈已经买了;
还有域名那里的IP是填VPS买到的服务器IP吗;
解析需要去域名的dns里设置,ip就是买的vps ip
想知道为什么trojan会莫名的cpu占用100%,不知道你们有没有遇到这个情况
换个客户端
不是,我是说的服务器上面,trojan经常就cpu满了,导致断连,必须重启服务器
这没遇到过
博主你好,请教下
1. 按照你博客中的方式,设置pac方式上网,脚本地址:https://tlanyan.pp.ua/trojan-pac.php?p=端口号,近期不能访问VPN,trojan.exe中只显示1条log信息。
2. 设置成全局模式,trojan.exe中不停刷 Error: unknow protocal
3. 使用v2rayN ,控制台显示如下信息“2021/03/25 09:43:15 tcp:127.0.0.1:52953 accepted tcp:www.google.com:443 [proxy]”,但是也不能访问VPN
以上3中情况下,均在trojan server端的server.log中获取不到日志信息。
是我哪里配置出错了吗?
本站域名被墙,因此 https://tlanyan.pp.ua/trojan-pac.php?p=端口号 这个地址用不了了,建议直接用v2rayN
v2rayN 也试了,使用v2rayN ,控制台显示如下信息“2021/03/25 09:43:15 tcp:127.0.0.1:52953 accepted tcp:www.google.com:443 [proxy]”,但是也不能访问VPN,server端的server.log没有log信息
信息填错了,注意sni要填写伪装域名
不好意思,没太理解,
是要修改server.json这个配置文件吗
我的意思是不要用trojan.exe了,最新版v2rayN直接支持trojan,直接用v2rayN就可以了,没必要再自己配置pac了
博主你好,我最近又遇到了之前的问题,trojan的windows客户端打开之后,只有第一行日志,后面不更新,也无法使用vpn,并且你的这个帖子也无法访问,这种情况间歇性的出现。 但是trojan的安卓客户端可以正常使用并访问外网。不知道您有没有遇到过类似的情况?
本站被墙了,需要开全局模式才能访问
你换个浏览器试试
trojan-pac.php 请问有这个页面的源代码吗?能自己搭一个吗
你可以从这里下载源代码:https://tlanyan.pp.ua/wp-content/uploads/trojan-pac.php.origin,下载后更改后缀名,按照PHP文件部署就好了
不错
你的这些相关文章都写的很用心, 站点逛了一个小时了。nice.
感谢关注
你好 ,github.com 这个域名是不是没有配置到这个列表啊 ”https://tlanyan.pp.ua/trojan-pac.php?p=端口号“,访问google正常,但是github访问有 3Q
之前确实没有加入,现在放进去了,你可以再试试
可以了 谢谢~
配置端口应该是443
你好,请教一下,搭建的很成功,电脑也成功用v2ray连上了,但在手机上就不行了
手机上配置错了
大佬,我看了一下手机上用的是v2rayNG和igniter,配置和电脑上的v2rayN是一样的,但手机v2rayNG连接,trojan显示ssl handshake failed,sslv3 alert bad certificate
用igniter连接时,显示tlsv1 alert unknown ca😩
域名和证书不匹配,设置sni或者地址用域名,不要填ip
亲爱的大佬 请教您一个问题 我装的是trojan+XTLS 新买的搬瓦工的VPS 监听端口是443 结果报错context deadline exceeded 换了450端口之后 一开始能连上 然后后面就越来越慢…最后又context deadline exceeded的了 真不懂为什么 换了IP换了端口换了VLESS还是这样
建议还是用443端口,最开始可能是你配置错了
安装完成之后,查看监听端口、发现443端口没有被监听。只有80端口在监听
那应该是配置有问题
请教Mac装了这个用的trojan连,显示connected连接上了,但是一直是超时状态。而且我发现其实我换个错的密码,他也是能连上,但是也是超时。
哪里显示的超时?