sh0rch/packetveil
GitHub: sh0rch/packetveil
Stars: 76 | Forks: 9
# gutd v3 — WireGuard Traffic Obfuscator (TC/XDP eBPF)
[](https://github.com/sh0rch/gutd/actions/workflows/ci.yml)
[](https://github.com/sh0rch/gutd/actions/workflows/release.yml)
### Benchmark: gutd vs wg-obfuscator
| Tool | TCP Bandwidth | UDP Bandwidth | UDP Loss |
|---|---|---|---|
| **gutd (eBPF)** ([v3.0.7](https://github.com/sh0rch/packetveil/releases/tag/v3.0.7)) | 1.52 Gbits/sec | 1.78 Gbits/sec | 0.066% |
| **gutd (Userspace)** ([v3.0.7](https://github.com/sh0rch/packetveil/releases/tag/v3.0.7)) | 818 Mbits/sec | 961 Mbits/sec | 32% |
| **wg-obfuscator** ([v1.5](https://github.com/ClusterM/wg-obfuscator/releases)) | 394 Mbits/sec | 315 Mbits/sec | 71% |
* Performance measured using `iperf3` between 2 isolated network namespaces on GitHub Actions Ubuntu 22.04 runners. [See test logic and full logs](https://github.com/sh0rch/packetveil/actions/runs/24778196231). Last updated: 2026-04-22 12:29
## Obfuscation Modes
| Mode | `obfs=` | Wire appearance | Anti-probing | Ports |
|---|---|---|---|---|
| **QUIC** *(default)* | `quic` | Fake QUIC Long Header + SNI (looks like HTTPS/3) | XDP replies with QUIC Version Negotiation | any UDP |
| **GUT** | `gut` | GOST-like random UDP — no QUIC/TLS signatures | silent drop | any UDP |
| **SIP/RTP** | `sip` | Signaling packets wrapped in SIP headers; data in RTP frames | XDP replies with `200 OK` / `401` / `403` | `ports[0]` = SIP (5060), `ports[1+]` = RTP (≥ 2 required) |
| **Syslog** | `syslog` | Payload base64-encoded inside a fake syslog message | silent drop | any UDP (514 typical) |
All modes apply ChaCha payload masking on top of the envelope. Both peers must use the same mode.
## Features
- Four obfuscation modes: QUIC, GUT (GOST-like random UDP), SIP/RTP, Syslog — selectable per peer
- Active DPI probe deflection at XDP layer (QUIC: Version Negotiation; SIP: `200 OK`/`401`/`403`)
- WireGuard payload masking with ChaCha (4 rounds by default)
- TC egress hook on a veth pair, XDP ingress hook on the physical NIC
- Port striping: multiple UDP ports per peer with per-packet rotation
- Keepalive probabilistic drop to suppress WireGuard timing fingerprints
- Variable padding to obscure packet sizes
- Hot reload via SIGHUP (BPF map update, no restart)
- Pure userspace fallback mode (zero eBPF requirements, ~500 Mbps capable)
- Cross-platform: Linux (eBPF + userspace), Windows (userspace), RouterOS (userspace)
- Multi-peer support (one veth pair + BPF program per peer)
- Static musl build, zero OS dependencies — runs in empty `scratch` containers
- IPv4 and IPv6 outer transport
- Dynamic peer endpoint learning for clients behind NAT (`peer_ip = dynamic`)
- Stats via `gutd status` or SIGUSR1 signal
## Quick Start
Generate a shared key and create a minimal config on both peers:
gutd genkey # → prints 256-bit hex key
# /etc/gutd/gutd.conf (Linux)
# C:\ProgramData\gutd\gutd.conf (Windows)
[peer]
peer_ip = 203.0.113.10 # remote peer public IP
ports = 41000
key =
标签:通知系统