GFW

什么是 Trojan

Trojan 是一个比较新的翻墙软件,它模仿了互联网上最常见的HTTPS协议,以诱骗 GFW 认为它就是 HTTPS,从而不被识别。所谓魔高一尺道高一丈,墙在不断往上砌,那工具也得跟着变了。

Trojan 工作在 443 端口,并且处理来自外界的 HTTPS 请求,如果是合法的 Trojan 请求,那么为该请求提供服务,否则将该流量转交给 WEB 服务器 Nginx,由 Nginx 为其提供服务。基于这个工作过程可以知道,Trojan 的一切表现均与 Nginx 一致,不会引入额外特征,从而达到无法识别的效果。当然,为了防止恶意探测,我们需要将 80 端口的流量全部重定向到 443 端口,并且服务器只暴露 80 和 443 端口,这样可以使得服务器与常见的 WEB 服务器表现一致。
项目地址: https://github.com/trojan-gfw

搭建前准备

域名申请

目前免费顶级域名我知道的只有 http://www.freenom.com/zh/index.html 可申请。另外,在一些域名商家也可购买几块钱一年的,我看阿里云现在有 6 元一年的,一年一换也不费事。

VPS 购买

还是建议 VULTR.COM,主要是因为在同价位 VPS 中比较稳定,IP 虽然日本经常有被墙的,但可以随时换啊,无论是换地区还是换 IP。论小时计费,如果用 IPV6 的话最低 $2.5/月,IPV4 的最低有美区 $3.5/月,我觉得还是比较合适的。

DNS 解析

免费解析网站有很多,首先域名申请机构一般都会解析,如腾讯云,阿里云,godaddy 等,还有:

  • cloudflare.com
  • dns.he.net
  • dnsever.com
    将域名解析设置到购买的 VPS 对应 IP,并确认已成功。使用 cloudflare 的记得将 DNS only 灰掉。

一键安装 Trojan

系统建议:

  • Debian 9,10(推荐)
  • Ubuntu 14,16,18
  • CentOS 7,8

安装依赖包

安装依赖包(Debian/Ubuntu):

apt-get update && apt-get install sudo whiptail curl locales -y && sudo -i

安装依赖包(Centos):

yum update -y && yum install sudo newt curl -y && sudo -i

一键安装脚本

现在还是使用下面这个脚本吧:
https://github.com/mack-a/v2ray-agent
见我的原文V2Ray最新协议VLESS一键安装脚本
感谢 johnrosen1 提供的一键脚本:https://github.com/johnrosen1/trojan-gfw-script

注:
开发者更新后删除了 v2ray 等,我 fork 后回退了一下版本,想安装多个应用的用这个吧:

sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/harry3633/trojan-gfw-script/master/trojangui.sh)"
  1. 方向键选择,回车确定安装。提示 VPS 打开 80,443 端口,一般服务器都是开的吧,我还没碰到过没打开这两端口的。
  2. 可安装项目有很多,我是把下载相关的都取消了,没这方面需求。

  3. 输入已经解析成功的域名。
  4. 输入用户密码阵列两个,可输不同的密码,一样也可以。

  5. 输入访问 natdata 访问路径,随便填。
  6. 是否使用 API ,支持 cloudflare,aliyun,dnspod 等几家,当然也可以选否,不用去输入 key,更简单。


    如果是 cloudflare,在 My Profile 里选择 Global API Key:
  7. 回车开始自动安装,等一袋烟的功夫出结果。

  8. 访问域名会出现一个网站

注:更多请看 Github 详情。如域名已有证书,请放置于 /etc/trojan/trojan.crt 处,脚本会自动跳过域名解析验证,申请证书以及 acme.sh 安装

客户端及配置

Windows,Linux,MacOS

开发者有发布三大系统客户端:
https://github.com/trojan-gfw/trojan/releases
只说下 Windows 下使用,下载解压缩,如果启动 trojan.exe 报错,说明系统没有 C++ 运行环境,需要安装 VC++ 运行环境,压缩包里已经有了:VC_redist.x64.exe。
修改配置文件 config.json,很简单,就下面两个地方,本地端口默认 1080,可选修改:

{
    "run_type": "client",
    "local_addr": "127.0.0.1",
    "local_port": 1080,
    "remote_addr": "example.com #改为解析的域名",
    "remote_port": 443,
    "password": [
        "password1 #改为服务器端安装时设置的第一密码"
    ],
    "log_level": 1,
    "ssl": {
        "verify": true,
        "verify_hostname": true,
        "cert": "",
        "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA",
        "cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
        "sni": "",
        "alpn": [
            "h2",
            "http/1.1"
        ],
        "reuse_session": true,
        "session_ticket": false,
        "curves": ""
    },
    "tcp": {
        "no_delay": true,
        "keep_alive": true,
        "reuse_port": false,
        "fast_open": false,
        "fast_open_qlen": 20
    }
}

目前 Trojan 客户端没有全局代理而且仅支持 socks5,因此得配合 Chrome 的 SwitchOmeaga 插件或者用 V2rayN 客户端把 socks5 转换成 http 使用。

  1. 如果使用 Chrome 浏览器,可在 SwitchOmeaga 新增情景模式,代理协议填入 SOCKS5,代理伺服器填 127.0.0.1,端口填 1080 或者配置已经修改的端口。
  2. 在 V2rayN 客户端点击服务器->添加 SOCKS 服务器->填写服务器地址:127.0.0.1 端口:1080。即可实现国内分流了。

Android

下载安装,填上域名,密码就可以使用了,目前没过多选项,而且仅支持一个节点连接:
https://github.com/trojan-gfw/igniter/releases
支持 IPV6 和大陆白名单,不过我发现大陆白名单的使能开关需要关闭再打开一次才起作用。
如果运营商支持 IPV6,可在 DNS 解析设置 IPV6 ,我这没法测试,不知道速度会不会更好。

iOS

因为已经很多年没用过 iOS 了,所以就知道目前 Shadowrocket 俗称小火箭最新版是支持 Trojan 的。

路由器

目前仅有 Openwrt 系统有支持 Trojan 的插件,可根据路由器型号选择刷机。
在 LuCI 里有 SSR-Plus 和 passwall 插件,都支持 SS,SSR,V2ray,Trojan 等,就体验来讲,我个人更喜欢 passwall 插件。

后记

因为手动安装复杂很多,涉及到的知识面也更多,所以不想写了,一键安装确实方便了我这样的懒汉。
Trojan 似乎和 V2Ray+WS+TLS 机理差不多,从安全性来说两者稍有点差异但不大,而速度 Trojan 更有优势。就我测试的美国主机,本身速度就比较慢,V2Ray+WS+TLS 平均下载 1M 左右,最高 1.5M,而 Trojan 平均下载速度 2M 以上,最高可以到 3.5M。

参考:
Trojan-GFW --一把通往自由互联网世界的万能钥匙:https://www.johnrosen1.com/trojan/
自建梯子教程 --Trojan版本:https://trojan-tutor.github.io/2019/04/10/p41.html

Pay by WeChat

Pay by WeChat

Comment/ Cancel Comment

  1. dsa dsa
    Chrome 110

    https://github.com/johnrosen1/vpstoolbox/issues/138
    有人提了issue,这玩意会把你的vps信息和节点信息传到作者的服务器上。

    1. Harry Harry
      Chrome 110

      虽然我不太懂代码,看了下感觉不像

  2. liu liu
    Chrome 88

    谢谢博主,步骤还是有点多 ,这个教程简单点:https://www.itblogcn.com/article/1048.html

  3. Andy Andy
    Firefox 86

    你好博主,请问,按照文章搭建后(阿里云的域名 + vultr 的服务器)后,提示安装成功,但是浏览器登录域名(已经进行正确的a记录解析),显示的是nginx的欢迎页

  4. yang yang
    Chrome 86

    请问如何设置添置多个用户?

  5. yugar yugar
    Chrome 85

    已解决,外面检测都是关闭的,原因是没有服务运行在上面,默认VPS服务商都是打开的,自己的问题在DNS解析没用对IP,因为之前被ban,忘记换了

  6. yugar yugar
    Chrome 85

    打开443和80端口是这样吗
    firewall-cmd --zone=public --add-port=80/tcp --permanent
    firewall-cmd --zone=public --add-port=443/tcp --permanent
    firewall-cmd --reload
    这样操作了可以查到都打开的
    firewall-cmd --zone=public --list-ports
    只是用那个国内和国外端口检测都显示未打开

  7. neal neal
    Chrome 84

    你好,你又遇到过passwall配置trojan节点后,访问https网站提示证书的问题嘛,如果使用其它客户端就没问题

    1. Harry Harry
      Chrome 84

      没遇到过,升级下passwall看看

  8. 咸鱼 咸鱼
    Chrome 84

    还一个想请教下的,我这新服务器,防火墙原来没开,我打开了,80和443也开了,但是到了最后
    Can not find nginx conf.
    证书申请测试失败,请检查VPS控制面板防火墙(80 443)是否打开!!!
    这时候再查,又是firewalld is not running

    1. Harry Harry
      Chrome 84

      我估计一键脚本里有其他的操作吧,因为我的服务器全是用来翻墙所以全部让脚本自己设置

  9. 咸鱼 咸鱼
    Chrome 84

    想问下是一定要用国外域名吗,我有阿里云的现成的,就想用掉

    1. Harry Harry
      Chrome 84

      不一定啊,我也是在阿里云买的,不过有一定的风险,有买的域名就被回收了,所以选不重要的域名干

  10. Jack Jack
    Chrome 84

    果断Mark收藏了,谢大佬

  11. Dewei Dewei
    Chrome 83

    您好,不晓得为什么初次安装完后提示要重启,重启之后Trojan就启动不了,连网站也是。
    用的是甲骨文VPS

    1. kyo kyo
      Chrome 83

      重启之后打了补丁 要干掉防火墙 然后重装一次

  12. kyo kyo
    Chrome 81

    目前碰到几个问题
    1.目前主要用的这台机器 每天晚上到11点20左右 就会掉线几分钟,有点像是自动重启。。好像和我建成的时间差不多。。。这是什么原因
    2.我之前用CF的api对应了错误的邮箱,导致生成的证书无法连通,后来用正确的api对应正确的邮箱,却无法解析域名,然后在尝试用脚本直接生成的证书无法连通。。。替换成CF的才连通
    3.我在装第三台机器的时候。。。直接把CF的证书放进去后,虽然服务正常启动了。。但是用来做伪装的域名是不安全域名,2和3用的是同一套证书 *.xxx.xx的
    最头痛的问题是每晚准时掉线。。。。。。

    1. 淡行陌路 淡行陌路
      Chrome 83

      掉线这个问题无解的,你应该是用的USA的服务器和cloudflare的DNS解析吧? 晚上十一点半正好是美国的早上八点,属于网络高峰期,是cloudflare最卡的时候

      1. kyo kyo
        Chrome 81

        甲骨文韩国 和cf

        1. kyo kyo
          Chrome 81

          dns 是关的。。云是灰的

    2. kyo kyo
      Chrome 81

      补充一下 刚刚查看了一下系统运行时间。。不是重启 就是单纯的掉线

      1. kyo kyo
        Chrome 81

        看了一下trojan的日志 大概是11点18左右掉线的 然后日志到了11点28分 又回到18分

        今天早上 vps提示更新 系统补丁 ubuntu18
        更新之后就上不去了

  13. Kevin Wong Kevin Wong
    Chrome 78

    亲。我在腾讯云上申请的ssl,现在审核中。想问下到时候通过了下载下来怎么上传到vps呀。来自一个可怜的小白求助~BTW按照教程搭建好了,就是用起来网速一般,只有300-500k。到网上翻了一下BBR加速也搞进去了但是没有明显效果,是不是没有ssl的原因?

    1. harry harry
      Chrome 81

      没必要自己去腾讯申请了再上传,按脚本自动生成就好了,毕竟你只是用来翻墙。证书可通过winscp上传到 /etc/trojan/trojan.crt 处,或者用FinalShell这个软件,ssh+文件管理都有了
      至于网速,bbr效果好不好也是看服务端到本地的网络,我是没太在意过这个加速,聊胜于无吧

      1. Kevin Wong Kevin Wong
        Chrome 78

        亲,脚本自动生成的证书过期了如何更新呀?

        1. Harry Harry
          Chrome 84

          自动更新啊

  14. Hayashi Hayashi
    Chrome 81

    你好,这个证书到期自动更新吗

    1. harry harry
      Chrome 81

      看开发者的描述是自动更新的

  15. X Meng X Meng
    Chrome 77

    谁搞的这个脚本,看着这繁体和奇怪文本对话框 怎么感觉那么像那什么

    1. harry harry
      Chrome 80

      这个脚本已经开源了,觉得不放心就去看下代码,不想用就不用,可以去找其他脚本

  16. 1111 1111
    Chrome 55

    你好 在搭建Trojan前, cloudflare的那云点灰,搭建好Trojan,在把cloudflare的云点亮,结果客户端,域名无法连接服务器,IP可以连接服务器。如果IP连接服务器就没用通过cloudflare解析域名。但是所有解析都是对的,搭建V2就一切正常,域名可以登录。为啥我的Trojan为啥域名无法登陆?谢谢了

    1. harry harry
      Chrome 80

      v2支持cdn也就是可以点亮那个云,trojan不支持,所以只能灰着

  17. MR谢 MR谢
    Chrome 76

    朋友。vultr的vps,现在用你这个搭建好用吗。之前的几种方法都不行了,v2ray也不好用。

    1. harry harry
      Chrome 80

      我一直在用vultr的,ss,ssr确实不行,经常搭了就挂,但我用Trojan和v2+ws+tls一直都好使,就是速度快慢而已

      1. 1111 1111
        Chrome 55

        你好 你搭建的Trojan也是域名登录的?我v2+ws+tls域名登录正常,但这个Trojan,客户端域名无法成功连接,只有IP能连接,也不知道自己哪有问题?

  18. sryl001 sryl001
    Chrome 80

    你好,脚本卸载重装,出现can not resolve the host,脚本不执行,怎么解决?

    1. harry harry
      Chrome 80

      这个不知道是不是脚本bug,我也不懂啊,建议去开发者的GitHub去提issue

  19. sryl001 sryl001
    Firefox 73

    你好,卸载以后无法重新安装,脚本也不执行,该如何处理?

    1. harry harry
      Chrome 80

      我一般遇到这样无法解决的问题就是重装VPS系统,比较粗暴,因为我不懂代码啊

  20. tulelary tulelary
    Chrome 69

    你好,想问下是不是我的搬瓦工IP被墙了以后就算解析成功也无法使用?

    1. harry harry
      Chrome 80

      应该是可以的啊,我之前有个IP被墙后用cf做CDN就可以用了

      1. tulelary tulelary
        Chrome 69

        挂了代理才能打开结果链接,不知道什么情况,感觉IP已经全面被Q

        1. harry harry
          Chrome 80

          我一直在用vutlr的,一般碰到IP被墙就换一个地方或者再建一个。所以也没研究过这些帮不了你了,搜索一下看看别人都是怎么解决的吧

  21. 大A 大A
    Chrome 75

    弄好,这速度真舒爽!啥也不说了!!老哥牛皮!!!!!

  22. doge doge
    Chrome 79

    请问搬瓦工 ip 被墙了,用cf做了中转后,域名可以访问,chinaz也能大部分地区 ping 通,但就是梯子没法用,是vps 的 trojan安装问题,还是说本地客户端问题,我在纠结要不要花钱换ip重装一轮

    1. jino jino
      Chrome 82

      trojan无法使用CF中转,你换v2ray,用ws+tls协议,先灰了中转,把v2ray的解析测试过了以后,再去点cf的中转按钮,这样就可以了。

    2. harry harry
      Chrome 80

      我觉得cf应该是可以做到的,之前我ip被墙用v2的ws协议是可以翻的。不同协议多试试吧,再说IP可能过一个月又好了

  23. bbq bbq
    Chrome 77

    感谢大大的教程,搭建成功。用lean openwrt的passwall设置节点可以访问。但有一个问题,使用passwall的Trojan节点访问会出现部分网站无法打开的情况,比如233blog.com, google.com.tw都无法访问,请大师测试解答一下。

    1. harry harry
      Chrome 80

      是不是过滤列表还是黑白名单的问题啊,没遇到过呢。
      可以去各种telegram群咨询下,我遇到的问题比较少,经验不足

      1. bbq bbq
        Chrome 77

        谢谢答复,我觉得可能是openwrt或者是passwall的问题,v2ray可以正常访问,ssr和trojan就不行

        1. harry harry
          Chrome 80

          有可能,可以换个插件对比试试看,ssr plus。这种东西一个是自己摸索测试,一个就看开发者有没有发现bug去改进了,毕竟都是靠热情驱动的

  24. zy zy
    Chrome 80

    成功搭建,十分感谢!

  25. 佚名 佚名
    Chrome 80

    谢谢您的教程!已经搭建成功。
    现在用一台老笔记本做了软路由,还没有相应插件,在网上看了看好像只能自编译OpenWRT来获取SSR Plus插件,实现Trojan方式的翻墙,但编译过程比较难理解。看您另一个教程编译的是硬路由的固件,请问x86架构的软路由固件应当如何编译呢?谢谢!

    1. harry harry
      Chrome 80

      只要在Target System (x86) CPU选x86就好了,后面就到luci里选自己想要的插件,试一次就知道了

      1. 佚名 佚名
        Chrome 80

        谢谢回复,现在已经在用GCP编译了。昨天下载了别人编译的OpenWRT固件,刷在电脑上发现插网线没有任何反应,不知道这个行不行,有点紧张。

        1. 佚名 佚名
          Chrome 80

          很不幸,失败了。固件刷入电脑后一过GRUB界面就黑屏了,没有任何反应。倒是学了不少Linux命令233333333

          1. harry harry
            Chrome 80

            哈哈,就是这样,折腾的乐趣啊

          2. 佚名 佚名
            Chrome 80

            重编译了固件依然不行,没办法还是用了Koolshare的。于是就想办法把lean大神的SSR Plus+编译成ipk模块装在软路由上了。这下Trojan也能用了,一高兴误删了配置好的Trojan服务器,重新配置又不行了,心累......

          3. harry harry
            Chrome 80

            呵呵,软路由好刷,多试试就好了

  26. 34 34
    Safari 13

    爽了三天,google服务器直接连不上了。SSH都连不上。

    1. 34 34
      Safari 13

      原来是看视频把服务器玩崩了,300%负荷,已升级。爽

  27. ccvh ccvh
    QQ 10

    报错了呢
    Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details

    1. harry harry
      Chrome 80

      建议将详细的操作过程写下来,到脚本作者 GitHub issues 提交

  28. VInce VInce
    Chrome 79

    为什么安装一键脚本的时候提示 (22) The requested URL returned error: 404 Not Found

    1. harry harry
      Chrome 80

      GitHub 那边的命令文件更新了,名字改了

  29. phoenix phoenix
    Chrome 79

    可以提供一下K2的opemwrt的固件含有trojan链接吗?谢谢

    1. harry harry
      Chrome 80

      lean的openwrt源码是支持的,恩山有人编译了刷k2用了,因为我现在手上没有k2也不好验证,你试试看这个
      https://www.right.com.cn/forum/thread-1655944-1-1.html

  30. CheneyChen CheneyChen
    Chrome 79

    你好

    我是家用VPS搭建。80,443端口被屏蔽掉了,请问如何更换端口?

    1. harry harry
      Chrome 80

      你是在国外是吧,如果家里的端口被封那就没招了,trojan本身就是通过443端口伪装流量的,改端口没意义。
      所以还是找海外机房吧

This is just a placeholder img.