登录
  • 人们都希望被别人需要 却往往事与愿违
  • 谁控制过去, 谁就控制未来; 谁控制现在, 谁就控制过去。Who controls the past controls the future; who controls the present controls the past. @1984

使用 trojan 翻越长城的进阶使用方法

翻墙 Benny 小土豆 23123 次浏览 5241 字 38 个评论
文章目录 [显示]
这篇文章在 2020 年 02 月 18 日 18:16:10 更新了哦~

今天偶然看到了另外一个梯子 trojan,大致看了下,感觉这东西还是蛮有意思的嘛,思路和其他工具不太一样:把流量放到 Application Data 里,然后伪装成正常的 HTTPS 通信,甚至还有一个完全真正的 TLS 握手。从结果上看起来,有点像 Shadowsocks/ShadowsocksR 的 obfs 之类的功能,只不过这个从网络层上看就像真正的 HTTPS 一样。

由于这是一个比较新的项目,所以相关的基础设施还不如 shadowsocks 那么完善,比如缺少或不完善的移动平台客户端等等~ 不过这都不是事,相信社区的力量レ(゚∀゚;)ヘ=3=3=3

配置也很容易,大概可以分为 6 步

  • 准备服务器
  • 准备 http 服务
  • 弄个域名
  • 搞个证书
  • 写配置,调试,运行
  • 客户端配置、测试
  • 进阶配置
想要快速开始?戳我

@ホロちゃん

准备服务器

VPS

首先,咱需要准备一个 VPS,KVM 之类的完全虚拟化的最好,OpenVZ 也行。

我就用前段时间免费薅的 Oracle Cloud Korea 为例了,延迟真是非常理想的,也基本没丢包。

使用trojan翻越长城的进阶使用方法

其他的厂商,可以试试

  • Vultr:注册送 $50,一个月用完,最低 $3.5 / 月,但是据说现在有时会开出来不能用的 IP
  • Linode:老牌厂商了,$5
  • Conoha:日本的主机商,900 日元 / 月,据说 ToS 有点严格,但是我跑梯子、rtorrent、ffmpeg 都没被封过,吼吼
  • DigitalOcean:和 Vultr 一样也是送 $50 一个月用完
  • VirMach:被称作低价屠夫,特别便宜的年付 VPS,比如有时促销会有年付 $7 的 KVM 机器,新用户貌似还能折扣,不过他家换 IP 就要交钱,这点就比较坑了

防火墙

装好系统,ssh 连接上,记得把防火墙什么的都搞定了,需要注意,不仅要关注系统自身的防火墙,也要注意下厂商的 “安全组” 这类东西。

清除 iptables 的规则,可以参考如下命令:

  1. sudo iptables -P INPUT ACCEPT
  2. sudo iptables -P FORWARD ACCEPT
  3. sudo iptables -P OUTPUT ACCEPT
  4. sudo iptables -t nat -F
  5. sudo iptables -t mangle -F
  6. sudo iptables -F
  7. sudo iptables -X

如有必要,可以安装 iptables-save 等工具持久化

准备 http 服务

官方文档建议配置一个 http 服务器,所以咱就简单的弄下吧,Debian 系为例,使用 root 权限执行如下命令:

  1. apt install nginx

CentOS 可以用 yum 安装

  1. yum install nginx

此时访问 http://ip 应该能看到默认的欢迎页面了。

弄个域名

域名的话,什么域名都无所谓的,可以自己注册个免费的 cf 什么的域名,也可以注册个正经的域名,假如不想花钱,那用 DDNS 也可以,比如 dynu 提供免费的二级域名。

域名搞到手之后,做个 A 记录的解析到服务器 IP

搞个证书

有两种方式,一种是申请一个真正的证书,另外一种是用 openssl 生成一个自签名证书。官方建议使用真正的证书。

申请证书

直接使用 Let’s Encrypt 就可以了,可以参考如下命令

  1. certbot certonly

然后一步一步按照说明做

详细信息可以参考如下两篇

https://dmesg.app/letsencrypt-nginx-subdomain.html

https://letsencrypt.org/zh-cn/getting-started/

自签名证书

  1. openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 3650 -out certificate.pem

服务端配置,调试,运行

直接从 GitHub Release 下载二进制文件

  1. wget https://github.com/trojan-gfw/trojan/releases/download/v1.13.0/trojan-1.13.0-linux-amd64.tar.xz
  2. tar xf trojan-1.13.0-linux-amd64.tar.xz
  3. cd trojan

examples 目录中有一个server.json-example,我们直接把他拷贝到上层目录

  1. cp exmaples/server.json-example config.json

配置文件的内容很简单,基本上只需要修改 password 字段和 ssl 字段就可以了

使用trojan翻越长城的进阶使用方法

运行

  1. ./trojan

基本上没报错,在运行了就可以~

客户端配置运行

这里以 PC 为例,Android/iOS 可以找找相应的工具

同样从 GitHub Release 下载对应的文件,解压缩,把client.json-example拷贝出来

我们只需要关注local_port、remote_addr、remote_port、passwordssl的几个字段

  • local_port 本地监听的端口,我这里设置为了 11080,避免和本机的 Shadowsocks 冲突
  • remote_addr:申请的域名
  • remote_port:上面服务端配置的端口,一般来说就是 443
  • password:密码,要与服务端配置的密码列表中的一个相符
  • ssl:如果你使用的是自签名证书,那么verify要写 false,假如 common name 也是瞎写的,那么verify_hostname也要写 false;假如用的是真证书,那么就都 true 就可以了

使用trojan翻越长城的进阶使用方法

然后./trojan运行就可以了,此时 trojan 会监听指定的端口,socks5,本例为 11080

然后打开你的 proxyswitchy omega,这么配置下就可以了

使用trojan翻越长城的进阶使用方法

更进一步,可以用 proxy switchy omega 的自动切换模式 + GFWList

如果在 Windows 上运行提示缺少 VCRUNTIME 等,请安装相应的 VC 运行库,可以参考文末链接

测速

都在服务端开启了 BBR 的情况下进行的测试

使用 Shadowsocks

使用trojan翻越长城的进阶使用方法

trojan

使用trojan翻越长城的进阶使用方法

速度还是很理想的,就是不知道稳不稳了。

进阶配置

使用 BBR

偷懒,直接用秋水逸冰的吧

  1. wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

开启 TFO(TCP Fast Open)

  1. sysctl -w net.ipv4.tcp_fastopen=3
  2. sysctl -p /etc/sysctl.conf
  3. cat /proc/sys/net/ipv4/tcp_fastopen

结果为 3 就对了

然后服务端和客户端的tcp.fast_open都改成 true

使用trojan翻越长城的进阶使用方法

配置 systemd

创建文件,/etc/systemd/system/trojan.service或者/lib/system/system/trojan.service

  1. [Unit]
  2. Description=Trojan
  3. After=network.target network-online.target nss-lookup.target
  4.  
  5. [Service]
  6. Restart=on-failure
  7. Type=simple
  8. ExecStart=/path/to/trojan config.json
  9.  
  10. [Install]
  11. WantedBy=multi-user.target

自启

  1. systemctl daemon-reload
  2.  
  3. systemctl enable trojan
  4. systemctl start trojan
  5. systemctl status trojan

使用非 root、non-login shell 运行

新增用户

  1. useradd s /usr/sbin/nologin trojan
  2. # 改权限
  3. chown -R trojan:trojan /path/to/trojan

授予监听标准端口权限

由于 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 微调

  1. [Unit]
  2. Description=Trojan
  3. After=network.target network-online.target nss-lookup.target
  4.  
  5. [Service]
  6. User=trojan
  7. Group=trojan
  8. Restart=on-failure
  9. Type=simple
  10. ExecStart=/path/to/trojan
  11.  
  12. [Install]
  13. WantedBy=multi-user.target

使用 HTTP/2

服务端 alpn 中加入 h2,如下图所示

使用trojan翻越长城的进阶使用方法

当然客户端也要确保有这个 h2 哦~

TLS 1.3

已经支持啦,当然了,要你的 openssl 版本在 1.1.1 以上哦。对啦,cipher suite 要改下,比如说

  1. TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256: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

使用数据库做验证

更高级的配置,比如流量控制等,可以通过 MySQL 实现

在服务端配置最后的 mysql 字段,确保用户名密码正确,本机装好了 MySQL

使用trojan翻越长城的进阶使用方法

然后进入 mysqlcli,创建数据库、创建表、插入用户

  1. # 创建数据库
  2. create database trojan;
  3. use trojan;
  4.  
  5. # 创建表
  6. CREATE TABLE users (
  7. id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  8. username VARCHAR(64) NOT NULL,
  9. password CHAR(56) NOT NULL,
  10. quota BIGINT NOT NULL DEFAULT 0,
  11. download BIGINT UNSIGNED NOT NULL DEFAULT 0,
  12. upload BIGINT UNSIGNED NOT NULL DEFAULT 0,
  13. PRIMARY KEY (id),
  14. INDEX (password)
  15.  
  16. );
  17.  
  18. # 创建用户
  19. INSERT INTO users VALUES(NULL,'benny','Fire',1024,100,50);

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://dmesg.app/letsencrypt-nginx-subdomain.html  https://letsencrypt.org/zh-cn/getting-started/

 


文章版权归原作者所有丨本站默认采用 CC-BY-NC-SA 4.0 协议进行授权 |
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://dmesg.app/trojan.html
喜欢 (28)
分享:-)
关于作者:
If you have any further questions, feel free to contact me in English or Chinese.
发表我的评论
取消评论

                     

去你妹的实名制!

  • 昵称 (必填)
  • 邮箱 (必填,不要邮件提醒可以随便写)
  • 网址 (选填)
(38) 个小伙伴在吐槽
  1. 现在还可以用吗
    大拿 2021-02-09 16:27 回复
    • 应该可以吧
      -- 本评论由 Telegram Bot 回复~❤️
      Benny 小土豆 2021-02-09 17:15 回复
  2. 那个我想问下~~ 我最近的梯子强制换成了 Trojan 方案,好像没办法把地址运行给 Shadowsocks.. 请问有什么办法吗~
    LittleBeta2020-03-17 18:48 回复
    • "把地址运行给 Shadowsocks" 这是什么意思
      -- 本评论由 Telegram Bot 回复~❤️
      Benny 小土豆 2020-03-17 18:49 回复
    1. [Unit]
    2. Description=Trojan
    3. After=network.target network-online.target nss-lookup.target
    4. [Service]
    5. User=trojan
    6. Group=trojan
    7. Restart=on-failure
    8. Type=simple
    9. ExecStart=/path/to/trojan
    10. [Install]
    11. WantedBy=multi-user.target
    ExecStart=/path/to/trojan后面需要加上 config.json 配置文件?,不加 start 不起来? 参考 https://github.com/trojan-gfw/trojan/blob/master/examples/trojan.service-example
    木子 2020-02-18 18:01 回复
    • 哦豁 疏忽了
      Benny 小土豆 2020-02-18 18:16 回复
  3. 想问下开启 TFO 后访问网页的速度会改善么?还有流量特征会不会容易被察觉
    Barry2020-02-04 20:52 回复
    • 支持情况可以看这里 https://en.wikipedia.org/wiki/TCP_Fast_Open#Characteristics 但是其实个人觉得 TFO 嘛用处不大…… 不如 H2 和 TLS1.3
      -- 本评论由 Telegram Bot 回复~❤️
      Benny 小土豆 2020-02-04 20:57 回复
      • 哦哦好的 谢谢
        Barry2020-02-04 21:14 回复
  4. 一键脚本,欢迎使用 https://github.com/johnrosen1/trojan-gfw-script
    Johnrosen2020-01-21 12:26 回复
    • 感谢分享,上来就把 aliyun 干掉了,可以可以~?
      -- 本评论由 Telegram Bot 回复~❤️
      Benny 小土豆 2020-01-21 12:34 回复
    • 又是你,会学写脚本就到处发。把人 source 都改掉我也是服气的,nginx 配置也是乱写的,Feature-Policy 可以说是强行添加特征了,https://github.com/johnrosen1/trojan-gfw-script/blob/master/trojangui.sh#L1113-L1127
      tom2020-01-29 23:38 回复
      • 我也感觉 L262、L268
        -- 本评论由 Telegram Bot 回复~❤️
        Benny 小土豆 2020-01-29 23:48 回复
  5. 开启 TCP Fast Open 会添加特征,因为现实中没有人用这个东西。
    tom2020-01-16 19:14 回复
    • ? 是的,基本没人用 TFO,支持的系统少,默认好些也不开启……
      Benny 小土豆 2020-01-16 22:04 回复
  6. hi 怎么弄啊
    nitobe2019-12-29 21:28 回复
  7. 我在用 v2
    桃花懂了 2019-11-28 19:21 回复
    • 老熟人你好;-)
      Benny 小土豆 2019-11-28 19:22 回复
  8. SSL handshake failed: Connection reset by peer. 腾讯云,为什么给这个提示?我在别的地方搭建的都没有问题,配置一模一样的。请问能解决吗吗?
    recall_li2019-11-28 15:28 回复
    • 换个端口吧,非 443 的
      Benny 小土豆 2019-11-28 15:41 回复
  9. 没对接面板太麻烦了
    鸽鸽 2019-11-24 15:36 回复
    • 哈哈,搞了两小时搞定了。用二级域名添加了一个站点,装上 trojan 就行。当然证书啥的必不可少,关键就是把《自建梯子教程》中 nginx 配置中的前两个 server 替换填到这个站点的配置文件中。
      KinvanHon2019-11-24 17:23 回复
      • 就是这个关键超麻烦,我配置了三个 server 不知哪里不对,Nginx 无法重启,老哥可以详细的说明一下吗?
        lpss2020-02-13 01:08 回复
        • 添加一个站点,给这个站点绑定一个二级域名(默认 80 端口就可以),然后点这个网站的 “设置”,点 “配置文件”,替换成一下配置,原来网站的东西什么都不用改 server { listen 127.0.0.1:80 default_server; server_name 网站绑定的域名; location / { proxy_pass https://www.baidu.com; } } server { listen 127.0.0.1:80; server_name 网站域名对应的IP(在域名解析设置中添加A记录,把网站绑定的域名指向服务器IP); return 301 https://网站绑定的域名$request_uri; } #server { # listen 0.0.0.0:80; # listen [::]:80; # server_name _; # return 301 https://$host$request_uri; #}
          KinvanHon2020-02-18 18:07
  10. 老哥,用宝塔安装的 nginx 如何配置 trojan,服务器上已经有一个网站在运行
    KinvanHon2019-11-24 15:21 回复
    • 同问。请博主赐教!
      DrSlime2020-02-10 08:12 回复
    • 二级域名,或者 proxy_pass
      Benny 小土豆 2020-02-13 12:00 回复
  11. 天气越来越冷了,躲在家里刷刷博客也挺好!
    混球网 2019-11-02 06:45 回复
  12. 看到标题第一反应: 利用具有代理功能的木马 (trojan) 病毒进行翻长城。所以首先第一步,博主转行了?要开始写病毒,投放病毒到国外了...?
    akira2019-10-21 19:04 回复
    • 嗯,是的,我正在给长城植入木马。吼吼
      Benny 小土豆 2019-10-22 20:02 回复
  13. 对了,禁用 JS 表示这个博客会被加载动画遮挡,对我这种用 Tor 访问的人很不友好。
    tom2019-10-18 16:55 回复
    • 对哦,这个动画是用 jquery 关掉的,这就很尴尬了哦,怎么办哦!
      Benny 小土豆 2019-10-18 17:01 回复
      • 唉,WordPress.org 好像屏蔽了中国大陆的 IP,感觉不太自由。咱想切换和萌狼一样使用 Pelican,评论用 ISSO,咕咕咕。
        tom2019-10-20 14:06 回复
  14. 直接给个软件不是更好么。
    repostone2019-10-11 16:33 回复
    • 这位是人工 SPAM,通过了 Akismet 检测,也在我博客留言过,回复一些答非所问的内容,被我删了。
      tom2019-10-18 16:52 回复
      • 人工 spam 是什么操作!
        Benny 小土豆 2019-10-18 17:01 回复
  15. 前几天梯子全灭的时候在 gayhub 上看到了这个项目,然而这项目的文档在墙外… 狂怒无能? 话说这世界上是先有的鸡还是先有的蛋啊…?
    EAimTY2019-10-07 17:57 回复
    • GitHub 上有文档呀?而且这里也算是文档吧
      Benny 小土豆 2019-10-08 17:21 回复
您直接访问了本站! 莫非您记住了我的域名. 厉害~ 我倍感荣幸啊 嘿嘿