public inbox for wireguard@lists.zx2c4.com
 help / color / mirror / Atom feed
* gutd — WireGuard traffic obfuscator via TC/XDP eBPF (no kernel patches)
@ 2026-02-25 18:59 sh0rch
  2026-03-23 17:43 ` Jason A. Donenfeld
  2026-03-24 10:42 ` Toke Høiland-Jørgensen
  0 siblings, 2 replies; 5+ messages in thread
From: sh0rch @ 2026-02-25 18:59 UTC (permalink / raw)
  To: wireguard@lists.zx2c4.com

Hi all,

I've been working on a WireGuard obfuscator and wanted to share it in case it's useful or someone wants to try it out and give feedback.

**gutd** obfuscates WireGuard UDP traffic using Linux TC/XDP eBPF programs - no kernel patches, no kernel modules, no DKMS. It attaches at the TC egress hook on a veth pair and the XDP ingress hook on the physical NIC, so packet processing happens in the kernel datapath at near-native speed, but the implementation lives entirely in userspace-loaded BPF programs.

##How it works:
- Egress (TC): masks each WireGuard UDP payload with a ChaCha keystream before it leaves the host
- Ingress (XDP): unmasks the packet before passing it up the stack WireGuard sees nothing unusual
- The WireGuard process is completely unaware of gutd

##Key properties:
- No kernel patches or modules - just `bpf()` syscall
- Port striping across multiple UDP ports per peer
- Probabilistic keepalive drop to suppress timing patterns
- Hot reload via SIGHUP, no tunnel restart
- Static musl binary available (single file, no dependencies)
- IPv4 and IPv6 outer transport

Shared symmetric key (not WireGuard keypairs) -`gutd genkey` generates a random 256-bit key.

Repo: https://github.com/sh0rch/gutd

Would appreciate any feedback - especially on the BPF approach, the wire format, or anything that seems wrong or could be done better.

Thanks

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-03-26 16:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-25 18:59 gutd — WireGuard traffic obfuscator via TC/XDP eBPF (no kernel patches) sh0rch
2026-03-23 17:43 ` Jason A. Donenfeld
2026-03-23 22:41   ` sh0rch
2026-03-24 10:42 ` Toke Høiland-Jørgensen
     [not found]   ` <GVXP251MB07901AF0DC973F21B13077F88349A@GVXP251MB0790.EURP251.PROD.OUTLOOK.COM>
2026-03-26 16:30     ` Toke Høiland-Jørgensen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox