VPNSmith
Kostenloses Tool - WireGuard Split-Tunneling

WireGuard-AllowedIPs-Rechner

WireGuard kennt keine Einstellung „ausschließen“: Um alles außer deinem LAN oder einer Adresse zu tunneln, muss AllowedIPs alle anderen Netze aufzählen. Gib an, was der Tunnel transportieren und was er auslassen soll, und erhalte die exakte AllowedIPs-Zeile, einen fertigen [Peer]-Block und die Befehle zum Prüfen der Routen. Alles läuft in deinem Browser.

Läuft vollständig in deinem Browser. Nichts, was du eingibst, verlässt die Seite.

Meist 0.0.0.0/0, ::/0 (alles). Für einen Tunnel, der nur ein entferntes Netz erreicht, trage dieses Netz ein, zum Beispiel 10.0.0.0/24. Trenne Einträge mit Kommas, Leerzeichen oder Zeilenumbrüchen.

Dein LAN, private Bereiche oder einzelne Adressen (eine einzelne IP zählt als /32 oder /128).

Wird nach den Ausnahmen wieder hinzugefügt. Trage hier das Subnetz deines WireGuard-Tunnels ein, wenn es in einem ausgeschlossenen Bereich liegt.

Eine IP-Adresse, kein Hostname. Sie wird als einzelne Adresse ausgeschlossen, was die Routing-Schleife unter Linux verhindert.

Routen-Testbefehle für
  • Unter Linux mit wg-quick schickt eine Liste ohne /0, die die öffentliche IP des Servers abdeckt, die verschlüsselten Pakete in den Tunnel. Trage oben die Server-IP ein, um sie auszuschließen.

Ergebnis

24
IPv4: Präfixe
1
IPv6: Präfixe
99.99%
des IPv4-Raums im Tunnel
AllowedIPs = 0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.168.0.0/24, 192.168.2.0/23, 192.168.4.0/22, 192.168.8.0/21, 192.168.16.0/20, 192.168.32.0/19, 192.168.64.0/18, 192.168.128.0/17, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 224.0.0.0/3, ::/0
peer.conf
[Peer]
PublicKey = <server public key>
Endpoint = SERVER_PUBLIC_IP:51820
AllowedIPs = 0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.168.0.0/24, 192.168.2.0/23, 192.168.4.0/22, 192.168.8.0/21, 192.168.16.0/20, 192.168.32.0/19, 192.168.64.0/18, 192.168.128.0/17, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 224.0.0.0/3, ::/0
PersistentKeepalive = 25
verify-routes.sh
# Was der Peer erfasst, so wie es im Kernel geladen ist
sudo wg show wg0 allowed-ips

# Eine ausgeschlossene Adresse: darf NICHT über die WireGuard-Schnittstelle gehen
ip route get 192.168.1.10

# Eine getunnelte Adresse: muss über die WireGuard-Schnittstelle gehen
ip route get 1.1.1.1

Split-Tunneling ist präzise auf einem Server, den du kontrollierst

Auf deinem eigenen WireGuard-Server bestimmst du jeden Bereich, der hindurchgeht, die Endpoint-Adresse ändert sich nie, und sie auszuschließen ist eine Zeile. Der Einstiegs-VPS von Contabo enthält eine öffentliche IPv4-Adresse und vollen Root-Zugriff.

Affiliate-Link: Wir erhalten eventuell eine Provision, ohne Mehrkosten für dich. Der Rechner bleibt kostenlos und hängt nicht davon ab.

Contabo-VPS ansehen

Warum aus einer Ausnahme zwei Dutzend Zeilen werden

AllowedIPs erledigt zwei Aufgaben zugleich: Es ist die Liste der Ziele, die der Client in den Tunnel schickt, und die Liste der Quelladressen, die er vom Peer annimmt. Beides wird in CIDR-Blöcken geschrieben, und ein CIDR-Block ist immer ein Bereich mit Zweierpotenz-Größe, ausgerichtet an seiner eigenen Größe. Wer ein /24 aus dem gesamten IPv4-Raum herausschneidet, behält deshalb einen Block für jedes Bit zwischen /0 und /24: 24 Präfixe. Das ist kein Fehler der Ausgabe, sondern die kürzeste exakte Antwort.

Alles außer 192.168.1.0/24, IPv6 weiterhin vollständig im Tunnel:

AllowedIPs = 0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.168.0.0/24, 192.168.2.0/23, 192.168.4.0/22, 192.168.8.0/21, 192.168.16.0/20, 192.168.32.0/19, 192.168.64.0/18, 192.168.128.0/17, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 224.0.0.0/3, ::/0

Unter Linux hält wg-quick die Routen des direkt verbundenen LANs im Full-Tunnel-Modus bereits nutzbar, über seine Regel suppress_prefixlength 0. Eine ausdrückliche Ausnahme zählt vor allem unter Android und iOS, unter Windows, wenn du für den lokalen Zugriff auf den Kill-Switch verzichtest, für Netze, die nicht direkt verbunden sind (ein zweites Subnetz hinter dem Router), und für öffentliche Adressen, die du außerhalb des VPN erreichen willst, etwa eine Bank, die VPN-Ausgänge sperrt.

Bereiche, die üblicherweise ausgeschlossen werden

Schließe nur aus, was du brauchst: Jeder ausgelassene Bereich ist Verkehr, der den Tunnel ungeschützt verlässt. Hier die reservierten Standardbereiche und der Grund, jeden davon auszulassen.

BereichWas es istAusschließen, wenn
192.168.1.0/24Ein typisches Heim-LAN (prüfe deins)Du brauchst Drucker, NAS oder Router, während du verbunden bist
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16Alle privaten IPv4-Bereiche nach RFC 1918Du wechselst zwischen Netzen, die du vorher nicht kennst
169.254.0.0/16IPv4 Link-Local (RFC 3927)Selbst adressierte Geräte, oder die Cloud-Metadatenadresse 169.254.169.254 auf einer VM
fc00::/7IPv6 Unique Local (RFC 4193)Deine LAN-Geräte nutzen auch IPv6-ULA-Adressen
fe80::/10IPv6 Link-Local (RFC 4291)Selten nötig: Routen pro Schnittstelle gewinnen ohnehin
203.0.113.10/32Eine öffentliche Adresse (Beispiel)Ein Dienst, der VPN-Verkehr ablehnt, oder die IP des Servers selbst unter Linux

Häufige Fragen

Wie schließe ich mein lokales Netz aus einem WireGuard-Tunnel aus?
AllowedIPs hat keine Ausschluss-Syntax, also schreibt man das Komplement. Trage 0.0.0.0/0, ::/0 bei den eingeschlossenen Netzen ein und dein LAN, zum Beispiel 192.168.1.0/24, bei den Ausnahmen: Der Rechner liefert die CIDR-Blöcke, die alles andere abdecken. Füge diese Zeile in den [Peer]-Abschnitt der Client-Konfiguration ein. Unter Android hat die offizielle App ein Kästchen „Exclude private IPs“, das dasselbe für private Bereiche erledigt.
Warum ist die AllowedIPs-Zeile so lang?
Ein CIDR-Block ist ein Bereich mit Zweierpotenz-Größe, ausgerichtet an seiner Größe; ein Loch hinterlässt also einen Block pro Bit Unterschied. Ein /24 aus 0.0.0.0/0 zu entfernen ergibt 24 Präfixe, die drei RFC-1918-Bereiche zu entfernen ein paar mehr. Die Liste wirkt lang, ist aber exakt, und der Kernel verarbeitet sie ohne messbaren Aufwand.
Muss ich die IP des WireGuard-Servers selbst ausschließen?
Mit wg-quick unter Linux ja, sobald deine Liste kein einfaches 0.0.0.0/0 ist. wg-quick wendet sein Policy-Routing, das den Endpoint schützt, nur auf /0-Einträge an; mit jeder anderen Liste landen die Routen in der Haupttabelle, und wenn sie die öffentliche Adresse des Servers abdecken, gehen die verschlüsselten Pakete in den Tunnel selbst. Trage den Endpoint im Rechner ein: Er wird als einzelne Adresse ausgeschlossen. Auf anderen Plattformen kostet das ebenfalls nichts.
Deaktiviert ein Ausschluss den Kill-Switch unter Windows?
Ja. WireGuard für Windows bietet „Block untunneled traffic (kill-switch)“ nur an, wenn der Tunnel einen einzigen Peer hat, dessen AllowedIPs 0.0.0.0/0 oder ::/0 enthält. Eine berechnete Liste ohne /0 lässt diese Option verschwinden. Entscheide, was auf diesem Gerät wichtiger ist: lokaler Zugriff oder eine harte Sperre für alles außerhalb des Tunnels.
Client oder Server: Wohin gehört dieses AllowedIPs?
In den [Peer]-Abschnitt des Clients, wo es bestimmt, was der Client in den Tunnel schickt. Auf dem Server behält jeder Client-Peer nur seine eigene Tunneladresse, zum Beispiel 10.66.66.2/32. Zwei Peers auf dem Server dürfen sich nie einen Bereich teilen: WireGuard ordnet jede Adresse nur einem Peer zu, und der zuletzt konfigurierte bekommt sie.
Läuft DNS nach dem Ausschluss des LANs noch durch den Tunnel?
Nicht, wenn dein DNS-Server im ausgeschlossenen Bereich liegt. Ein Router unter 192.168.1.1 als Resolver wird dann außerhalb des Tunnels erreicht, und jede Anfrage geht ungeschützt hinaus. Setze DNS = im [Interface]-Abschnitt auf eine Adresse, die im Tunnel bleibt, etwa die Tunnel-IP des Servers oder einen öffentlichen Resolver, den die Liste noch routet.