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 是一款比较出色的代理工具,使用起来也非常方便。冲着作者神不断更新的执着,也是值得尊重和敬佩的。

发表回复

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