在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:p4gefau1t/trojan-go开源软件地址:https://github.com/p4gefau1t/trojan-go开源编程语言:Go 98.2%开源软件介绍:Trojan-Go使用 Go 实现的完整 Trojan 代理,兼容原版 Trojan 协议及配置文件格式。安全、高效、轻巧、易用。 Trojan-Go 支持多路复用提升并发性能;使用路由模块实现国内外分流;支持 CDN 流量中转(基于 WebSocket over TLS);支持使用 AEAD 对 Trojan 流量进行二次加密(基于 Shadowsocks AEAD);支持可插拔的传输层插件,允许替换 TLS,使用其他加密隧道传输 Trojan 协议流量。 预编译二进制可执行文件可在 Release 页面下载。解压后即可直接运行,无其他组件依赖。 如遇到配置和使用问题、发现 bug,或是有更好的想法,欢迎加入 Telegram 交流反馈群。 简介完整介绍和配置教程,参见 Trojan-Go 文档。 Trojan-Go 兼容原版 Trojan 的绝大多数功能,包括但不限于:
同时,Trojan-Go 还扩展实现了更多高效易用的功能特性:
图形界面客户端Trojan-Go 服务端兼容所有原 Trojan 客户端,如 Igniter、ShadowRocket 等。以下是支持 Trojan-Go 扩展特性(Websocket / Mux 等)的客户端:
使用方法
特性一般情况下,Trojan-Go 和 Trojan 是互相兼容的,但一旦使用下面介绍的扩展特性(如多路复用、Websocket 等),则无法兼容。 移植性编译得到的 Trojan-Go 单个可执行文件不依赖其他组件。同时,你可以很方便地编译(或交叉编译) Trojan-Go,然后在你的服务器、PC、树莓派,甚至路由器上部署;可以方便地使用 build tag 删减模块,以缩小可执行文件体积。 例如,交叉编译一个可在 mips 处理器、Linux 操作系统上运行的、只有客户端功能的 Trojan-Go,只需执行下面的命令,得到的可执行文件可以直接在目标平台运行: CGO_ENABLED=0 GOOS=linux GOARCH=mips go build -tags "client" -trimpath -ldflags "-s -w -buildid=" 完整的 tag 说明参见 Trojan-Go 文档。 易用配置文件格式与原版 Trojan 兼容,但做了大幅简化,未指定的字段会被赋予默认值,由此可以更方便地部署服务端和客户端。以下是一个简单例子,完整的配置文件可以参见这里。 服务端配置文件 {
"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"
}
} 客户端配置文件 {
"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 语法进行配置。以下是一个客户端的例子,与上面的 客户端配置文件 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 WebSocketTrojan-Go 支持使用 TLS + Websocket 承载 Trojan 协议,使得利用 CDN 进行流量中转成为可能。 服务端和客户端配置文件中同时添加 "websocket": {
"enabled": true,
"path": "/your-websocket-path",
"hostname": "www.your-awesome-domain-name.com"
} 完整的选项说明参见 Trojan-Go 文档。 可以省略 由于 Trojan 并不支持 Websocket,因此,虽然开启了 Websocket 支持的 Trojan-Go 服务端可以兼容所有客户端,但如果要使用 Websocket 承载流量,请确保双方都使用 Trojan-Go。 多路复用在很差的网络条件下,一次 TLS 握手可能会花费很多时间。Trojan-Go 支持多路复用(基于 smux),通过一条 TLS 隧道连接承载多条 TCP 连接的方式,减少 TCP 和 TLS 握手带来的延迟,以期提升高并发情景下的性能。
你可以通过设置客户端的 "mux": {
"enabled": true
} 只需开启客户端 mux 配置即可,服务端会自动检测是否启用多路复用并提供支持。完整的选项说明参见 Trojan-Go 文档。 路由模块Trojan-Go 客户端内建一个简单实用的路由模块,以方便实现国内直连、海外代理等自定义路由功能。 路由策略有三种:
要激活路由模块,请在配置文件中添加 "router": {
"enabled": true,
"bypass": [
"geoip:cn",
"geoip:private",
"full:localhost"
],
"block": [
"cidr:192.168.1.1/24",
],
"proxy": [
"domain:google.com",
],
"default_policy": "proxy"
} 完整的选项说明参见 Trojan-Go 文档。 AEAD 加密Trojan-Go 支持基于 Shadowsocks AEAD 对 Trojan 协议流量进行二次加密,以保证 Websocket 传输流量无法被不可信的 CDN 识别和审查: "shadowsocks": {
"enabled": true,
"password": "my-password"
} 如需开启,服务端和客户端必须同时开启并保证密码一致。 传输层插件Trojan-Go 支持可插拔的传输层插件,并支持 Shadowsocks SIP003 标准的混淆插件。下面是使用
服务端配置: "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"]
} 完整的选项说明参见 Trojan-Go 文档。 构建
使用 git clone https://github.com/p4gefau1t/trojan-go.git
cd trojan-go
make
make install #安装systemd服务等,可选 或者使用 Go 自行编译: go build -tags "full" Go 支持通过设置环境变量进行交叉编译,例如: 编译适用于 64 位 Windows 操作系统的可执行文件: CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -tags "full" 编译适用于 Apple Silicon 的可执行文件: CGO_ENABLED=0 GOOS=macos GOARCH=arm64 go build -tags "full" 编译适用于 64 位 Linux 操作系统的可执行文件: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -tags "full" 致谢Stargazers over time |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论