infosave2007/aivpn
DevOps & Self-hostingSelf-hosted UDP VPN that shapes traffic to mimic QUIC, WebRTC and STUN protocols.
AIVPN is an experimental Rust VPN with a Linux server and clients for Linux, macOS, Windows, Android, iOS, MikroTik RouterOS 7.6+ and Entware routers. Instead of only encrypting a UDP tunnel, it shapes outer packets to resemble a chosen protocol. The author explicitly does not promise that this defeats detection or network restrictions, and asks users to obey local law experimental notice.
What changes in practice
A normal tunnel hides payloads but keeps its own outer signature. AIVPN adds a mask profile that sets the outer protocol, packet sizes and send intervals. The server's Neural Resonance module watches live traffic statistics against a small per-mask model; a high reconstruction error (MSE threshold 0.35) triggers automatic mask rotation without disconnecting clients. Session polymorphic masks perturb a base profile per session so the same mask is not reused verbatim across users. The README is careful about scope: looking like STUN or QUIC does not prove statistical indistinguishability from a specific application, and the supplied ML-DPI validation labels protocol conformance, not an ISP's detection probability README overview, ML-DPI report.
How a session is set up
A server operator creates a client with aivpn-server --add-client, which emits a single aivpn:// connection key holding the server address, the server's X25519 public key and the client's PSK. The client pastes this key and connects. Modern builds use an initial exchange (InitialV2) that confirms a fresh server key before data flows; the README states InitialV2 is incompatible with 1.1.0 and earlier 1.2.0 development builds, so servers, pool nodes and all clients — including embedded mobile cores — must be updated together. The connection key format itself is unchanged README quick start.
Requirements and limits
- Server: Linux only. Docker compose is the recommended path; a bare-metal binary also works and installs NAT rules itself. UDP 443 must be opened. A management web panel, pool sync, multi-hop forwarding and an SSH installer exist but are separate pieces of the server stack README.
- Client privileges: Windows needs Administrator for the Wintun adapter; macOS uses
utunand prompts forsudo; iOS builds need macOS with Xcode 15+, and sideloaded builds expire after 7 days. The SOCKS5 proxy mode avoids root and TUN entirely, but the feature matrix marks it unavailable on Android and iOS. - Builds: Rust 1.97+ with
cargoandmake; both crates are also published on crates.io. - Optional kernel module: requires Rust-for-Linux APIs and headers built with
CONFIG_RUST=y; a kernel version number alone is not sufficient. Without it, userspace TUN is used. - Not every feature is on every client: local DNS proxy is marked N/A or absent on Android/iOS, and FEC reverse direction is not implemented.
Upgrading and operations
The installer is idempotent and systemd-first: re-running it replaces the binary and unit and restarts the service but never overwrites server.key or clients.json README advanced features. Mask signing defaults to warn, which loads an unverified mask after logging; enforce rejects it, but only after the whole corpus is signed. The README links a separate threat model rather than claiming an adversary-proof design threat model. The repository states MIT licensing README license section.
HotRepo's take
The repository was created on 2026-03-26; the one supplied daily-board observation is 2026-10-30 with 744 stars (+49 that day). A single sample cannot show whether interest is rising or fading. The more useful question is whether the masking approach fits a self-hosted Linux server you already operate — not the star count.
Written by AI from the project's README, updated October 30, 2026. The project's own docs are the source of truth.