注意:本项目已通过 AI 辅助修复和修改,当前服务端功能正常,客户端可能存在部分问题。欢迎提交 PR 协助修复。
Trojan-Go Fork 是基于 p4gefau1t/trojan-go 的社区维护分支。由于原项目已停止维护,本 Fork 持续修复 bug、合并社区贡献并改进功能。
本 Fork 在原版基础上进行了以下改进和修复:
合并了以下社区贡献者的改进:@fregie、@rezaf28、@lakwsh、@lbsystem。
如发现其他 bug 或新需求,欢迎提交 Issue。
预构建的 Docker 镜像可从以下仓库获取:
拉取镜像:
# Docker Hub
docker pull trliwork/trojan-go-fork:latest
# GitHub Container Registry
docker pull ghcr.io/potterli20/trojan-go-fork:latest
# Podman
podman pull trliwork/trojan-go-fork:latest
运行容器:
docker run \
--name trojan-go-fork \
-d \
-v /etc/trojan-go-fork/:/etc/trojan-go-fork \
--network host \
ghcr.io/potterli20/trojan-go-fork:latest
或指定自定义配置文件路径:
docker run \
--name trojan-go-fork \
-d \
-v /path/to/host/config:/path/in/container \
--network host \
ghcr.io/potterli20/trojan-go-fork:latest \
/path/in/container/config.json
预编译二进制文件可在 Release 页面 下载,解压后直接运行,无其他依赖。
服务端:
sudo ./trojan-go-fork -server -remote 127.0.0.1:80 -local 0.0.0.0:443 \
-key ./your_key.key -cert ./your_cert.crt -password your_password
客户端:
./trojan-go-fork -client -remote example.com:443 -local 127.0.0.1:1080 -password your_password
./trojan-go-fork -config config.json
./trojan-go-fork -url 'trojan-go://password@example.com/?type=ws&path=%2Fpath&host=your-site.com'
Trojan-Go Fork 兼容原版 Trojan 协议及配置文件格式。使用以下扩展特性时,请确保通信双方均使用 Trojan-Go Fork。
编译得到的单个可执行文件,不依赖其他组件。支持交叉编译,可方便地部署到服务器、PC、树莓派甚至路由器上。
例如,交叉编译一个适用于 mips 处理器、Linux 系统、仅包含客户端功能的版本:
CGO_ENABLED=0 GOOS=linux GOARCH=mips go build -tags "client" -trimpath -ldflags "-s -w -buildid="
配置文件兼容原版 Trojan 格式,未指定的字段将使用默认值。
服务端配置 server.json:
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": ["your_awesome_password"],
"ssl": {
"cert": "your_cert.crt",
"key": "your_key.key",
"sni": "www.your-awesome-domain-name.com"
}
}
客户端配置 client.json:
{
"run_type": "client",
"local_addr": "127.0.0.1",
"local_port": 1080,
"remote_addr": "www.your-awesome-domain-name.com",
"remote_port": 443,
"password": ["your_awesome_password"]
}
同样支持 YAML 格式。以下为等价的客户端配置 client.yaml:
run-type: client
local-addr: 127.0.0.1
local-port: 1080
remote-addr: www.your-awesome-domain-name.com
remote-port: 443
password:
- your_awesome_password
完整配置选项和示例请参考
example/目录下的client.json、server.json、client.yaml、server.yaml。
Trojan-Go Fork 支持 TLS + WebSocket 承载 Trojan 协议,可利用 CDN 进行流量中转。
在服务端和客户端配置中同时添加 websocket 选项即可启用:
"websocket": {
"enabled": true,
"path": "/your-websocket-path",
"hostname": "www.your-awesome-domain-name.com"
}
hostname 可以省略,但服务端和客户端的 path 必须一致。开启 WebSocket 后,服务端可同时兼容 WebSocket 和标准 Trojan 流量。
注意:标准 Trojan 不支持 WebSocket。如需使用 WebSocket 承载流量,请确保通信双方均使用 Trojan-Go Fork。
Trojan-Go Fork 支持基于 smux 的多路复用,通过单条 TLS 连接承载多条 TCP 连接,减少 TLS 握手延迟,提升高并发场景下的性能。
启用多路复用不会提高单链路的测速,但能显著降低大量并发请求时的延迟,例如浏览包含大量图片的网页。
客户端启用多路复用:
"mux": {
"enabled": true
}
只需在客户端启用即可,服务端会自动检测并适配。
客户端内置路由模块,支持自定义分流策略。支持三种策略:
| 策略 | 说明 |
|---|---|
proxy |
代理:通过 TLS 隧道由服务端连接目标 |
bypass |
绕过:本地直接连接目标 |
block |
封锁:直接关闭连接 |
配置示例:
"router": {
"enabled": true,
"bypass": [
"geoip:cn",
"geoip:private",
"full:localhost"
],
"block": [
"cidr:192.168.1.1/24"
],
"proxy": [
"domain:google.com"
],
"default_policy": "proxy"
}
支持基于 Shadowsocks AEAD 对 Trojan 协议流量进行二次加密,确保 WebSocket 传输流量不被不可信的 CDN 识别:
"shadowsocks": {
"enabled": true,
"password": "my-password"
}
服务端和客户端必须同时开启并使用相同的密码。
支持可插拔的传输层,兼容 Shadowsocks SIP003 标准的混淆插件。以下为使用 v2ray-plugin 的示例:
注意:此配置仅作演示用途,不保证安全性。
服务端:
"transport_plugin": {
"enabled": true,
"type": "shadowsocks",
"command": "./v2ray-plugin",
"arg": ["-server", "-host", "www.baidu.com"]
}
客户端:
"transport_plugin": {
"enabled": true,
"type": "shadowsocks",
"command": "./v2ray-plugin",
"arg": ["-host", "www.baidu.com"]
}
要求 Go 版本 >= 1.22
git clone https://github.com/Potterli20/trojan-go-fork.git
cd trojan-go-fork
make
make install # 安装 systemd 服务等(可选)
git clone https://github.com/Potterli20/trojan-go-fork.git
cd trojan-go-fork
go build -tags "full"
可通过 go-install 快速安装 Go 环境:
source <(curl -L https://go-install.netlify.app/install.sh)
Go 支持通过环境变量进行交叉编译:
# 64 位 Windows
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -tags "full"
# Apple Silicon (macOS)
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -tags "full"
# 64 位 Linux
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -tags "full"
Trojan-Go Fork 服务端兼容所有原版 Trojan 客户端(如 Igniter、ShadowRocket 等)。以下为支持扩展特性(WebSocket / Mux 等)的客户端:
本项目基于以下优秀开源项目构建:
如遇到配置或使用问题、发现 bug,或有更好的想法,欢迎加入 Telegram 交流群。