feat(vpn): WireGuard-Server — Kunden waehlen sich per UDP 443 ein, ein Verteiler fuer alle

Einstellungen → VPN → WireGuard → Server: Einwahl anlegen (Name,
Kundennetz, LAN-IP der FritzBox); ARIA erzeugt beide Schluesselpaare + PSK,
⬇ liefert die Datei fuer die Gegenseite (FritzBox-Netzwerk-Kopplung oder
Standard-WireGuard). Jede Einwahl = eigener VPN-Satellit-Container mit
fester IP im Netz aria-vpn (10.213.213.0/24, ausserhalb von Dockers Pools).

Neuer Verteiler (satellite/vpn_relay.py, aria-vpn-relay, Host-Netz,
VPN_RELAY_PORT 51820): ordnet jedes Paket per WireGuard-mac1 bzw.
Sitzungsnummer dem richtigen Container zu, ohne zu entschluesseln; Fremdes
wird still verworfen. Anleitung NPM-Stream / ohne Nginx / ufw im ℹ des
Server-Reiters und im satellite/README.

Lokal Ende-zu-Ende getestet: zwei Kunden mit demselben Netz 192.168.178.0/24
gleichzeitig ueber einen Port, jeder erreicht nur sein eigenes LAN; kein Weg
Kunde → ARIA, Kunde 1 → Einwahl 2, Container → Internet; fremder Schluessel
und Muell am Verteiler ohne Antwort.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-01 14:14:34 +01:00
co-authored by Claude Opus 5.5
parent 627b826226
commit 9b25187084
8 changed files with 459 additions and 24 deletions
+20
View File
@@ -180,6 +180,26 @@ services:
network_mode: none
restart: "no"
# ─── VPN-Verteiler: EIN UDP-Port fuer alle WireGuard-Server-Verbindungen ─
# Kunden waehlen sich auf UDP 443 am RVS-Hostnamen ein; der NPM-Stream (oder
# der Router) leitet das hierher (VPN_RELAY_PORT, Standard 51820). Der
# Verteiler ordnet jedes Paket per WireGuard-mac1 der richtigen Verbindung
# (eigener Container) zu, ohne etwas zu entschluesseln; Unbekanntes wird
# still verworfen. Host-Netz, weil er die Container-IPs im Netz aria-vpn
# erreichen muss (dort ist Container-zu-Container gesperrt).
vpn-relay:
image: aria-vpn-satellite:latest
container_name: aria-vpn-relay
depends_on:
- vpn-satellite-image
network_mode: host
command: ["python", "-u", "vpn_relay.py"]
environment:
- VPN_RELAY_PORT=${VPN_RELAY_PORT:-51820}
volumes:
- ./aria-data/config/diag-state/vpn:/vpn:ro
restart: unless-stopped
networks:
aria-net:
driver: bridge