README的“Requirements”和“Usage”章节要求Linux VPS / VDS exit node,并给出--socks5 :1080示例。
OpenFlux:用Yandex与MAX传输承载SOCKS5 TCP隧道
一个给开发者研究TCP隧道的Go工具,客户端暴露SOCKS5,传输可换Yandex或MAX。
🧭 决策指南
为什么现在热: 无法从材料判断
适合,如果你
-
你需要在Linux VPS上部署exit node,并让桌面客户端通过SOCKS5 :1080出网。
-
你正在研究可插拔TCP传输,愿意基于transport/transport.go实现Transport接口。README的“Implementing custom transports”章节明确允许实现Transport接口并在main.go中注册。
-
你的构建环境能够提供Go 1.26.3+、Android NDK 27.0.12077973+或Xcode 26.6+。README的“Requirements”章节列出了Go、Android NDK和XCode的最低版本。
不适合,如果你
-
你必须使用重要MAX账号,或账号丢失会造成关键影响。README的MAX警告明确写着不要使用primary or important MAX account,也不要使用丢失后会造成关键影响的账号。
-
你不能接受外部VPS导致MAX账号限制,或不能接受限制在停止OpenFlux后持续。README的MAX警告指出external VPS可能导致account restrictions,restriction may persist after stopping OpenFlux。
-
你需要成熟稳定的MAX传输,而不是实验性WebRTC DataChannel后端。README明确写着MAX transport should be considered experimental until the blocking mechanism is understood。
-
你没有root权限或无法配置Linux exit node的iptables规则。README的“Setting up exit node”要求root access,并给出iptables配置命令。
前置条件
- Go v. 1.26.3+,用于构建desktop client / exit node binary。
- Android NDK v.27.0.12077973+,用于构建Android client binary。
- XCode v. 26.6+,用于构建iOS client binary。
- Linux VPS / VDS exit node。
- exit node需要root access。
- Yandex传输仅支持legacy Yandex document editor。
- MAX传输需要MAX token和User ID,对应--maxToken与--maxUid。
第一步命令(README 原文)
go mod tidy
要注意
-
exit node应将RST规则限定到专用egress IP,README不建议对整台主机直接DROP所有出站RST。README的“Setting up exit node”章节说明host-wide -j DROP会让关闭端口表现为filtered,并影响无关连接。
-
-m owner --uid-owner在此场景无效,因为破坏隧道的RST由没有owning socket的kernel生成。README的exit node说明明确指出owner match never fires。
-
Yandex出口命令需要legacy文档URL,并使用--exit-node、--local-ip和--url参数。README给出的scoped命令包含--exit-node --local-ip 203.0.113.10 --url "YOUR_YANDEX_DOC_URL"。
-
iOS客户端不是单纯命令行产物,还涉及SwiftUI、XcodeGen和liboflux.a。README的Structure章节列出ios-app、SwiftUI、XcodeGen与liboflux.a。
材料未说明
- README没有提供Yandex或MAX传输的吞吐量、延迟和并发连接基准。
- README没有说明MAX账号限制的触发条件、覆盖范围和申诉方式。
- README没有给出Android APK或iOS TestFlight的版本号与兼容设备清单。
- README没有说明Linux VPS所需的CPU、内存、带宽和发行版版本。
- README没有提供安全审计、加密机制或Transport数据保密性的独立说明。
- 项目只有1个版本rel 0.0.1和10个最近提交,README没有说明后续发布计划。
💡 深度解析
6
视情况
我有一台 Linux VPS/VDS 和 root 权限,准备运行 Exit Node;我不想让抑制 RST 的 iptables 规则影响宿主机其他连接,OpenFlux 是否适合?
适合读者: 管理 Linux VPS/VDS、拥有 root 权限并需要隔离用户态 TCP 出口连接的网络实验工程师
视情况,只有能提供专用出口 IP 或独立 network namespace/container 时才适合。
- README 要求 Exit Node 具备 root 权限,并说明 gvisor 用户态 TCP 栈没有内核 socket,内核会对回复发送 RST,必须抑制。
- 推荐把规则限定到 dedicated egress IP,例如对
203.0.113.10的出站 RST 执行 DROP,并用--local-ip启动 Exit Node。 - README 还建议把 Exit Node 放入独立 network namespace 或 container,避免规则触及宿主机主服务。
- 不应默认采用全主机 DROP:README 明确指出它会让关闭端口表现为 filtered,并影响无关连接。若只有共享宿主机且无法隔离,不适合。
- Usage / Setting up exit node:`You must have root access on exit node machine`
- Usage:`The exit node's TCP connections live in a userspace stack (gvisor)`
- Usage:`Recommended (scoped to a dedicated egress IP)`
- Usage:`Even cleaner: run the exit node in its own network namespace / container`
- Usage:`A blanket -j DROP on all outbound RSTs makes every closed port answer with silence`
sudo iptables -A OUTPUT -p tcp --tcp-flags RST RST -s 203.0.113.10 -j DROP
sudo ./universal-bypass-tool --exit-node --local-ip 203.0.113.10 \
--url "YOUR_YANDEX_DOC_URL" --debug
适合
我只想在 Linux、macOS 或 Windows 桌面上运行客户端,让浏览器连接 localhost:1080,并通过已有 Exit Node 使用 Yandex Transport;OpenFlux 是否适合?
适合读者: 只需要在桌面 Linux、macOS 或 Windows 上让浏览器通过本地 SOCKS5 使用 Yandex Transport 的开发者
适合,这正是 README 给出的最小桌面使用路径,但前提是你已有可访问的 Exit Node 和 Yandex 文档 URL。
- 桌面客户端通过
--client启动 SOCKS5,默认监听地址是:1080,浏览器可将代理设置为localhost:1080。 - README 的 Requirements 要求准备 Go 1.26.3+;桌面客户端和 Exit Node 共用 Go 构建流程。
- 默认 Transport 是
yandex,客户端命令只需提供 Yandex 文档 URL、SOCKS5 地址和可选的 debug 日志。 - 这不是无服务器代理:README 的总体架构仍要求远端 Exit Node;同时只支持 legacy Yandex document editor,服务端能力或账号权限变化可能导致连接失败。
- Requirements:`Golang v. 1.26.3+`
- Usage / Setting up desktop client:`./universal-bypass-tool --client --url "YOUR_YANDEX_DOC_URL" --socks5 :1080 --debug`
- Usage:`Then set up SOCKS5 proxy in your browser at localhost:1080.`
- Flags:`--socks5` 默认值为 `:1080`;`--transport` 默认值为 `yandex`
- Setting up exit node:`Only legacy Yandex document editor is supported`
./universal-bypass-tool --client --url "YOUR_YANDEX_DOC_URL" --socks5 :1080 --debug
适合
我正在比较 Yandex Docs 游标消息和 MAX WebRTC DataChannel 对 TCP 隧道的影响,并希望让浏览器通过 SOCKS5 接入;OpenFlux 是否适合做这项实验?
适合读者: 研究 Yandex Docs 与 MAX WebRTC DataChannel 承载差异、需要通过 SOCKS5 验证 TCP 隧道行为的网络协议研究人员
适合,因为项目本身就是面向网络栈研究的可插拔 TCP 隧道原型。
- 架构明确为 Client(SOCKS5)→ Transport → Exit Node → Internet,浏览器无需理解底层传输。
- 当前已有两个可替换后端:Yandex 通过 Docs 游标消息发送数据,MAX 通过 WebRTC DataChannel 发送数据。
- Transport 接口与
--transport参数允许切换承载通道,适合对比连通性、延迟和断线行为。 - 但 README 没有给出吞吐、延迟、并发或重连基准;MAX 还明确属于实验性功能,并可能导致账号限制,因此结果不能直接代表生产网络性能。
- Overview:`Client (SOCKS5) --> Transport --> Exit Node --> Internet`
- Overview:`Yandex - sends packets via Yandex Docs cursor messages`;`Max - sends packets via WebRTC DataChannel`
- Flags:`--transport`,默认值为 `yandex`
- MAX 警告:`MAX transport should be considered experimental`
./universal-bypass-tool --client --url "YOUR_YANDEX_DOC_URL" --socks5 :1080 --debug
适合
我用 Go 1.26.3+ 开发新的消息或 WebRTC Transport,希望保留现有 TCP 隧道和 SOCKS5 入口;OpenFlux 是否适合作为扩展基线?
适合读者: 使用 Go 1.26.3+、想新增非传统承载通道并同时维护客户端和 Exit Node 的协议开发者
适合,原因是 README 直接公开了 Transport 扩展点,而不是要求修改整个隧道核心。
transport/transport.go定义了 Transport 接口,Yandex 和 MAX 已作为现有后端放在独立目录中。- README 明确允许实现该接口,并在
main.go的 switch block 中注册自定义 Transport。 - 压缩封装、TCP tunnel、SOCKS5、数据包解析等组件已经分层,新增承载通道可以复用客户端与 Exit Node 的连接路径。
- 但项目只有 0.0.1 版本,README 没有说明接口稳定性、生命周期约定、超时、取消、背压、重连和错误传播语义;这些细节需要开发者自行从代码确认。
- Implementing custom transports:`You are free to implement the Transport interface from transport/transport.go and register your custom transport in main.go switch block.`
- Structure:`transport/transport.go # Transport interface`
- Structure:`compressor.go`、`tunnel/tunnel.go`、`socks5/`、`network/`
- 项目数据:最新版本为 `0.0.1`,发布数为 `1`
go mod tidy
go build -o universal-bypass-tool .
视情况
我使用 Xcode 26.6+,需要 iOS Network Extension 提供系统级 VPN,并希望把 Go 核心编译成静态库供 SwiftUI 客户端使用;OpenFlux 是否适合?
适合读者: 使用 Xcode 26.6+、需要 iOS Network Extension 系统级 VPN 客户端并能接受 SwiftUI 与 cgo 构建链的 iOS 工程师
视情况,项目具备明确的 iOS 集成路径,但它更像构建与测试原型,不是已经完成生产交付的 iOS VPN 产品。
- Requirements 要求 Xcode 26.6+;仓库包含
export_ios.go,并标注为 iOS 静态库的 cgo bridge。 - Structure 列出
ios-app/、SwiftUI 客户端、liboflux.a,以及build_ios.sh和build_ios_app.sh两条构建路径。 - Clients 说明 iOS 通过 Network Extension 提供 system-wide VPN,并提供 TestFlight beta,证明已有移动端接入路线。
- 但 README 没有说明 Apple provisioning、Network Extension entitlement、签名、设备兼容性、App Store/TestFlight 交付配置或审计结果;若目标是生产发布,现有资料不足。
- Requirements:`XCode v. 26.6+`
- Structure:`export_ios.go # cgo bridge for the iOS static library`
- Structure:`ios-app/ # SwiftUI iOS client` 与 `links liboflux.a`
- Clients:`System-wide VPN via Network Extension`
- Build:`build_ios.sh` 与 `build_ios_app.sh`
export XCODE_PATH="<your Xcode.app path>" # optional, defaults to /Applications/Xcode.app
./build_ios.sh
视情况
我必须用 Android NDK 27.0.12077973+ 构建 OpenFlux Android 客户端,并希望获得可安装的 APK;README 是否提供了足够明确的构建路径?
适合读者: 需要构建 Android 客户端、使用 Android NDK 27.0.12077973+ 并让移动端接入 OpenFlux SOCKS5/TCP 隧道的移动开发者
视情况,README 给出了 Android 二进制的构建入口,但没有把完整 APK 打包、签名和安装流程写全。
- Requirements 明确要求 Android NDK v27.0.12077973+,说明该项目确实考虑 Android 客户端构建。
- Build for Android 章节提供
build_android.sh,并要求先设置ANDROID_NDK_HOME。 - Clients 表格把 Android 交付物链接到独立的 OpenFluxAndroid releases,并标注为 Standalone APK;这意味着移动端应用与核心仓库存在分离。
- README 没有说明 Android 工程、Gradle/Android Studio 版本、签名配置、ABI、APK 生成位置或安装命令。因此,若只需构建核心 Android binary,路径较明确;若要求从本仓库独立产出签名 APK,信息不足。
- Requirements:`Android Native Development Kit (NDK) v.27.0.12077973+`
- Build for Android:`export ANDROID_NDK_HOME=<your Android NDK path>` 与 `./build_android.sh`
- Clients:`Android ... Standalone APK`,并链接 `p1neappleXpress/OpenFluxAndroid`
export ANDROID_NDK_HOME=<your Android NDK path>
./build_android.sh
✨ 核心亮点
-
Go实现TCP隧道,支持Yandex与MAX两种Transport
-
客户端提供SOCKS5,出口节点运行gvisor用户态协议栈
-
支持Android、iOS TestFlight与Linux VPS出口节点
-
社区规模为1,150星、88 forks、4位贡献者
🔧 工程化
-
main.go提供client与exit-node命令,客户端监听SOCKS5 :1080。
-
Yandex经Docs cursor messages传输,MAX经WebRTC DataChannel传输。
-
Transport接口支持在transport.go注册自定义传输后端。
⚠️ 风险
-
README明确警告MAX可能限制账号,停止OpenFlux后限制仍可能持续。
-
外部VPS使用MAX可能触发账号限制,MAX传输仍属实验性。
-
exit-node需按专用IP配置iptables,否则全局丢弃RST会影响主机连接。
👥 适合谁?
-
需要Go 1.26.3+构建TCP隧道客户端或Linux出口节点的开发者。
-
维护Android NDK 27.0.12077973+或Xcode 26.6+客户端的团队。
-
研究SOCKS5、可插拔Transport和gvisor用户态网络栈的工程师。