今天偶然看到了另外一个梯子trojan,大致看了下,感觉这东西还是蛮有意思的嘛,思路和其他工具不太一样:把流量放到Application Data里,然后伪装成正常的HTTPS通信,甚至还有一个完全真正的TLS握手。从结果上看起来,有点像Shadowsocks/ShadowsocksR的obfs之类的功能,只不过这个从网络层上看就像真正的HTTPS一样。
由于这是一个比较新的项目,所以相关的基础设施还不如shadowsocks那么完善,比如缺少或不完善的移动平台客户端等等~不过这都不是事,相信社区的力量レ(゚∀゚;)ヘ=3=3=3
配置也很容易,大概可以分为6步
- 准备服务器
- 准备http服务
- 弄个域名
- 搞个证书
- 写配置,调试,运行
- 客户端配置、测试
- 进阶配置
准备服务器
VPS
首先,咱需要准备一个VPS,KVM之类的完全虚拟化的最好,OpenVZ也行。
我就用前段时间免费薅的Oracle Cloud Korea为例了,延迟真是非常理想的,也基本没丢包。
其他的厂商,可以试试
- Vultr:注册送$50,一个月用完,最低$3.5/月,但是据说现在有时会开出来不能用的IP
- Linode:老牌厂商了,$5
- Conoha:日本的主机商,900日元/月,据说ToS有点严格,但是我跑梯子、rtorrent、ffmpeg都没被封过,吼吼
- DigitalOcean:和Vultr一样也是送$50一个月用完
- VirMach:被称作低价屠夫,特别便宜的年付VPS,比如有时促销会有年付$7的KVM机器,新用户貌似还能折扣,不过他家换IP就要交钱,这点就比较坑了
防火墙
装好系统,ssh连接上,记得把防火墙什么的都搞定了,需要注意,不仅要关注系统自身的防火墙,也要注意下厂商的“安全组”这类东西。
清除iptables的规则,可以参考如下命令:
sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -P OUTPUT ACCEPT sudo iptables -t nat -F sudo iptables -t mangle -F sudo iptables -F sudo iptables -X
如有必要,可以安装iptables-save等工具持久化
准备http服务
官方文档建议配置一个http服务器,所以咱就简单的弄下吧,Debian系为例,使用root权限执行如下命令:
apt install nginx
CentOS可以用yum安装
yum install nginx
此时访问http://ip 应该能看到默认的欢迎页面了。
弄个域名
域名的话,什么域名都无所谓的,可以自己注册个免费的cf什么的域名,也可以注册个正经的域名,假如不想花钱,那用DDNS也可以,比如dynu提供免费的二级域名。
域名搞到手之后,做个A记录的解析到服务器IP
搞个证书
有两种方式,一种是申请一个真正的证书,另外一种是用openssl生成一个自签名证书。官方建议使用真正的证书。
申请证书
直接使用Let’s Encrypt就可以了,可以参考如下命令
certbot certonly
然后一步一步按照说明做
详细信息可以参考如下两篇
https://www.bennythink.com/letsencrypt-nginx-subdomain.html
https://letsencrypt.org/zh-cn/getting-started/
自签名证书
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 3650 -out certificate.pem
服务端配置,调试,运行
直接从GitHub Release下载二进制文件
wget https://github.com/trojan-gfw/trojan/releases/download/v1.13.0/trojan-1.13.0-linux-amd64.tar.xz tar xf trojan-1.13.0-linux-amd64.tar.xz cd trojan
examples目录中有一个server.json-example
,我们直接把他拷贝到上层目录
cp exmaples/server.json-example config.json
配置文件的内容很简单,基本上只需要修改password字段和ssl字段就可以了
运行
./trojan
基本上没报错,在运行了就可以~
客户端配置运行
这里以PC为例,Android/iOS可以找找相应的工具
同样从GitHub Release下载对应的文件,解压缩,把client.json-example
拷贝出来
我们只需要关注local_port、remote_addr、remote_port、password
和ssl
的几个字段
local_port
本地监听的端口,我这里设置为了11080,避免和本机的Shadowsocks冲突remote_addr
:申请的域名remote_port
:上面服务端配置的端口,一般来说就是443password
:密码,要与服务端配置的密码列表中的一个相符- ssl:如果你使用的是自签名证书,那么
verify
要写false,假如common name也是瞎写的,那么verify_hostname
也要写false;假如用的是真证书,那么就都true就可以了
然后./trojan
运行就可以了,此时trojan会监听指定的端口,socks5,本例为11080
然后打开你的proxyswitchy omega,这么配置下就可以了
更进一步,可以用proxy switchy omega的自动切换模式+GFWList
如果在Windows上运行提示缺少VCRUNTIME等,请安装相应的VC运行库,可以参考文末链接
测速
都在服务端开启了BBR的情况下进行的测试
使用Shadowsocks
trojan
速度还是很理想的,就是不知道稳不稳了。
进阶配置
使用BBR
偷懒,直接用秋水逸冰的吧
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
开启TFO(TCP Fast Open)
sysctl -w net.ipv4.tcp_fastopen=3 sysctl -p /etc/sysctl.conf cat /proc/sys/net/ipv4/tcp_fastopen
结果为3就对了
然后服务端和客户端的tcp.fast_open
都改成true
配置systemd
创建文件,/etc/systemd/system/trojan.service
或者/lib/system/system/trojan.service
apt install nginx
0
自启
apt install nginx
1
使用非root、non-login shell运行
新增用户
apt install nginx
2
授予监听标准端口权限
由于1024以下端口默认只能由root监听,所以要让非root用户监听,大概有以下几个方法:
- suid:
chmod u+x /opt/trojan/trojan
- iptables转发,确保开启转发
net.ipv4.ip_forward=1
,然后iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to:4433
- CAP_NET_BIND_SERVICE
setcap cap_net_bind_service=+eip /opt/trojan/trojan
system微调
apt install nginx
3
使用HTTP/2
服务端alpn中加入h2,如下图所示
当然客户端也要确保有这个h2哦~
TLS 1.3
已经支持啦,当然了,要你的openssl版本在1.1.1以上哦。对啦,cipher suite要改下,比如说
apt install nginx
4
使用数据库做验证
更高级的配置,比如流量控制等,可以通过MySQL实现
在服务端配置最后的mysql字段,确保用户名密码正确,本机装好了MySQL
然后进入mysqlcli,创建数据库、创建表、插入用户
apt install nginx
5
trojan会先查询配置文件中的password字段,然后查询数据库中的字段。之后会去计算50+100<100(上传+下载是否小于限额),小于的话,允许链接。
上述SQL语句中,1024如果是负数,意味着不限额。
quota、download、upload单位都是字节
参考资料
项目主页https://github.com/trojan-gfw/trojan
teddysun一键bbr脚本 https://teddysun.com/489.html
dynuddns https://www.dynu.com
nginx与trojan https://github.com/trojan-gfw/trojan/issues/67
设计讨论 https://github.com/trojan-gfw/trojan/issues/14
VC运行库https://aka.ms/vs/16/release/VC_redist.x64.exe
https://github.com/RPCS3/rpcs3/issues/6646
配置文件详解https://trojan-gfw.github.io/trojan/config
android客户端 https://github.com/trojan-gfw/igniter
iOS:shadowrocket的test flight版
SSL证书配置:https://www.bennythink.com/letsencrypt-nginx-subdomain.html https://letsencrypt.org/zh-cn/getting-started/
转载请注明:逗比根据地 » 使用trojan翻越长城的进阶使用方法