Trojan 作为一个具有划时代的代理神器,其独特的实现方式对于很多代理工具的开发都有指导意义。可能是由于项目已经非常完美,也可能由于其他原因,Trojan 在发布到1.16.0版本后就停止了更新,让众多 Trojan 的用户深感遗憾。还好之后又出现了 Trojan-go,可以完全兼容 Trojan,并且一直在更新,对于 Trojan 来说是一种延续。
Trojan-go 采用 Go 语言开发,不仅完全兼容 Trojan,并且还根据 Go 语言的特性,有一些自己的创新性功能。例如支持多路复用的 Mux 以及Websocket。多路复用当然是可以充分发挥 Go 语言的并发优势,Websocket 则是将 Go 语言网络编程的强大性能尽情发挥。虽然 Trojan-go 的开发语言不如 Trojan 的 C++ 性能好,但是通过多路复用的加持,整体性能也不会太差,并且项目时时更新,也是值得我们尝试的动力。
本教将详细演示如何在 Linux 系统部署 Trojan-go,以及如何通过客户端连接服务器实现代理上网。
1] 下载安装 Trojan-go
Trojan-go 可以从其 >>项目地址<< 下载,当然也可以从本站的 下载页面 进行下载,目前最新的发行版为0.16.0。本站只提供 Linux 版和 Windows 版 x86 架构的发行版,项目地址包括其他架构的发行版可供选择。
Trojan-go 同 Trojan 一样,也是根据配置文件来区分是服务端还是客户端的。在 Linux 系统下,使用如下命令解压缩下载好的发行版压缩包:
# unzip -d ./trojan-go trojan-go-linux-amd64.zip
解压好的 Trojan-go 工具位于当前目录的”trojan-go”目录下,目录结构如下所示:
./trojan-go ├── example │ ├── client.json │ ├── client.yaml │ ├── server.json │ ├── server.yaml │ ├── trojan-go.service │ └── trojan-go@.service ├── geoip.dat ├── geoip-only-cn-private.dat ├── geosite.dat └── trojan-go
其中”trojan-go”是 Trojan-go 的可执行文件,三个”.dat”文件是用于区分是否进行代理的数据文件,而”example”目录中的文件则是配置示例以及添加系统服务的示例。
根据”trojan-go.service”中的配置选项,使用如下命令将文件移动到对应位置方便配置:
# mv ./trojan-go/trojan-go /usr/bin # mkdir -p /etc/trojan-go # mv ./trojan-go/example/server.json /etc/trojan-go/config.json # mv ./trojan-go/*.dat /etc/trojan-go # mv ./trojan-go/example/trojan-go.service /lib/systemd/system/
最后一条添加系统服务的命令根据使用的 Linux 系统发行版有所区别,根据所使用的系统将服务文件复制至正确位置即可。
至此,就完成了 Trojan-go 的下载和安装,之后需要对其进行配置才能使用。
2] 配置 Trojan-go 服务器
用过 Trojan 的小伙伴可能都明白,Trojan 正常工作的关键是域名证书。这个证书可以是自签名的证书,也可以是证书机构颁发的更具实际意义的证书。如果只有一台代理主机,或者说只有一个 IP 地址,其他资源都不具备,也是可以使用 Trojan 的,根据 IP 地址制作自签名证书即可,想了解的话,教程在 >>这里<<
当然,有条件话,还是通过证书机构申请一个域名证书来的把稳,况且现在的免费证书又非常多,获得简单使用方便,又是可信的证书机构,何乐而不为呢,毕竟正式机构颁发的证书比起 IP 地址的域名证书更加具有隐蔽性。
目前较为常用的免费证书就是 Let’s Encrypt 和阿里云证书,根据个人喜好自行选择。证书生成好一般会包含两个文件”cert”和”key”文件,分别是域名的公钥和私钥。将公钥文件和私钥文件保存到”/etc/trojan-go”目录,公钥文件命名为”trojan-cert.pem”,私钥文件命名为”trojan-key.pem”,之后修改 Trojan-go 的配置文件”/etc/trojan-go/config.json”,全部内容如下:
{ "run_type": "server", "local_addr": "0.0.0.0", "local_port": 443, "remote_addr": "127.0.0.1", "remote_port": 80, "password": [ "Your_trojan_password_one_here", "Your_trojan_password_two_here" ], "log_level": 1, "ssl": { "cert": "/etc/trojan-go/trojan-cert.pem", "key": "/etc/trojan-go/trojan-key.pem", "key_password": "", "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384", "cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384", "prefer_server_cipher": true, "alpn": [ "http/1.1" ], "alpn_port_override": { "h2": 81 }, "reuse_session": true, "session_ticket": false, "session_timeout": 600, "plain_http_response": "", "curves": "", "dhparam": "" }, "tcp": { "prefer_ipv4": false, "no_delay": true, "keep_alive": true, "reuse_port": false, "fast_open": false, "fast_open_qlen": 20 }, "mysql": { "enabled": false, "server_addr": "127.0.0.1", "server_port": 3306, "database": "trojan", "username": "trojan", "password": "", "key": "", "cert": "", "ca": "" }, "mux": { "enabled": true }, "router": { "enabled": true, "block": [ "geoip:private" ], "geoip":"/etc/trojan-go/geoip.dat", "geosite": "/etc/trojan-go/geosite.dat" } }
该配置文件中,只配置使用了 Trojan-go 的多路复用功能,没有配置 Websocket 连接 CDN,有兴趣的朋友可以查阅相关资料自行了解。配置文件中大部分内容不需要修改,以下配置项可以根据实际使用情况自行设置:
- local_port:指 Trojan-go 服务器侦听的端口,一般使用 HTTPS 标准的 443 端口,当然可以修改为其他未用端口
- password:指 Trojan-go 的连接密码,可以将”Your_trojan_password_one(two)_here”修改为任意可用密码,可以设置多个密码,密码字符串用”,”分隔,最后一个密码字符串后不需要使用逗号
配置文件修改完成后,理论上就可以通过命令行启动 Trojan-go 服务器了,为了使用方便,一般会将它配置成系统服务,方便管理和使用。修改系统服务目录的”trojan-go.service”文件,将”User=nobody”注释掉或者改成”User=root”,之后使用如下命令启动 Trojan-go 服务并查看运行状态:
# systemctl enable --now trojan-go # systemctl status trojan-go
图.1 启动 Trojan-go 服务器
如图.1 所示,Trojan-go 服务器启动成功,Trojan-go 服务器配置完成。
3] Trojan-go 客户端使用
Trojan-go 是不区分服务端和客户端的,工作时根据配置文件来区分工作模式。根据所运行的操作系统,选择对应的 Trojan-go 发行版,然后再修改配置文件让 Trojan-go 工作在客户端模式,就可以通过 Trojan-go 连接 服务器代理科学上网了。
Trojan-go 有 Windows 平台的发行版,配置简单使用方便,非常适合当代理客户端来用。
首先下载 Trojan-go Windows 的发行版,修改”example”目录下的”client.json”文件:
- remote_addr:修改为 Trojan-go 服务器的 IP 地址或域名
- remote_port:修改为 Trojan-go 服务器侦听的端口,默认为 443
- password:修改为 Trojan-go 服务器设置的密码
其余内容保持默认即可。
之后就可以通过命令行启动 Trojan-go 代理客户端了。在 Trojan-go 的目录里,新建一个”trojan-go.bat”的批处理文件,内容如下:
# trojan-go.exe -config ./example/client.json
双击执行该批处理文件,就会见到如下窗口:
图.2 客户端模式启动 Trojan-go
如图.2 所示,Trojan-go 在 Windwos 平台也启动成功了,此时客户端侦听的是本机1080端口,想到通过它代理上网,需要对浏览器进行相关配置。
打开浏览器的网络设置选项,设置使用 Trojan-go 代理,示例使用火狐浏览,设置如下:
图.3 设置浏览器使用 Trojan-go 客户端代理
设置完成后,就可以通过 Trojan-go 代理上网了。在使用过程中,Trojan-go 的窗口不要关闭。
当然,现在众多的 GUI 代理客户端都可以支持 Trojan-go,选择好相应工具后,添加 Trojan-go 服务器,然后根据提示内容填入相关信息即可使用,也非常方便。
这里着重介绍一下 AnXray,这款非常出色的 Android 平台 Xray 客户端,它同样是支持 Trojan-go 协议的。关于 AnXray 的使用,可以 >>点击这里<< 查阅相关教程。
打开 AnXray,选择添加服务器按钮中的手动输入,选择 Trojan Go,就会进入 Trojan-go 的设置界面,根据提示填入相就信息后,就完成了 Trojan-go 服务器的添加。
之后启动 AnXray 的 Trojan-go 服务器,会提示需要安装 Trojan Go 插件:
图.4 AnXray 启动 Trojan Go 服务器时提示缺少插件
此时,可以根据提示下载并安装插件,也可以访问 插件站点 了解详情,当然,本站也提供了常用 ARM 架构插件的下载,可以访问下载页面 获取。
下载好插件并安装成功的,就可以在 AnXray 客户端启动 Trojan-go 站点了。
以上就是 Trojan-go 的使用教程,总体来说, Trojan-go 是一款比较出色的代理工具,使用起来也非常方便。冲着作者神不断更新的执着,也是值得尊重和敬佩的。