back to home

Potterli20 / trojan-go-fork

社区trojan-go(欢迎各位给pr和修复bug)

149 stars
27 forks
1 issues
GoMakefileShell

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing Potterli20/trojan-go-fork in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/Potterli20/trojan-go-fork)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

已经放弃修复了 服务器端正常 但客户端不正常 如果有能力去修复,麻烦pr叭 我的go.mod都会自动更新 docker镜像 docker:https://hub.docker.com/r/trliwork/trojan-go-fork/tags 国际网络 本fork项目作者只会更新go.mod和git fetch 其他都不会,抱歉了 基于原版已修改内容 • [x] 修复多处data race风险 • [x] 修复服务端增加用户后使用websocket访问无效问题 • [x] 服务端支持使用sqlite实现用户数据持久化(仅linux) • [x] 支持指定转发buffer大小及数量限制,可以更好的控制内存占用 • [x] 服务端修复上行限速无效的问题 • [ ] 修复连接转发时阻塞可能导致goroutin泄露的问题 • [x] 修复client tcp and ws无法连接的问题 • [x] add TCP FAST OPEN fork@p4gefau1t and @fregie、@rezaf28、@lakwsh、@lbsystem 由于原项目作者已经不再维护,也不能再合入PR,同时原项目存在诸多的问题与bug。Fork了一个分支到个人项目进行维护,还存在其他bug或者需求可以提Issue 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 的绝大多数功能,包括但不限于: • TLS 隧道传输 • UDP 代理 • 透明代理 (NAT 模式,iptables 设置参考这里) • 对抗 GFW 被动检测 / 主动检测的机制 • MySQL 数据持久化方案 • MySQL 用户权限认证 • 用户流量统计和配额限制 同时,Trojan-Go 还扩展实现了更多高效易用的功能特性: • 便于快速部署的「简易模式」 • Socks5 / HTTP 代理自动适配 • 基于 TProxy 的透明代理(TCP / UDP) • 全平台支持,无特殊依赖 • 基于多路复用(smux)降低延迟,提升并发性能 • 自定义路由模块,可实现国内外分流 / 广告屏蔽等功能 • Websocket 传输支持,以实现 CDN 流量中转(基于 WebSocket over TLS)和对抗 GFW 中间人攻击 • TLS 指纹伪造,以对抗 GFW 针对 TLS Client Hello 的特征识别 • 基于 gRPC 的 API 支持,以实现用户管理和速度限制等 • 可插拔传输层,可将 TLS 替换为其他协议或明文传输,同时有完整的 Shadowsocks 混淆插件支持 • 支持对用户更友好的 YAML 配置文件格式 图形界面客户端 Trojan-Go 服务端兼容所有原 Trojan 客户端,如 Igniter、ShadowRocket 等。以下是支持 Trojan-Go 扩展特性(Websocket / Mux 等)的客户端: • Qv2ray:跨平台客户端,支持 Windows / macOS / Linux,使用 Trojan-Go 核心,支持所有 Trojan-Go 扩展特性。 • Igniter-Go:Android 客户端,Fork 自 Igniter,将 Igniter 核心替换为 Trojan-Go 并做了一定修改,支持所有 Trojan-Go 扩展特性。 使用方法 • 快速启动服务端和客户端(简易模式) • 服务端 • 客户端 • 使用配置文件启动客户端 / 服务端 / 透明代理 / 中继(一般模式) • 使用 URL 启动客户端(格式参见文档) • 使用 Docker 部署 或者 特性 一般情况下,Trojan-Go 和 Trojan 是互相兼容的,但一旦使用下面介绍的扩展特性(如多路复用、Websocket 等),则无法兼容。 移植性 编译得到的 Trojan-Go 单个可执行文件不依赖其他组件。同时,你可以很方便地编译(或交叉编译) Trojan-Go,然后在你的服务器、PC、树莓派,甚至路由器上部署;可以方便地使用 build tag 删减模块,以缩小可执行文件体积。 例如,交叉编译一个可在 mips 处理器、Linux 操作系统上运行的、只有客户端功能的 Trojan-Go,只需执行下面的命令,得到的可执行文件可以直接在目标平台运行: 完整的 tag 说明参见 Trojan-Go 文档。 易用 配置文件格式与原版 Trojan 兼容,但做了大幅简化,未指定的字段会被赋予默认值,由此可以更方便地部署服务端和客户端。以下是一个简单例子,完整的配置文件可以参见这里。 服务端配置文件 : 客户端配置文件 : 可以使用更简明易读的 YAML 语法进行配置。以下是一个客户端的例子,与上面的 等价: 客户端配置文件 : WebSocket Trojan-Go 支持使用 TLS + Websocket 承载 Trojan 协议,使得利用 CDN 进行流量中转成为可能。 服务端和客户端配置文件中同时添加 选项即可启用 Websocket 支持,例如 完整的选项说明参见 Trojan-Go 文档。 可以省略 , 但服务端和客户端的 必须一致。服务端开启 Websocket 支持后,可以同时支持 Websocket 和一般 Trojan 流量。未配置 Websocket 选项的客户端依然可以正常使用。 由于 Trojan 并不支持 Websocket,因此,虽然开启了 Websocket 支持的 Trojan-Go 服务端可以兼容所有客户端,但如果要使用 Websocket 承载流量,请确保双方都使用 Trojan-Go。 多路复用 在很差的网络条件下,一次 TLS 握手可能会花费很多时间。Trojan-Go 支持多路复用(基于 smux),通过一条 TLS 隧道连接承载多条 TCP 连接的方式,减少 TCP 和 TLS 握手带来的延迟,以期提升高并发情景下的性能。 > 启用多路复用并不能提高测速得到的链路速度,但能降低延迟、提升大量并发请求时的网络体验,例如浏览含有大量图片的网页等。 你可以通过设置客户端的 选项 字段启用它: 只需开启客户端 mux 配置即可,服务端会自动检测是否启用多路复用并提供支持。完整的选项说明参见 Trojan-Go 文档。 路由模块 Trojan-Go 客户端内建一个简单实用的路由模块,以方便实现国内直连、海外代理等自定义路由功能。 路由策略有三种: • 代理:将请求通过 TLS 隧道进行代理,由 Trojan 服务端与目的地址进行连接。 • 绕过:直接使用本地设备与目的地址进行连接。 • 封锁:不发送请求,直接关闭连接。 要激活路由模块,请在配置文件中添加 选项,并设置 字段为 : 完整的选项说明参见 Trojan-Go 文档。 AEAD 加密 Trojan-Go 支持基于 Shadowsocks AEAD 对 Trojan 协议流量进行二次加密,以保证 Websocket 传输流量无法被不可信的 CDN 识别和审查: 如需开启,服务端和客户端必须同时开启并保证密码一致。 传输层插件 Trojan-Go 支持可插拔的传输层插件,并支持 Shadowsocks SIP003 标准的混淆插件。下面是使用 的一个例子: > **此配置并不安全,仅作为演示** 服务端配置: 客户端配置: 完整的选项说明参见 Trojan-Go 文档。 构建 > 请确保 Go 版本 >= 1.18 使用 进行编译: 或者使用 Go 自行编译: Jrohy/go-install Go 支持通过设置环境变量进行交叉编译,例如: 编译适用于 64 位 Windows 操作系统的可执行文件: 编译适用于 Apple Silicon 的可执行文件: 编译适用于 64 位 Linux 操作系统的可执行文件: 致谢 • Trojan • V2Fly • utls • smux • go-tproxy