OpenFlux README

The project's README from github.com/p1neappleXpress/OpenFlux. As one markdown file: README.md.

OpenFlux

English | Русский

Network stack research tool. IPv4 TCP/UDP tunnel with pluggable transports (including a signed JS scripting engine for writing new ones), a batched + zstd codec, and two exit-node backends (L3 raw forward / L4 gVisor proxy).

Disclaimer

The author of OpenFlux does not encourage the use of this project to bypass restrictions or violate the rules of any platform, and is not responsible for the final scenarios of how users apply this tool in real life or on the Internet. Any specific technical features of the application are nothing more than an architectural coincidence, created without any intent.

The project is entirely non-commercial, contains no paid features, hidden subscriptions, or commercial benefit.

The author is not responsible for forks, modifications, or derivative versions of OpenFlux created by third parties. Any changes added to a fork are the responsibility of its author.

The author is not responsible for:

The original code is provided as is, without any warranties.

Clients

Platform Download Notes
macOS build from source CLI + utun L3 client (--inbound=tun, default on macOS)
Linux build from source CLI client (SOCKS5) / exit node (L3 or L4)
Windows build from source CLI client (SOCKS5, or --inbound=tun via Wintun - needs administrator) / exit node (l4, or l3 via QEMU - see docs)
Desktop OpenFluxDesktop releases Windows/macOS/Linux: full tunnel or SOCKS5/HTTP proxy, multi-transport sessions, encryption, an in-app node-deployment wizard over SSH
Android OpenFluxAndroid releases System-wide VPN or local SOCKS5, multi-transport sessions with failover, encryption, captcha handling in a built-in browser
Android OpenFlux-Android releases Fork: system-wide VPN or SOCKS5 proxy, multi-transport sessions, captcha handling, phone as exit node
iOS TestFlight beta System-wide VPN via Network Extension

iOS app built by @saharev1 - full iOS client, TestFlight pipeline, system VPN support, DNS-over-TLS, and many stability fixes. HUGE thanks!

OpenFlux-Android built by @damnurmum - an Android client with a system-wide VPN and a local SOCKS5 proxy mode, connection profiles, multi-transport sessions with failover (direct included), SmartCaptcha and login handling in a WebView (the exit node's too, passed through the tunnel from its address), the phone as an l4 exit node, Kill Switch and per-app and per-domain routing. Also contributed end-to-end encryption (#38), the Mail.ru transport (#60) and session resilience with exit captcha handling (#93) to this repository. HUGE thanks!

OpenFluxAndroid and OpenFluxDesktop run a Compose Multiplatform app and a shared module (multi-transport sessions, encryption, the built-in browser for captcha, the SSH node-deployment wizard) originally written by @meepo161 in OpenFluxClient and moved into these repositories with his agreement. HUGE thanks!

Android app - p1neappleXpress/OpenFluxAndroid, desktop app - p1neappleXpress/OpenFluxDesktop, the module they share - p1neappleXpress/OpenFluxClientShared.

How it works

Client (any):  macOS (utun) / Linux / Windows / iOS (packet tunnel) / Android
                    |
                    v
               Transport (Yandex.Docs / Volga / Board / MAX / Cups / Mail.ru / Direct / script)
                    |
                    v
               Exit node  -->  Internet
                 --mode l3   (raw SNAT/DNAT, Linux + root)
                 --mode l4   (gVisor proxy, any platform)

Any client works with either exit backend; --mode is chosen on the exit node, not the client. l3 forwards raw TCP/UDP with SNAT/DNAT and stays end-to-end (Linux + root only); l4 terminates TCP/UDP in a userspace gVisor stack and re-dials the real server (any OS, no root). A multi-transport session can run several transports at once and fail over between them. Full depth: docs/architecture.md.

Quickstart

go mod tidy
go build -o openflux .

# Exit node, L4 backend (any OS, no root)
./openflux --role=exit --mode=l4 --transport=yandex --url="YOUR_YANDEX_DOC_URL"

# Client, SOCKS5 (point a browser at 127.0.0.1:1080)
./openflux --role=client --inbound=socks5 --transport=yandex --url="YOUR_YANDEX_DOC_URL"

See docs/architecture.md for the l3 (root, Linux-only, faster) backend and the macOS/Windows full-tunnel clients, and docs/cli-reference.md for every flag.

Highlights

  1. docs/architecture.md - the client/exit diagram, the two exit backends, the repo layout, and current limitations.
  2. docs/transports.md - the native transport list, codec selection, captcha handling, and how to add a native one.
  3. docs/scripted-transports.md - the JS transport engine: the host API, signing and trust, the dev tools.
  4. docs/sessions.md - multi-transport sessions, .conf files, authenticated negotiation and encryption.
  5. docs/links.md - the openflux:// link/QR format.
  6. docs/node-provisioning.md - the SSH node wizard.
  7. docs/phpbox.md - the no-VPS PHP-hosting exit.
  8. docs/logging.md - -d/-dd/-ddd and --sensitive.
  9. docs/cli-reference.md - every flag, flat.
  10. docs/building-and-releases.md - CI, tagged releases, exit-node releases, and the nightly channel.

Wire-level protocol framing lives at PROTOCOL_NEGOTIATION.md (linked from the docs above where it's relevant, not duplicated here).

What's in this repo

Requirements

  1. Go - see go.mod for the exact version.
  2. Android NDK r27+ / Xcode 26.6+ - only for the mobile client binaries.
  3. A Linux VPS / VDS for a VPS-hosted exit node (not needed for the no-VPS PHP exit - docs/phpbox.md). l3 needs root; l4 doesn't.

Status

The core tunnel path (native transports, the l3/l4 exit backends, multi-transport sessions, encryption/negotiation) is CI-tested on every push and has shipped across several tagged releases - see CHANGELOG.md. The scripted-transport engine and the no-VPS PHP exit are newer and still gaining real-world coverage; a Windows/macOS native l3 exit backend is not implemented yet (the working fallback is l4 on both). The nightly prerelease channel (.github/workflows/nightly.yml) tracks the nightly branch for anyone who wants a current build ahead of the next tagged release.

License

GNU General Public License v3.0 or later. See LICENSE for the full text.

Third-party licenses are listed in NOTICE.

OpenFlux (p1neappleXpress/OpenFlux)

Searching Database…

这是什么东西?OpenFlux 是一款网络栈研究工具,用于搭建 IPv4 TCP/UDP 隧道,支持可插拔的传输方式、批量+zstd 编码,以及两种出口节点后端(原始 L3 转发器和基于 gVisor 的 L4 代理)。
是只有一个客户端,还是针对不同平台有多个应用?它是一系列共享同一核心的应用:包括适用于 macOS/Linux/Windows 的 Go CLI,以及独立的 Desktop、Android 和 iOS 应用,它们复用一个共享的 Compose Multiplatform 模块(OpenFluxClientShared)来处理会话、加密和验证码浏览器。
怎么把它跑起来?在 macOS/Linux/Windows 上,你可以用 Go 从源码构建 CLI 客户端;也可以下载预编译的 Desktop 版本以获得完整隧道或 SOCKS5/HTTP 代理,安装 Android 应用获得系统级 VPN,或加入 iOS TestFlight 测试。
构建它需要安装 Go 吗?移动端应用需要特殊的 SDK 吗?构建核心需要 Go(具体版本锁定在 go.mod 中);移动端客户端的二进制文件还需要 Android NDK r27+ 或 Xcode 26.6+。
每个平台都能用更快的 L3 出口模式吗?不能。L3(原始 SNAT/DNAT,端到端)需要 root 权限,且只能在 Linux 上运行;Windows/macOS 尚无原生 L3 出口,因此这些平台会退回到基于 gVisor 的 L4 代理。脚本化传输引擎和免 VPS 的 PHP 出口也比较新,实际使用覆盖还在逐步扩大。
除了电脑,手机上也能用吗?可以——除了 macOS/Linux/Windows 的 CLI 之外,还有原生 Android 应用,提供系统级 VPN 或本地 SOCKS5 模式;还有 iOS 应用(目前处于 TestFlight 测试阶段),通过 Network Extension 实现系统级 VPN。
为什么隧道要伪装成 Yandex 或 Mail.ru 的服务?它的原生传输方式会把流量伪装成真实的俄罗斯网络服务(Yandex Docs、Yandex Volga、MAX/OneMe、Cups.online、Mail.ru Docs、Direct),并且一个会话可以同时运行多种传输方式,在它们之间自动故障切换。
不租 VPS 也能运行出口节点吗?可以——docs/phpbox.md 描述了一种模式:出口只是普通网页主机上的一个小 PHP 程序,而不需要专用的 VDS。
怎么把一套能用的连接配置分享给别人?通过一个 openflux:// 链接即可,它也可以显示成二维码,其中包含完整的客户端配置(见 docs/links.md)。
能否不重新构建 Go 核心就添加新的传输方式?可以——带签名的 JavaScript 脚本引擎(transport/script,基于 goja 构建)让你无需改动 Go 代码或重新编译,就能编写并签名新的传输方式。
Size
59.7 MB
Stars
2.2K
Age
3mo
Commits · 90 Days