WireGuard Selektives Routing zu externem VPN-Provider
Einführung
Diese Anleitung soll Ihnen dabei helfen, WireGuard auf dem Schulrouter Plus so einzurichten, dass selektives Routing zu einem externen VPN-Anbieter genutzt werden kann.
Diese Umstände können zutreffen, wenn nur bestimmte lokale Hosts den VPN-Tunnel nutzen sollen. Oder es können mehrere Verbindungen zum VPN-Anbieter gewünscht sein, wobei jede Verbindung von unterschiedlichen lokalen Rechnern genutzt werden soll.
Dieses How-to konzentriert sich auf die Konfiguration des Schulrouters Plus. Sie müssen auch die Gegenstelle bei Ihrem VPN-Anbieter konfigurieren - wie das geht, entnehmen Sie der Dokumentation Ihres VPN-Anbieters.
Ihr lokaler öffentlicher Schlüssel des Schulrouter Plus muss bei Ihrem VPN-Anbieter registriert werden, und Sie müssen den öffentlichen Schlüssel Ihres VPN-Anbieters für den Endpunkt und die VPN-Tunnel-IP erhalten, die Ihr VPN-Anbieter für Ihre lokale Gegenstelle bereitstellt. In manchen Fällen können Sie den öffentlichen Schlüssel des Endpunkts und die VPN-Tunnel-IP erst erhalten, wenn Sie Ihren lokalen öffentlichen Schlüssel registriert haben. Erstellen Sie in diesem Fall zunächst die lokale Konfiguration des Schulrouter Plus mit einer Dummy-Tunnel-IP und ohne ausgewählte Gegenstelle, damit der öffentliche Schlüssel generiert wird, und aktualisieren Sie die Konfiguration später, sobald die anderen Informationen bekannt sind.
Ein Beispiel für die Konfiguration der Gegenstelle bei einem VPN-Anbieter (Mullvad) finden Sie in Schritt 1 der Anleitung WireGuard MullvadVPN Road Warrior Einrichtung.
Diese Anleitung behandelt nur die IPv4-Konfiguration. Sie kann problemlos auch für IPv6 angepasst werden.
Schritt 1 - Konfigurieren Sie den Endpunkt
-
Weiter zu VPN ‣ WireGuard ‣ Endpunkte
-
Klicken Sie auf +, um einen neuen Endpunkt hinzuzufügen
-
Konfigurieren Sie den Endpunkt wie folgt (wenn eine Option unten nicht erwähnt wird, lassen Sie sie als Standard):
Aktiviert
Ausgewählt
Name
Nennen Sie es, wie Sie wollen (z. B.
VPNProviderName_Location
)Öffentlicher Schlüssel
Einfügen des öffentlichen Schlüssels Ihres VPN-Anbieters
Erlaubte IPs
0.0.0.0/0
Endpunkt-Adresse
Geben Sie die öffentliche IP-Adresse (wünschenswert) oder den Domainnamen Ihres VPN-Anbieters ein, wie von diesem bereitgestellt.
Endpunkt Port
Eintragen des Ports Ihres VPN-Anbieters, wie von diesem bereitgestellt
Keepalive
25
-
Speichern Sie die Endpunktkonfiguration, und klicken Sie dann erneut auf Speichern.
Schritt 2 - Konfigurieren Sie die lokale Gegenstelle
-
Weiter zu VPN ‣ WireGuard ‣ Lokal
-
Klicken Sie auf +, um eine neue lokale Konfiguration hinzuzufügen
-
Schalten Sie den „erweiterten Modus“ ein
-
Konfigurieren Sie die Lokale Konfiguration wie folgt (wenn eine Option unten nicht erwähnt wird, lassen Sie sie als Standard):
Aktiviert
Ausgewählt
Name
Nennen Sie es, wie Sie wollen (z. B.
VPNProviderName
)Öffentlicher Schlüssel
Dieses Feld ist zunächst leer; es wird ausgefüllt, sobald die Konfiguration gespeichert wird.
Privater Schlüssel
Dieses Feld ist zunächst leer; es wird ausgefüllt, sobald die Konfiguration gespeichert wird.
Port
51820 oder ein höher nummerierter eindeutiger Port.
DNS-Server
Leeren Sie dieses Feld
Tunneladresse
Fügen Sie die von Ihrem VPN-Anbieter bereitgestellte VPN-Tunnel-IP ein, im CIDR-Format, z. B. 10.24.24.10/32.
Peers
Wählen Sie in der Dropdown-Liste den Endpunkt, den Sie oben konfiguriert haben.
Routen deaktivieren
Ausgewählt
Gateway
Geben Sie eine IP an, die 1 Nummer unter Ihrer VPN-Tunnel-IP liegt, z. B. 10.24.24.9 - siehe Hinweis unten*
Die IP, die Sie für das Gateway wählen, ist im Grunde genommen beliebig; so ziemlich jede eindeutige IP ist geeignet. Der Vorschlag hier dient der Bequemlichkeit und der Vermeidung von Konflikten
-
Speichern Sie die lokale Peer-Konfiguration, und klicken Sie dann erneut auf Speichern.
Schritt 3 - WireGuard einschalten
Schalten Sie den WireGuard unter VPN ‣ WireGuard ‣ Allgemein ein, wenn er nicht bereits eingeschaltet ist.
Schritt 4 - Weisen Sie dem WireGuard eine Schnittstelle zu und aktivieren Sie diese
-
Weiter zu Schnittstellen ‣ Zuweisungen
-
Wählen Sie im Dropdown-Menü neben „Neue Schnittstelle:“ das WireGuard-Gerät aus (
wg0
, wenn dies Ihr erstes Gerät ist) -
Fügen Sie eine Beschreibung hinzu (z. B.
WAN_VPNProviderName
) -
Klicken Sie auf +, um es hinzuzufügen, und dann auf Speichern.
-
Wählen Sie dann im Menü Schnittstellen Ihre neue Schnittstelle aus
-
Konfigurieren Sie es wie folgt (wenn eine Option nicht erwähnt wird, belassen Sie sie als Standard):
Einschalten
Ausgewählt
Schloss
Ausgewählt wenn Sie es wünschen
Beschreibung
Gleich wie unter Zuweisungen, wenn dieses Feld nicht bereits ausgefüllt ist
IPv4 Konfigurationstyp
Keine
IPv6 Konfigurationstyp
Keine
-
Speichern Sie die Schnittstellenkonfiguration und klicken Sie dann auf Änderungen übernehmen.
Schritt 5 - WireGuard neu starten
Starten Sie nun den WireGuard neu - Sie können dies über das Dashboard (wenn Sie das Dienste-Widget haben) oder durch Aus- und Einschalten unter VPN ‣ WireGuard ‣ Allgemein
Schritt 6 - Erstellen eines Gateways
-
Weiter zu System ‣ Gateways ‣ Einzeln
-
Klicken Sie auf Hinzufügen.
-
Konfigurieren Sie das Gateway wie folgt (wenn eine Option im Folgenden nicht erwähnt wird, belassen Sie sie als Standard):
Name
Nennen Sie es, wie Sie wollen, am einfachsten ist es, es gleich wie die Schnittstelle zu nennen
Beschreibung
Fügen Sie eine hinzu, wenn Sie es wünschen
Schnittstelle
Wählen Sie Ihre neu erstellte Schnittstelle in der Dropdown-Liste aus.
Adresse Familie
Wählen Sie IPv4 im Dropdown-Menü
IP-Adresse
Einfügen der Gateway-IP, die Sie unter der lokalen Peer-Konfiguration des WireGuard konfiguriert haben
Fernes Gateway
Ausgewählt
Überwachung der IP
Einfügen einer externen IP zur Überwachung des Gateways, z. B. 1.1.1.1 oder 8.8.8.8.
-
Speichern Sie die Gateway-Konfiguration und klicken Sie dann auf Änderungen übernehmen.
Schritt 7 - Erstellen Sie einen Alias für die relevanten lokalen Hosts, die auf den Tunnel zugreifen werden
-
Weiter zu Firewall ‣ Aliase
-
Klicken Sie auf +, um einen neuen Alias hinzuzufügen
-
Konfigurieren Sie den Alias wie folgt (wenn eine Option unten nicht erwähnt wird, lassen Sie sie als Standard):
Aktiviert
Ausgewählt
Name
Nennen Sie es, wie Sie wollen, z.B.
WG_VPN_Hosts
Typ
Wählen Sie im Dropdown-Menü entweder Host(s) oder Netzwerk(e) aus, je nachdem, ob Sie möchten, dass bestimmte Host-IPs den Tunnel verwenden oder ein ganzes lokales Netzwerk (z. B. ein VLAN).
Inhalt
Eingabe der Host-IPs oder des Netzwerks im CIDR-Format
Beschreibung
Fügen Sie eine hinzu, wenn Sie es wünschen
-
Speichern Sie den Alias, und klicken Sie dann auf Anwenden.
Schritt 8 - Erstellen einer Firewall-Regel
Dies erfordert zwei Schritte - zuerst das Erstellen eines zweiten Alias für alle lokalen (privaten) Netzwerke und dann das Erstellen der Firewall-Regel selbst. Diese beiden Schritte bewirken letztlich, dass nur der Verkehr von den betreffenden Hosts, der für nicht-lokale Ziele bestimmt ist, durch den Tunnel geschickt wird. Dadurch wird sichergestellt, dass die betreffenden Hosts weiterhin auf lokale Ressourcen zugreifen können
Es sollte jedoch beachtet werden, dass, wenn die Hosts, die den Tunnel nutzen werden, so konfiguriert sind, dass sie lokale DNS-Server verwenden (z. B. den Schulrouter Plus selbst oder einen anderen lokalen DNS-Server), diese Konfiguration wahrscheinlich zu DNS-Lecks führt - d. h. DNS-Anfragen für die Hosts werden weiterhin über das normale WAN-Gateway und nicht über den Tunnel verarbeitet. Im Abschnitt am Ende dieser Anleitung finden Sie eine Diskussion über mögliche Lösungen für dieses Problem
-
Gehen Sie zuerst zu Firewall ‣ Aliase
-
Klicken Sie auf +, um einen neuen Alias hinzuzufügen
-
Konfigurieren Sie den Alias wie folgt (wenn eine Option unten nicht erwähnt wird, lassen Sie sie als Standard):
Aktiviert
Ausgewählt
Name
RFC1918_Networks
Typ
Netzwerk(e) im Dropdown-Menü auswählen
Inhalt
192.168.0.0/16 10.0.0.0/8 172.16.0.0/12
Beschreibung
Alle lokalen (RFC1918) Netzwerke
-
Speichern Sie den Alias, und klicken Sie dann auf Anwenden.
-
Dann gehen Sie zu Firewall ‣ Regeln ‣ [Name of interface for network in which hosts/network resides, eg LAN for LAN hosts]
-
Klicken Sie auf Hinzufügen, um eine neue Regel hinzuzufügen
-
Konfigurieren Sie die Regel wie folgt (wenn eine Option unten nicht erwähnt wird, lassen Sie sie als Standard):
Aktion
Pass
Schnell
Ausgewählt
Schnittstelle
Welche Schnittstelle auch immer Sie die Regel konfigurieren
Richtung
in
TCP/IP-Version
IPv4
Protokoll
jeder
Quelle / Invertieren
Nicht ausgewählt
Quelle
Wählen Sie den entsprechenden Hosts Alias, den Sie oben in der Dropdown-Liste erstellt haben (z. B.
WG_VPN_Hosts
)Ziel / Invertieren
Ausgewählt
Ziel
Wählen Sie den
RFC1918_Networks
Alias, den Sie oben in der Dropdown-Liste erstellt haben.Zielportbereich
jeder
Beschreibung
Fügen Sie eine hinzu, wenn Sie es wünschen
Gateway
Wählen Sie das Gateway, das Sie oben erstellt haben (z. B.
WAN_VPNProviderName
) -
Speichern Sie die Regel, und klicken Sie dann auf Änderungen übernehmen.
-
Stellen Sie dann sicher, dass sich die neue Regel über jeder anderen Regel auf der Schnittstelle befindet, die sonst ihren Betrieb stören würde. Sie möchten zum Beispiel, dass Ihre neue Regel über der Regel „Default allow LAN to any rule“ steht
Schritt 9 - Erstellen einer ausgehenden NAT-Regel
-
Weiter zu Firewall ‣ NAT ‣ Ausgehend
-
Wählen Sie „Hybride ausgehende NAT-Regelgenerierung“, wenn sie nicht bereits ausgewählt ist, und klicken Sie auf Speichern und dann Änderungen übernehmen.
-
Klicken Sie auf Hinzufügen, um eine neue Regel hinzuzufügen
-
Konfigurieren Sie die Regel wie folgt (wenn eine Option unten nicht erwähnt wird, lassen Sie sie als Standard):
Schnittstelle
Wählen Sie die Schnittstelle für Ihr WireGuard VPN (z.B.
WAN_VPNProviderName
)TCP/IP-Version
IPv4
Protokoll
jeder
Quelle invertieren
Nicht ausgewählt
Quelladresse
Wählen Sie den Alias für die Hosts/Netzwerke aus, die den Tunnel verwenden sollen (z. B.
WG_VPN_Hosts
)Quellport
jeder
Ziel invertieren
Nicht ausgewählt
Zieladresse
jeder
Zielhafen
jeder
Übersetzung / Ziel
Schnittstellenadresse
Beschreibung
Fügen Sie eine hinzu, wenn Sie es wünschen
-
Speichern Sie die Regel, und klicken Sie dann auf Änderungen übernehmen.
Umgang mit DNS-Lecks
Wie in Schritt 8 erwähnt, werden DNS-Anfragen von Hosts, die den Tunnel benutzen, durch das normale WAN-Gateway und nicht durch den Tunnel geleitet, wenn Ihr Netzwerk so konfiguriert ist, dass ein lokaler DNS-Server verwendet wird - z. B. ungebunden auf dem Schulrouter Plus oder auf einem anderen lokalen Host -. Dies führt dazu, dass die WAN-IP offengelegt wird.
Wenn Sie das vermeiden möchten, gibt es mehrere mögliche Lösungen. Welche Lösung am besten funktioniert, hängt natürlich von Ihrer Netzwerkkonfiguration und den gewünschten Ergebnissen ab.
Die Lösungen umfassen:
-
Zwingen Sie den lokalen DNS-Server, ebenfalls den Tunnel zu verwenden. Für einen lokalen DNS-Server, der nicht Schulrouter Plus ist, nehmen Sie die lokalen IPs dieses Servers in den in Schritt 7 erstellten Alias für die entsprechenden VPN-Hosts auf. Für den Schulrouter Plus selbst konfigurieren Sie den DNS-Server so, dass er das Tunnel-Gateway verwendet. Wenn Sie diese Lösung implementieren, wird der gesamte DNS-Verkehr für Ihr Netzwerk durch den Tunnel geleitet, nicht nur der DNS-Verkehr für die Hosts, die im Alias enthalten sind (und in der Tat wird bei einem lokalen DNS-Server, der nicht Schulrouter Plus ist, der gesamte Verkehr von diesem Server, nicht nur der DNS-Verkehr, durch den Tunnel geleitet). Dies ist unter Umständen für Ihre Umstände nicht wünschenswert
-
Wenn möglich, fangen Sie den DNS-Verkehr, der von den betreffenden Hosts, die den Tunnel benutzen, kommt, ab und leiten Sie diesen Verkehr (mit Hilfe einer Port-Weiterleitungsregel im Schulrouter Plus) an einen DNS-Server weiter, der von Ihrem VPN-Anbieter bereitgestellt wird (siehe Hinweis unten), oder an einen öffentlichen DNS-Server. Beachten Sie, dass dies nicht immer möglich sein wird - wenn der lokale DNS-Server, der generell für Ihr Netzwerk konfiguriert ist, nicht der Schulrouter Plus selbst ist und sich im gleichen Subnetz wie die Hosts befindet, die den Tunnel benutzen, dann werden DNS-Anfragen nicht über den Schulrouter Plus geleitet und eine Port-Weiterleitung auf dem Schulrouter Plus wird daher nicht funktionieren
-
Angenommen, Sie haben im Schulrouter Plus für die Hosts, die den Tunnel nutzen, statische DHCP-Zuordnungen konfiguriert, dann geben Sie in dieser Konfiguration entweder die von Ihrem VPN-Anbieter bereitgestellten DNS-Server (siehe Hinweis unten) oder öffentliche DNS-Server an. Dadurch werden die netzwerkweiten DNS-Einstellungen für diese Hosts außer Kraft gesetzt
-
Konfigurieren Sie öffentliche DNS-Server für Ihr gesamtes lokales Netzwerk anstelle lokaler DNS-Server
-
Setzen Sie die DNS-Einstellungen auf den betreffenden Hosts selbst manuell außer Kraft (sofern dies möglich ist), so dass die von DHCP bereitgestellten DNS-Server ignoriert und stattdessen entweder die von Ihrem VPN-Anbieter bereitgestellten DNS-Server (siehe Hinweis unten) oder öffentliche DNS-Server verwendet werden
Wenn es sich bei den von Ihrem VPN-Anbieter bereitgestellten DNS-Servern um lokale IPs handelt (d. h. innerhalb des Bereichs des in Schritt 8 erstellten RFC1918_Networks
Alias), dann müssen Sie eine zusätzliche Firewall-Regel im Schulrouter Plus erstellen, um sicherzustellen, dass Anfragen an diese Server das Tunnel-Gateway und nicht das normale WAN-Gateway verwenden. Diese Regel würde der in Schritt 8 erstellten Regel ähneln, mit dem Unterschied, dass das Ziel die DNS-Server-IPs Ihres VPN-Anbieters wären und das Kästchen „Ziel invertieren“ nicht markiert wäre. Diese Regel müsste ebenfalls über der in Schritt 8 erstellten Regel platziert werden