feat: add amneziawg extension#1004
Conversation
e9c6fb2 to
d1cdbed
Compare
Add AmneziaWG as a Talos Linux system extension service. AmneziaWG is a WireGuard-based VPN with DPI bypass via traffic obfuscation. Signed-off-by: masterbpro <iserver12345@gmail.com>
d1cdbed to
151f3c1
Compare
| cp -p amneziawg-tools/src/wg-quick/linux.bash /rootfs/usr/local/lib/containers/amneziawg/usr/local/bin/awg-quick | ||
| chmod +x /rootfs/usr/local/lib/containers/amneziawg/usr/local/bin/* | ||
| - | | ||
| cp -p /pkg/entrypoint.sh /rootfs/usr/local/lib/containers/amneziawg/usr/local/bin/entrypoint.sh |
There was a problem hiding this comment.
I don't see where the shell is coming from? It should inside the container rootfs for the script to work
|
This PR is stale because it has been open 45 days with no activity. |
|
Hi @masterbpro — thanks for getting amneziawg support moving, this is genuinely useful for clusters that span networks where plain WireGuard gets DPI-fingerprinted. I hit the exact thing @smira flagged in review (the I've been running it in production for a few weeks on a two-node control plane split across two datacenters on different continents (~140 ms RTT) — Sources here, with unit tests: https://github.com/gentoosys/talos-awg-up What it does (the subset of
The win is the service container becomes Happy to contribute this whichever way is least disruptive — fold it into this PR, or open a follow-up once this lands. I'm also preparing a full extension PR (the |
|
Followed up on my comment above — I've opened the kernel-module version as a draft pair so there's something concrete to compare against:
To be clear, I don't think this is strictly "better" than your #1004 — it's a different trade-off, and they're complementary:
Both also drop the bash dependency @smira flagged — #1103 via the Go helper. No interest in stepping on your PR — you got here first and the userspace approach is genuinely the lower-maintenance option. Posting the kernel-module variant mainly so maintainers can see both and decide whether they want one canonical extension or both as options. Glad to consolidate / co-author whichever direction the team prefers. |
Adds network/amneziawg — the AmneziaWG kernel-module approach to a
DPI-resistant inter-node WireGuard mesh. Brings up awg0 at boot via a
small shell-free Go helper (awg-up) that does its own netlink for
link/addr/route and execs the bundled static awg C binary only for
'awg setconf'. No bash, no iproute2, no /proc or /dev bind — matching
the Go-entrypoint pattern of tailscale/nebula/etc. rather than shipping
a wg-quick shell script.
- awg-up/ Go helper (5 files, ~475 LOC) + unit tests (go test ./...)
- amneziawg.yaml service definition (entrypoint awg-up, mounts only
/var/run/amneziawg + /sys)
- pkg.yaml builds awg-up, pulls signed .ko + static awg from the
companion siderolabs/pkgs amneziawg-pkg, assembles a
scratch service-container rootfs
- manifest/vars/README
Depends on siderolabs/pkgs amneziawg-pkg (kernel module + awg).
Complements the userspace amneziawg-go approach in siderolabs#1004 — this is the
native-kernel-datapath alternative; see PR discussion for the trade-off.
amneziawg added to .kres.yaml targets and the generated Makefile
TARGETS list. MPL-2.0 headers added to all awg-up Go sources.
Signed-off-by: gentoosys <linux.admin@anche.no>
No description provided.