Trojan 搭建记录

Trojan 是一个新兴的工具,主要是提供一种方式,在仅 TLS 的情况下达成网络隧道的建立。Trojan 具有多种协议 TLS,可以避免主动/被动检测和网络运营商 QoS 限制。


1、Trojan 简介

Trojan 模仿了最常见的协议 HTTPS (TLS) 以欺骗网络运营商并达成规避网络运营商 QOS 限制。

Github 项目 [ 链接 ]
文档 [ 链接 ]


2、Trojan 使用

先到 Github 上下载对应服务器版本的 Release 应该不用多说了。

默认 trojan 程序启动时要搭配一个配置文件,会从程序当前目录找 config.json。
或者携带参数指定配置文件运行也可以 ./trojan config.json

关于 Systemd 服务,默认位置在 .examples/trojan.service-example,你可以复制该文件到服务文件夹下,并配置自动启动

cp -a ./examples/trojan.service-example /etc/systemd/system/trojan.service
systemctl enable trojan
systemctl start trojan

如果你需要降用户权限运行 Trojan,或者喜欢 [email protected] 的方式管理多配置文件,可以参考下方配置文件。

cat /etc/systemd/system/[email protected]

[Unit]
Description=trojan %i
Documentation=man:trojan(1) https://trojan-gfw.github.io/trojan/config https://trojan-gfw.github.io/trojan/
After=network.target network-online.target nss-lookup.target mysql.service mariadb.service mysqld.service

[Service]
Type=simple
StandardError=journal
User=trojan
Group=trojan
AmbientCapabilities=CAP_NET_BIND_SERVICE
ExecStart=/usr/bin/trojan/trojan /etc/trojan/%i.json
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=1s

[Install]
WantedBy=multi-user.target

参考样例
程序文件路径 /usr/bin/trojan/trojan
配置文件路径 /etc/trojan/demoserver.json
服务启动方式 systemctl start [email protected]


3、Trojan 配置

在官方的文档中其实有很详细的配置说明,参考 [ 链接 ]

对默认配置编辑就可以了,在此只提点几个重要的地方


3.1、Client 端 remote_addr 解析问题

默认 Trojan 首先是对域名进行地址转换为 IP,然后再直接访问这个 IP
但是如果这个域名支持 IPV6 解析,那转换后就使用 IPV6 进行访问了。
此时如果你的服务器没有监听 IPV6 端口,就会导致无法使用


3.2、Linux 下 Client 证书的问题

目前 Trojan Client 在 Linux 下需要手动指定 CA 路径,大多数 Linux 发行版的 CA 路径均为

/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

所以你如果使用的是 Linux 版,需要手动修改证书路径为

"cert": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem",

当发生该问题时,可以查看到关键错误日志字段如下 ( “log_level”: 1 )

Client: SSL handshake failed with *.*.*.* : certificate verify failed
Server: SSL handshake failed : tlsv1 alert unknown ca

3.3、内网安全问题

默认 trojan 是可以访问服务端 127.0.0.1 相关的端口,所以建议封禁
默认 trojan 使用的用户权限也可以缩减到普通用户
(注意 4096 以下端口需要 root 权限放通)


4、备注

点赞