Trojan-Go – 超越Trojan-GFW原版的科学上网工具 | 支持多路复用提升并发和CDN流量中转

Trojan,全称Trojan-GFW,是新一代的抗GFW封锁的协议,通过将流量完全伪装成互联网最常见的HTTPS流量,绕过GFW封锁,实现科学上网。Trojan比V2Ray要轻量,配置简单,速度稍快,而且穿透GFW能力强。Trojan协议的实现目前主要两个方式最为流行,分别是Trojan-GFW 和其分支项目Trojan-Go,我这里会做详细介绍。

1、Trojan-GFW 是什么?

Trojan-GFW,简称Trojan,是一把通往自由互联网世界的万能钥匙。Trojan原版不使用 Websocket 混淆,Trojan-GFW 仅支持Websocket,但是均不支持 Cloudflare CDN 流量中转。

Trojan-GFW项目地址:https://github.com/trojan-gfw/trojan

2、Trojan-Go 是什么?相比于 Trojan-GFW 有哪些优点?

Trojan-Go 是使用Go语言实现的完整Trojan代理,与Trojan协议以及Trojan-GFW版本的配置文件格式完全兼容,而且更加安全、高效、轻巧、易用。Trojan-Go 支持使用多路复用提升并发性能,使用路由模块实现国内直连;支持CDN流量中转(基于WebSocket over TLS/SSL);支持基于ACME协议从Let’s Encrypt自动申请和更新HTTPS证书,只需提供域名和邮箱;直接运行解压得到的执行文件即可,无其他组件依赖。

Trojan-Go项目官网:https://github.com/p4gefau1t/trojan-go

Trojan-Go支持并且兼容Trojan-GFW的绝大多数功能,包括但不限于:

  • TLS/SSL隧道传输
  • 透明代理 (NAT模式,iptables设置参见这里)
  • UDP代理
  • 对抗GFW被动/主动检测的机制
  • MySQL数据库支持
  • 流量统计,用户流量配额限制
  • 从数据库中的用户列表进行认证
  • TCP Keep Alive,TCP Fast Open,端口复用等TCP选项

同时,Trojan-Go还扩展了更多高效易用的功能特性:

  • 简易模式,快速部署使用
  • Socks5/HTTP代理自动适配
  • 多平台和多操作系统支持,无特殊依赖
  • 多路复用,降低延迟,提升并发性能
  • 自定义路由模块,可实现国内直连/广告屏蔽等功能
  • Websocket传输支持,用于实现CDN流量中转(基于WebSocket over TLS/SSL)和对抗GFW中间人攻击
  • 自动化HTTPS证书申请,从Let’s Encrypt自动申请和更新HTTPS证书
  • TLS指纹伪造,绕过GFW针对TLS Client Hello的特征识别
  • 基于gRPC的API支持,支持动态用户管理和流量速度限制
  • 服务端支持处理Trojan协议明文(TCP明文传输),以适应前置nginx等服务器的场景

简单地说,那就是 trojan-gfw 和 trojan-go 均支持Trojan协议;trojan-go 兼容 trojan-gfw 配置文件,服务端可以兼容所有Trojan-GFW的客户端,如Trajan-Qt5、Igniter、ShadowRocket等;trojan-go 支持多路复用提高并发性能,而且还支持 CDN 流量中转。trojan-go 比 trojan-gfw 使用更简单,而且功能更强大,未来可期。从众多实际测试来看,Trojan-Go是目前表现最好的Trojan翻墙上网协议,比VLESS协议还要出色不少。

3、Trojan-Go 一键搭建教程

为了更加简单方便地搭建 Trojan-Go 服务器,我们使用傻瓜式Trojan-Go一键安装脚本,是 “Trojan-Go+Websocket+Tls+CDN”2合1一键搭建脚本,只需要按照脚本提示信息一步步操作即可。

准备工作:至少一个域名、一台非大陆地区的VPS,并已经将域名成功解析到VPS的IP地址。注册域名推荐您使用NameSilo 或 Namecheap,购买VPS推荐使用VultrHostwinds搬瓦工(BandwagonHOST,Trojan-Go 一键搭建脚本的整个安装过程大约需要30分钟以上。另外,在 Trojan-Go 服务器搭建完成之前,请不要为域名加上 Cloudflare CDN 防护(也就是部署完成之前小云朵必须是灰色的),否则会造成安装部署失败。

Trojan-Go 一键脚本支持的系统环境:

Debian 9、10
Ubuntu 16.04 、18.04、19.10
Centos 7、8

(1)安装 curl

yum -y install curl #CentOS
apt -y install curl #Debian/Ubuntu

(2)执行 Trojan-Go 一键安装脚本

bash -c "$(curl -fsSL https://raw.githubusercontent.com/JeannieStudio/all_install/master/trojan-go_install.sh)"

(3)安装BBR加速

wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh"
chmod +x tcp.sh
./tcp.sh

安装成功后,有如下提示信息,如图所示:

(4)脚本管理命令

/etc/trojan_mgr.sh

如果你要开启 “Websocket+TLS+CDN”,可执行以上管理命令,结果如下图所示:

我们选择“6”即可,另外,我们还可以修改密码,关闭或重启Trojan-Go,以及关闭或重启nginx,更新HTTPS证书等。

至此,Trojan-Go 服务器就搭建完成了!你现在就可以配合Trojan-Go客户端进行科学上网了。

注意事项:如果你的 Trojan-Go 开启了 CDN,那么暂时是不支持手机端客户端使用的,只能在Windows、MacOS和Linux上面使用。

除此之外,Jrohy大神的“Trojan多用户管理部署程序”也已经支持一键搭建Trojan-Go服务器了,你可以参考文章 [Trojan一键搭建教程]使用 Vultr VPS 自建Trojan/Trojan-GO服务器及客户端配置多用户实现科学上网,Jrohy大佬总是出精品,非常好用。

4、Trojan-Go 客户端下载及配置使用教程

Igniter、ShadowRocket,但是暂时不支持 Trojan-Go 的扩展特性。目前,可完美支持 Trojan-Go 所有功能的客户端有以下3个:

(1)Trojan-Qt5

Trojan-Qt5是一款近乎全能的跨平台客户端,支持 Windows/MacOS/Linux,使用 Trojan-Go 核心,支持所有 Trojan-Go 扩展特性。具体配置参数,如下图所示:

如果您没有启用“Websocket+TLS+CDN”模式,那么只需要配置好前3项即可,否则下面4项也需要完整配置好。

(2)Igniter-Go

Igniter-Go是一款Android安卓客户端,Fork自Igniter,将Igniter核心替换为Trojan-Go并做了一定修改,支持所有Trojan-Go扩展特性。

Igniter-Go项目官网:https://github.com/p4gefau1t/trojan-go-android

(3)Qv2ray

Qv2ray是一款使用 Qt 框架的跨平台 V2Ray 客户端,可视化UI设计,使用起来非常方便。Qv2ray支持 Windows/Linux/MacOS系统,还可以通过
插件系统支持 SS/SSR/Trojan/Trojan-Go/NaiveProxy协议,也算是一个小全能客户端了。

关于Qv2ray的更多详细教程,请参考文章 Qv2ray – 一款能媲美 Trojan-Qt5 的跨平台V2Ray客户端 | 使用插件可支持SS/SSR/Trojan/Trojan-Go/NaiveProxy等协议

关于更多Trojan/Trojan-Go客户端使用教程,请参考文章 科学上网神器Trojan搭建、Trojan客户端下载与配置使用教程以及优质Trojan机场推荐

5、优质Trojan机场推荐

不管你是萌新,还是老鸟,使用Trojan一键搭建脚本的话,Trojan机场搭建真的很简单,喜欢折腾的用户可以尝试手动搭建配置。如果你不喜欢折腾,只想要一个稳定可靠的科学上网工具,那么我推荐你选择Trojan机场。

有没有比较好的Trojan机场推荐看?稳定好用的Trojan机场推荐你使用 CMYNetwork红莓网络 或 GLaDOS,CMYNetwork红莓网络是一家中高端的SSR/Trojan机场,在全球拥有超过90个优质的服务器节点,其中包括45条 IPLC/IEPL 内网专线、1条企业专线和1条游戏专线等昂贵的顶级线路,还有超过15条 CN2 GIA 线路以及大约30条直连线路,性价比很高;GLaDOS是性价比非常高的V2Ray/Trojan机场,老板是技术派,使用独立自研的后台管理面板。

本文由一灯不是和尚更新于2022年12月26日;如果您有什么意见或建议,请在文章下面评论区留言反馈。

对“Trojan-Go – 超越Trojan-GFW原版的科学上网工具 | 支持多路复用提升并发和CDN流量中转”的 27 条回复:

  • —–END CERTIFICATE—–
    [Mon Nov 21 14:49:58 CST 2022] Your cert is in: /root/.acme.sh/xin.shop_ecc/xinnhan.shop.cer
    [Mon Nov 21 14:49:58 CST 2022] Your cert key is in: /root/.acme.sh/xin.shop_ecc/xinhan.shop.key
    [Mon Nov 21 14:49:58 CST 2022] The intermediate CA cert is in: /root/.acme.sh/xinnvn.shop_ecc/ca.cer
    [Mon Nov 21 14:49:58 CST 2022] And the full chain certs is there: /root/.acme.sh/xinnn.shop_ecc/fullchain.cer
    [信息] TLS 证书测试签发成功,开始正式签发
    [Mon Nov 21 14:50:01 CST 2022] Using CA: https://acme.zerossl.com/v2/DV90
    [Mon Nov 21 14:50:01 CST 2022] Standalone mode.
    [Mon Nov 21 14:50:01 CST 2022] Create account key ok.
    [Mon Nov 21 14:50:01 CST 2022] No EAB credentials found for ZeroSSL, let’s get one
    [Mon Nov 21 14:50:01 CST 2022] acme.sh is using ZeroSSL as default CA now.
    [Mon Nov 21 14:50:01 CST 2022] Please update your account with an email address first.
    [Mon Nov 21 14:50:01 CST 2022] acme.sh –register-account -m my@example.com
    [Mon Nov 21 14:50:01 CST 2022] See: https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA
    [Mon Nov 21 14:50:01 CST 2022] Please add ‘–debug’ or ‘–log’ to check more details.
    [Mon Nov 21 14:50:01 CST 2022] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh
    [错误] TLS 证书生成失败

    请问一直出这个问题,怎么操作?

      • 抱歉,再次打扰。
        我分别用了本站的
        “Trojan-Go+Websocket+Tls+CDN”2合1一”(报错如上)、
        “trojan多用户”脚本不报错,日志报错 :[2022-11-21 02:16:01] [FATAL] fatal: use_certificate_chain_file: No such file or directory
        VPS一用racknerd,之前用多用户面板一直正常科学上网,然后多次还原 Debian9 安装都不行,还买了一域名换了,现在有点蒙了,搞不清楚原因。

        • RackNerd属于风控严重的区域,我建议使用冷门一点的VPS商家产品,今年对Trojan协议封锁也是非常针对的。

      • 最终使用一个8合一的脚本安装成功,用了两年都相安无事,最近把我的433封了,气死了

  • 呃,我的问题解决了,tls_generate() {
    if [[ -f “/data/${domain}/fullchain.crt” ]] && [[ -f “/data/${domain}/privkey.key” ]]; then
    echo -e “${Info}证书已存在……不需要再重新签发了……”
    else
    # if “$HOME”/.acme.sh/acme.sh –issue -d “${domain}” –standalone -k ec-256 –force –test; then
    # echo -e “${Info} TLS 证书测试签发成功,开始正式签发”
    # rm -rf “$HOME/.acme.sh/${domain}_ecc”
    # sleep 2
    # else
    # echo -e “${Error}TLS 证书测试签发失败 ”
    # rm -rf “$HOME/.acme.sh/${domain}_ecc”
    # exit 1
    # fi

    if “$HOME”/.acme.sh/acme.sh –issue -d “${domain}” –standalone -k ec-256 –force; then
    echo -e “${Info} TLS 证书生成成功 ”
    sleep 2
    [[ ! -d “/data” ]] && mkdir /data
    [[ ! -d “/data/${domain}” ]] && mkdir “/data/${domain}”
    if “$HOME”/.acme.sh/acme.sh –installcert -d “${domain}” –fullchainpath /data/${domain}/fullchain.crt –keypath /data/${domain}/privkey.key –ecc –force; then
    echo -e “${Info}证书配置成功 ”
    sleep 2
    fi
    else
    echo -e “${Error} TLS 证书生成失败”
    rm -rf “$HOME/.acme.sh/${domain}_ecc”
    exit 1
    fi
    fi
    }
    注释掉–test这个步骤就可以了,这个操作会因为.acme.sh中获取token超时时间写死为了1s,导致获取token失败,从而认证失败

  • 签名一直失败,希望大神能赐教,谢谢!

    [信息] 安装 tls 证书生成脚本 完成
    [Fri Feb 18 12:18:03 CST 2022] Using ACME_DIRECTORY: https://acme-staging-v02.api.letsencrypt.org/directory
    [Fri Feb 18 12:18:03 CST 2022] Using CA: https://acme-staging-v02.api.letsencrypt.org/directory
    [Fri Feb 18 12:18:03 CST 2022] Standalone mode.
    [Fri Feb 18 12:18:03 CST 2022] Creating domain key
    [Fri Feb 18 12:18:03 CST 2022] The domain key is here: /root/.acme.sh/times.nutsmxberry.xyz_ecc/times.nutsmxberry.xyz.key
    [Fri Feb 18 12:18:03 CST 2022] Single domain='times.nutsmxberry.xyz'
    [Fri Feb 18 12:18:03 CST 2022] Getting domain auth token for each domain
    [Fri Feb 18 12:18:04 CST 2022] Getting webroot for domain='times.nutsmxberry.xyz'
    [Fri Feb 18 12:18:04 CST 2022] Verifying: times.nutsmxberry.xyz
    [Fri Feb 18 12:18:04 CST 2022] Standalone mode server
    [Fri Feb 18 12:18:06 CST 2022] Pending, The CA is processing your order, please just wait. (1/30)
    [Fri Feb 18 12:18:08 CST 2022] times.nutsmxberry.xyz:Verify error:Fetching http://times.nutsmxberry.xyz/.well-known/acme-challenge/7aNN-zt1tOgUmMH-7XFWEVyVTJTz-lBoFyhEIJ1FWSI: Connection refused
    [Fri Feb 18 12:18:08 CST 2022] Please add '--debug' or '--log' to check more details.
    [Fri Feb 18 12:18:08 CST 2022] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh

  • 请教一下,这里也是tls证书签发失败.文章里说的小云朵是灰色的是说的什么?是需要到Cloudflare CDN去操作吗?

    • 对,需要到Cloudflare去管理域名,变成灰色的意思就是没有使用Cloudflare免费CDN节点的状态,这时候解析域名对应的IP地址是服务器的真实IP,否则就是免费CDN节点IP地址了。

    • 你的域名是不是在安装tls之前套了CDN,一般是由于使用Cloudflare解析没有提前把小云彩点成灰色或你的域名还没有解析生效,稍等片刻。如果不是这些原因,请重新安装。

    • 有,是禁止用于科学上网代理的。所有国内服务商的机器都一样,只是对境外服务器的管理相对宽松一些。不过,请勿关注和发表不该关注的内容和言论,否则风险很高。

    • 请问,你是不是套了 Cloudflare CDN?目前,Trojan-GO在PC端暂不支持CDN,仅移动端可用。另外,我非常不建议网站和VPS共用一个服务器,当然你网站就是为了伪装就另说了。

      • 谢谢老哥,我配置ok了,速度比我之前装的v2ray快了。我套了 Cloudflare CDN之后,Trojan-GO在PC端确实连接超时,然后就关了WS,那这样的话被和谐的几率是不是就高了?

        • 不会,我经常用Trojan都很稳定,更不要说不套CDN的Trojan-Go了,安心使用就好。平时流量不是很大,还是很抗封锁的。

  • 这个脚本安装的不是最新版trojan-go. 是固定的0.4.10版本。已经过时了
    新版本trojan-go还抛弃了证书申请功能. 目前搭建起来存在难度。

    • 可以自己把执行代码下载下来,修改成最新的Trojan-Go版本,也可以安装后修改,目前还没有更新一键脚本,等后面的升级吧!而且老版本并不影响使用,用Trojan-Go主要看重的其实不是并发,而是可以加CDN隐藏保护IP,Trojan-Go的多路复用的效果相对于Trojan来说并不太明显,我目前测试如此。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注