WireGuard Road Warrior Einrichtung
Einführung
WireGuard ist ein einfaches, schnelles VPN-Protokoll, das moderne Kryptographie. Es zielt darauf ab, schneller und weniger komplex als IPsec zu sein, während es gleichzeitig eine wesentlich leistungsfähigere Alternative zu OpenVPN darstellt. Ursprünglich für den Linux-Kernel veröffentlicht, ist es nun plattformübergreifend und breit einsetzbar.
Dieser Artikel beschreibt die Einrichtung eines zentralen WireGuard-Servers, der auf einem Schulrouter Plus läuft und die Konfiguration eines Clients.
Schritt 1 - Installation
Installieren Sie das Plugin über System ‣ Firmware ‣ Erweiterungen und wählen Sie das Paket os-WireGuard.
Sobald das Plugin installiert ist, aktualisieren Sie die Seite und Sie finden das WireGuard-Konfigurationsmenü über VPN ‣ WireGuard.
Schritt 2a - WireGuard Server einrichten
Erstellen Sie zunächst einen WireGuard VPN-Server über VPN ‣ WireGuard unter dem Reiter Lokal. Legen Sie über die Schaltfläche + eine neue Instanz an und passen Sie die folgenden Werte nach Bedarf an:
Aktiviert | Ausgewählt | Kontrollieren Sie, um den Server zu aktivieren. |
Name | WireGuard | Der Name der Server-Instanz |
Instanz | (automatisch ausgefüllt) | Automatisch generierte Server-Instanznummer |
Öffentlicher Schlüssel | (leer) | Leer lassen, Schlüssel werden automatisch generiert |
Privater Schlüssel | (leer) | Leer lassen, Schlüssel werden automatisch generiert |
Port | 51820 | Server-Listen-Port. Wenn mehrere Server existieren, muss dieser Port eindeutig sein. |
DNS-Server | 192.168.1.254 | Bei Bedarf mit DNS-Server befüllen |
Tunneladresse | 10.10.10.1/24 | Verwenden Sie die CIDR-Notation und vermeiden Sie Subnetzüberschneidungen mit regelmäßig verwendeten Netzwerken. |
Peers | (leer) | Liste der Peers für diesen Server, bei Erstkonfiguration leer lassen |
Routen deaktivieren | Nicht ausgewählt | Damit wird die Installation von Routen verhindert. |
Stellen Sie sicher, dass Tunneladresse ein /24 oder die gewünschte CIDR-notierte Subnetzmaske ist, verwenden Sie kein /32.
Wenn der Tunnel nach dem Klicken auf Speichern erstellt ist, öffnen Sie die neu erstellte Instanz erneut und notieren Sie sich den öffentlichen Schlüssel, der gerade generiert wurde. Dieser Schlüssel wird beim Einrichten jedes Clients benötigt, der eine Verbindung zu diesem Server herstellen möchte. Achten Sie darauf, ihn zu schützen und sichere Übertragungsmethoden zu den Clients zu verwenden (z. B. PGP-verschlüsselt oder per SMS).
Verwenden Sie die Registerkarte Endpunkte, um den ersten Client hinzuzufügen. Verwenden Sie die Schaltfläche + und konfigurieren Sie Folgendes:
Aktiviert | Ausgewählt | Kontrollieren Sie, um den Server zu aktivieren. |
Name | Kunde1 | Der Name des Clients |
Öffentlicher Schlüssel | PubKey | Öffentlichen Schlüssel vom Client bereitstellen |
Geheimnis teilen | (leer) | optional - gemeinsames Geheimnis (PSK) für diese Gegenstelle |
ErlaubteIPs | 10.10.10.2/32 | IP-Adresse des Clients (Peer) - achten Sie darauf, bei mehreren Clients /32 zu verwenden. |
Endpunkt-Adresse | (leer) | Nicht erforderlich für eingehende Verbindungen - dynamisch |
Endpunkt Port | (leer) | Nicht erforderlich für eingehende Verbindungen - dynamisch |
Keepalive | (leer) | optional - setzt persistentes Keepalive-Intervall |
Klicken Sie auf Speichern und kehren Sie zur Registerkarte Lokal zurück. Wählen Sie nun unter Peers die neu angelegte Gegenstelle aus. Klicken Sie auf Speichern.
Aktivieren Sie anschließend WireGuard unter der Registerkarte Allgemein und fahren Sie mit der Einrichtung fort. Fügen Sie unter Endpunkte weitere Clients hinzu und erlauben Sie ihnen den Zugriff auf den Wireguard-Server, indem Sie sie unter Peers auswählen.
Durch Drücken von Speichern wird effektiv wg-quick down wg0
gefolgt von wg-quick up wg0
ausgeführt (wobei 0 die Instanz-ID des Servers ist). Obwohl es nicht oft erforderlich ist, ist es manchmal nützlich, einen nicht startenden Tunnel über die CLI mit wg show
zu debuggen. Konfigurationsdateien werden unter /usr/local/etc/wireguard/wgX.conf
gespeichert.
Schritt 2b - Firewall-Regeln einrichten
Damit sich externe Clients mit dem WireGuard-Server verbinden können, müssen Firewall-Regeln erstellt werden, die diesen Datenverkehr vom WAN zum LAN zulassen. Wählen Sie Firewall ‣ NAT ‣ Portweiterleitung und klicken Sie auf +Hinzufügen, um eine Regel mit den folgenden Informationen zu erstellen:
Schnittstelle | WAN | Die Schnittstelle, für die diese Regel gilt |
TCP/IP-Version | IPv4 | Wählen Sie die Internetprotokollversion, für die diese Regel gilt |
Protokoll | UDP | WireGuard arbeitet über UDP |
Quelle | Annahme von Datenverkehr aus beliebigen Quellen | |
Quellport | Verkehr auf einem beliebigen Port annehmen | |
Ziel | WAN-Adresse | Verkehrsziel |
Zielhafen | 51820 | Spezifizieren Sie den gewünschten Port oder Portbereich. |
Ziel-IP umleiten | 192.168.1.254 | Die LAN-IP der Firewall |
Zielport umleiten | 51820 | Der Listen-Port für den WireGuard-Server |
Beschreibung | WG WAN zu LAN | Optional - geben Sie eine Beschreibung an |
Wenn granularere Regeln erforderlich sind, beachten Sie, dass es eine neue Schnittstelle wg0 gibt, an der diese konfiguriert werden können.
Der letzte Teil besteht darin, den Verkehr aus dem WireGuard-Netzwerk zuzulassen. Definieren Sie zunächst einen Alias (z. B. VPN_clients) und fügen Sie darin die IP-Adressen (z. B. 10.10.10.2 und 10.10.10.3) oder das Subnetz (z. B. 10.10.10.0/24) der WireGuard-Clients ein, von denen Verkehr zugelassen werden soll. Tun Sie dies über Firewall ‣ Aliase (klicken Sie unten rechts auf +).
Erstellen Sie dann eine Firewall-Regel über Firewall ‣ Regeln ‣ WireGuard (klicken Sie oben rechts auf +Hinzufügen), mit den folgenden Informationen (wenn ein Element nicht angegeben ist, lassen Sie es auf dem Standardwert):
Schnittstelle | WireGuard | Die Schnittstelle, für die diese Regel gilt |
Quelle | VPN_Kunden | Quellsubnetz - verwenden Sie den wie oben definierten Alias. |
Ziel | jeglich | Verkehrsziel |
Beschreibung | WG WAN zu LAN | Optional - geben Sie eine Beschreibung an |
Wenn Sie nur eine lokale WireGuard-Instanz und nur einen WireGuard-Endpunkt konfiguriert haben, können Sie das standardmäßige WireGuard-Netz als Quelle verwenden, anstatt einen neuen Alias zu definieren und zu verwenden.
Die unter Firewall ‣ Regeln ‣ WireGuard definierten Regeln haben Vorrang vor den individuell für jeden Tunnel konfigurierten Regeln.
Verbinden Sie sich von einem Client aus mit dem Tunnel und verifizieren Sie die Verbindung über VPN ‣ WireGuard unter Verwendung der Registerkarten List Configuration und Handshakes, wo die Peers anhand ihrer öffentlichen Schlüssel identifiziert werden. Zu diesem Zeitpunkt sollte der Tunnel betriebsbereit sein, aber der Client hat nur eingeschränkten Zugriff.
Schritt 2c - Zuweisungen und Routing
Bisher erlaubt die hier dokumentierte Einrichtung Ihren Clients, die über Zugelassene IPs konfigurierten internen Netzwerke zu erreichen. Ein häufiger Anwendungsfall ist jedoch, dass Benutzer den gesamten Datenverkehr durch einen VPN-Tunnel leiten möchten. Weisen Sie dem WireGuard dazu über Schnittstellen ‣ Zuweisungen ein Interface zu und wählen Sie im Dropdown-Menü Neues Interface die wgX-Instanz aus. Klicken Sie auf +, um die Schnittstelle zuzuweisen. Klicken Sie nach der Zuweisung auf Speichern.
Benennen Sie die Schnittstelle nach Bedarf um und wählen Sie Entfernen der Schnittstelle verhindern, indem Sie die Schnittstelle in der Liste Schnittstellen ‣ [wgX] auswählen. Weisen Sie der Schnittstelle keine IP-Adresse zu.
Der nächste Schritt ist die Konfiguration von Outbound NAT. Gehen Sie zu Firewall ‣ NAT ‣ Ausgehend und fügen Sie eine Regel hinzu. Stellen Sie zunächst sicher, dass die Regelerstellung auf manuell oder hybrid eingestellt ist (wenn Sie unsicher sind, wählen Sie hybrid). Fügen Sie eine Regel (über +Hinzufügen oben rechts) mit den folgenden Werten hinzu (wenn nicht ausdrücklich unten erwähnt, belassen Sie es bei den Standardwerten):
Schnittstelle | WAN | Die Schnittstelle, für die die Regel gilt |
Quelladresse | wg0 Netz | Tunnelnetzwerk zuvor konfiguriert |
Übersetzung / Ziel | WAN-Adresse | Pakete, die dieser Regel entsprechen, werden auf die hier angegebene IP-Adresse abgebildet. |
Um das Internet von einem Client über das VPN zu erreichen, konfigurieren Sie AllowedIPs auf 0.0.0.0/0.
Bei der Zuweisung von Schnittstellen können diesen Gateways hinzugefügt werden. Dies ist nützlich, wenn ein Ausgleich des Datenverkehrs über mehrere VPNs erforderlich ist oder in komplexeren Routing-Szenarien.
Gehen Sie dazu auf System ‣ Gateways ‣ Einzeln und fügen Sie ein neues Gateway hinzu. Wählen Sie die entsprechende WireGuard-Schnittstelle und setzen Sie das Gateway auf dynamisch.
Schritt 3 - WireGuard Client einrichten
Die Schlüsselgenerierung kann auf jedem Gerät mit installierten WireGuard Client Tools durchgeführt werden. Ein Einzeiler zur Erzeugung eines passenden privaten und öffentlichen Schlüsselpaares ist wg genkey | tee private.key | wg pubkey > public.key
.
Die Client-Konfiguration sprengt weitgehend den Rahmen dieses Artikels, da es eine so große Anzahl möglicher Ziele gibt. Die wichtigsten Informationen, die zur Konfiguration eines Clients erforderlich sind, sind jedoch:
-
Adresse - Serverseitig wird dies als **Tunneladresse** bezeichnet
-
DNS - DNS-Server
-
Endpunkt - DNS-Eintrag oder IP unterstützt, hier den Port angeben
-
Öffentlicher Schlüssel - Verweist auf den öffentlichen Schlüssel des WireGuard-Servers
-
AllowedIPs - Konfigurieren Sie, welcher Verkehr (nach Subnetz) über den Tunnel gesendet wird.
Anhang A - Beispielkonfigurationen
Beachten Sie, dass sich der WireGuard noch in der Entwicklung befindet und sich diese Konfigurationen ohne Vorwarnung ändern können. Sie dienen nur zur Orientierung.
Diese Beispielschlüssel dürfen nicht wiederverwendet werden!
Ein Beispiel für eine Clientkonfigurationsdatei:
[Interface]
PrivateKey = 8GboYh0YF3q/hJhoPFoL3HM/ObgOuC8YI6UXWsgWL2M=
Address = 10.10.10.2/32
DNS = 192.168.1.254
[Peer]
PublicKey = OwdegSTyhlpw7Dbpg8VSUBKXF9CxoQp2gAOdwgqtPVI=
AllowedIPs = 0.0.0.0/0
Endpoint = vpn.example.com:51820
Ein Beispiel für eine Server-Konfigurationsdatei:
[Interface]
Address = 10.10.10.1/24
DNS = 192.168.1.254
ListenPort = 51820
PrivateKey = YNqHwpcAmVj0lVzPSt3oUnL7cRPKB/geVxccs0C0kk0=
[Peer]
PublicKey = CLnGaiAfyf6kTBJKh0M529MnlqfFqoWJ5K4IAJ2+X08=
AllowedIPs = 10.10.10.2/32