现在网上能找到的一键脚本基本都要求debian9或以上版本才行,由于某些原因我并不打算升级debian,却想用上trojan,在一番折腾后发现debian8也是可以的。但是8以下的版本没有试过。
本文不包括nginx配置。
trojan工作原理简述
trojan先从正常网站(监听http 80端口)吸取流量,然后将流量作为伪装成加密的正常网站(https 443端口)释放给客户端(用户)。
安装trojan
- 使用以下命令,会直接从github下载并安装最新版的服务端。如果不是root用户,请用sudo命令切换到root运行。(以下全部省略sudo)
bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"
然后会得到几个重要的路径
1,配置文件路径
/usr/local/etc/trojan/config.json
2,启动文件路径
/etc/systemd/system/trojan.service
修改配置文件
输入以下命令
vi /usr/local/etc/trojan/config.json
这里需要修改的一般只有cert:和key:两行。分辨填入ssl证书和密钥文件的路径。
至于如何获得ssl证书和密钥可以参考另外一篇文章:freessl申请免费ssl证书。
额外提几点:
1,修改“local_port”也是可以的,但是这样就没法伪装成常用的https流量。(常用https端口为443),这就违背了trojan最大的意图–伪装。
2,检查443端口有没有被其他进程占用,使用以下命令
lsof -i:443
如果有发现443端口被占用,上述命令可以显示进程的PID,然后用kill+pid数字关掉进程。但这只是一时的,下次启动这个进程可能还是会继续占用443端口,最好的办法就是让那个进程使用其他端口。这里就不展开说了。
修改启动文件
输入以下命令
vi /etc/systemd/system/trojan.service
这就是debian8和debian9以上的区别!
将
ExecStart=”/usr/local/bin/trojan” “/usr/local/etc/trojan/config.json”
替换成
ExecStart=/usr/local/bin/trojan -c “/usr/local/etc/trojan/config.json”
修改完后重新加载一下
systemctl daemon-reload
一些常用命令
启动
systemctl start trojan
重启
systemctl restart trojan
状态查询(如果有显示绿色active(running),就表示正常运行中)
systemctl status trojan
错误查询
journalctl -e -u trojan.service
开机自动启动
systemctl enable trojan
鸣谢
本文研究主要参考文章:
- https://trojan-tutor.github.io/2019/04/10/p41.html
- https://betterme.xin/posts/2019-12/trojan/
- https://www.v2rayssr.com/trojan-1.html
- https://github.com/trojan-gfw/trojan/issues/283