最近GFW是年底冲业绩吗,网络波动频繁,都不能愉快地刷推特了,被迫试试之前看过但觉得有点麻烦的trojan。
2019/12/25 更新:太难了,运气好搭成功一次,结果reboot就挂了
2019/12/26 更新:又试了试,勉强能用了,搞不懂
项目地址:trojan - Github
与大部分代理走强加密、带混淆的思路不同,trojan伪装成常见的HTTPS流量
既然要伪装HTTPS,就需要一个域名和证书
对于我这样的小白来说,这些步骤里最难的是前期准备工作,最后配置trojan反而是最简单的
这次部署参考了七八篇教程,其中比较有用的:
Trojan Documentation
Trojan搭建教程 - Scaleya
自建梯子教程 —Trojan版本
Trojan:一个伪装成HTTPS的代理工具 - 荒岛
Certbot instructions - Let’s Encrypt
搭建步骤:
- 申请域名
- 解析DNS
- 生成证书
- 安装配置trojan
要求:
一台VPS,要开放80、443端口
申请域名
这个简单,网上免费的、付费的都有
知乎上这个回答有一定参考价值:现在去哪里买 .com 域名最便宜? - 范进的回答 - 知乎
域名比价网站:domcomp
找个便宜的或者喜欢的域名就可以了
解析DNS
这里我是用 CloudFlare ,免费版完全ok
- 第一步,申请账号,完成之后它会让你添加域名,把你刚才申请的域名填上去
- 第二步,要使用CloudFlare的服务,需要去你的域名后台更改
nameservers
改成CloudFlare指定的,如下图(可能每个人的都不一样)

(更改之后需要一段时间生效,休息一下(我这里大概不到10分钟就ok了 - 第三步,在CloudFlare的面板里,设置你的域名解析
上面一排设置,点DNS,Add record,添加一条A Type记录
Name为你的域名,Content是做代理的VPS主机IP,后面的Proxy status那个小云朵一定要设置灰色的DNS only,只解析DNS就可以(橙色云朵的话trojan会有问题

这样,解析DNS就完成了
生成证书
目前为止,虽然可以连通,但还是HTTP,需要在VPS上生成一张证书才能升级HTTPS
这里使用 Let’s Encrypt 的证书,因为这个证书开源免费,可以自己签
用到的工具是 Certbot,这部分完全不懂,全靠 Trojan搭建教程 - Scaleya 和 Certbot instructions - Let’s Encrypt 这两个教程,一步步来
- 添加Certbot源
sudo apt-get updatesudo apt-get install software-properties-commonsudo add-apt-repository universesudo add-apt-repository ppa:certbot/certbotsudo apt-get update- 安装
sudo apt-get install certbot- Certbot运行类型?(它问你要给什么服务上证书,五个选项里我只见过且仅限于见过nginx,完全不清楚选哪个,跟着教程选了nginx,还好能用
sudo certbot certonly --nginx选择只生成证书
敲完这个命令它会问你邮箱多少、同意我家的用户协议吗、能订阅一下我家的新闻吗,最后问要给哪个域名上证书啊,一一回答就好了
- 然后
certbot会告诉你:真棒,你的证书已经签好了
仔细看输出,你得到两个pem文件,一个证书,一个key
/etc/letsencrypt/live/domain/fullchain.pem/etc/letsencrypt/live/domain/privkey.pem记住key是私钥,不能给别人看
记下来这两个文件的路径,一会要用到
- Certbot instructions - Let’s Encrypt 这个教程后面还让你测试一下
Certbot自动刷新证书的功能是否正常,因为证书有保质期的,过期作废
sudo certbot renew --dry-run看输出有没有问题,一般应该ok
- Certbot instructions - Let’s Encrypt 这个教程
真长最后还跟你说:让我们确认一下证书效果怎么样吧
你可以去 SSL Labs 输入你的域名测试一下,all green,ok
有点啰嗦,但终于完了
下一步,安装trojan
2019/12/25 更新
不知道VPS上什么时候装了nginx,那就顺便上个证书吧
Certbot运行类型那里,敲sudo certbot --nginx
按照提示操作
完成后,打开浏览器访问一下,确实变成HTTPS了,地址栏的小锁点开看看,证书由Let’s Encrypt确认,ok2019/12/26 更新
sudo certbot certonly --standalone似乎也可以,如果只需要证书的话
安装配置trojan
官方安装指南 给了各个系统的安装方法
有两个快速安装脚本
sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"sudo bash -c "$(wget -O- https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"随便安一个,脚本显示如下
Installing trojan 1.13.0 to /usr/local/bin/trojan...Installing trojan server config to /usr/local/etc/trojan/config.json...Installing trojan systemd service to /etc/systemd/system/trojan.service...Reloading systemd daemon...Deleting temp directory /tmp/tmp.eqeWyvKmjN...Done!它说config.json在这个路径:/usr/local/etc/trojan/config.json
nano /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-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256", "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, "fast_open": false, "fast_open_qlen": 20 }, "mysql": { "enabled": false, "server_addr": "127.0.0.1", "server_port": 3306, "database": "trojan", "username": "trojan", "password": "" }}更改如下
- 第5行,
127.0.0.1换成你的域名,例如这样:"remote_addr": "996.icu", - 第7行,设置
password,我只用一个密码,就删了第8行,改password2 - 第13、14行,证书和key,分别改成之前生成的证书和key的路径
改好之后敲个trojan命令,测试配置文件有没有问题,有错纠错
systemctl start trojan启动trojan
日常使用命令:
systemctl start trojansystemctl restart trojansystemctl stop trojansystemctl status trojansystemctl enable trojan终于,部署完成
使用
在项目的 releases 界面找对应系统的软件包,下载下来,改一下config.json的remote_addr、password,和服务器的参数保持一致
双击.exe,即可运行
完结撒花
(经过两天的使用,发现trojan相较于v2ray速度上并没有显著的提升(至少在我这里
2019/12/25 更新
reboot一下VPS,v2ray和trojan都炸了…
v2ray改了改配置文件,只保留最精简的配置,活过来了
trojan瞎折腾两小时,还是救不过来
macOS: [FATAL] fatal: config.json: cannot open file 里的./trojan config.json命令也没有用
./trojan config.jsonWelcome to trojan 1.13.0[2019-12-25 00:06:21] [FATAL] fatal: config.json: cannot open file[2019-12-25 00:06:21] [FATAL] exiting. . .看文件权限都是755,是什么问题呢?
(trojna一周体验卡
(为什么搬瓦工的Snapshots功能reboot一下就炸了两个服务呢?奇怪
半天后更新
又折腾了几个小时,在另一台VPS上装也失败了,卡在Certbot那里
看来上面成功的那次纯粹是运气好
放着吧,以后有机会再研究这个trojan
2019/12/26 更新
又试了一下
- 把
config.json改成777,运行trojan
Welcome to trojan 1.13.0[2019-12-26 09:38:29] [FATAL] fatal: bind: Address already in use[2019-12-26 09:38:29] [FATAL] exiting. . .- 关闭
nginx,再次运行
Welcome to trojan 1.13.0[2019-12-26 09:40:02] [FATAL] fatal: use_private_key_file: key values mismatch[2019-12-26 09:40:02] [FATAL] exiting. . .-
上网查,不太懂,试着把
config.json里的证书从fullchain.pem改成cert.pem,运行成功了… -
nginx和trojan冲突,只好不用nginx了(所以之前是怎么一块用的呢?搞不懂 -
把
config.json里的证书从cert.pem又改回fullchain.pem,运行trojan也成功了 -
把
config.json改成755,也能运行 -
(所以之前的
cannot open file和key values mismatch是什么鬼
就这样,能用了
搬瓦工这个
Snapshots功能太搞心态了