GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> OpenVPN

So richten Sie WireGuard unter Ubuntu 22.04 ein

Einführung

WireGuard ist ein leichtgewichtiges Virtual Private Network (VPN), das IPv4- und IPv6-Verbindungen unterstützt. Ein VPN ermöglicht es Ihnen, nicht vertrauenswürdige Netzwerke zu durchqueren, als ob Sie sich in einem privaten Netzwerk befänden. Es gibt Ihnen die Freiheit, sicher von Ihrem Smartphone oder Laptop aus auf das Internet zuzugreifen, wenn Sie mit einem nicht vertrauenswürdigen Netzwerk verbunden sind, wie dem WLAN in einem Hotel oder Café.

Die Verschlüsselung von WireGuard basiert auf öffentlichen und privaten Schlüsseln, damit Peers einen verschlüsselten Tunnel untereinander aufbauen können. Jede Version von WireGuard verwendet eine spezifische kryptografische Cipher-Suite, um Einfachheit, Sicherheit und Kompatibilität mit Peers zu gewährleisten.

Im Vergleich dazu verwenden andere VPN-Software wie OpenVPN und IPSec Transport Layer Security (TLS) und Zertifikate, um sich zu authentifizieren und verschlüsselte Tunnel zwischen Systemen aufzubauen. Verschiedene Versionen von TLS beinhalten Unterstützung für Hunderte von verschiedenen kryptografischen Suiten und Algorithmen, und während dies eine große Flexibilität zur Unterstützung verschiedener Clients ermöglicht, macht es auch die Konfiguration eines VPN, das TLS verwendet, zeitaufwändiger, komplexer und fehleranfälliger.

In diesem Tutorial richten Sie WireGuard auf einem Ubuntu 22.04-Server ein und konfigurieren dann einen anderen Computer so, dass er sich als Peer mit IPv4- und IPv6-Verbindungen verbindet (allgemein als Dual Stack bezeichnet). Verbindung). Sie erfahren auch, wie Sie den Internetverkehr des Peers durch den WireGuard-Server in einer Gateway-Konfiguration leiten, zusätzlich zur Verwendung des VPN für einen verschlüsselten Peer-to-Peer-Tunnel.

Für die Zwecke dieses Tutorials konfigurieren wir ein anderes Ubuntu 22.04-System als Peer (auch als Client bezeichnet) für den WireGuard-Server. Nachfolgende Tutorials in dieser Reihe erklären, wie WireGuard auf Windows-, macOS-, Android- und iOS-Systemen und -Geräten installiert und ausgeführt wird.

Hinweis: Wenn Sie WireGuard auf einem DigitalOcean Droplet einrichten möchten, beachten Sie, dass wir, wie viele Hosting-Anbieter, Gebühren für Bandbreitenüberschreitungen erheben. Achten Sie aus diesem Grund darauf, wie viel Datenverkehr Ihr Server verarbeitet. Weitere Informationen finden Sie auf dieser Seite.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

  • Ein Ubuntu 22.04-Server mit einem sudo-Nicht-Root-Benutzer und einer aktivierten Firewall. Um dies einzurichten, können Sie unserem Tutorial Initial Server Setup with Ubuntu 22.04 folgen. Wir werden dies als den WireGuard-Server bezeichnen in diesem Handbuch.
  • Sie benötigen einen Client-Rechner, den Sie verwenden, um sich mit Ihrem WireGuard-Server zu verbinden. In diesem Tutorial bezeichnen wir diese Maschine als WireGuard Peer . Für die Zwecke dieses Tutorials wird empfohlen, dass Sie Ihren lokalen Computer als WireGuard-Peer verwenden, aber Sie können Remote-Server oder Mobiltelefone als Clients verwenden, wenn Sie dies bevorzugen. Wenn Sie ein Remote-System verwenden, achten Sie darauf, alle optionalen Abschnitte später in diesem Tutorial zu befolgen, oder Sie sperren sich möglicherweise selbst aus dem System aus.
  • Um WireGuard mit IPv6 zu verwenden, müssen Sie außerdem sicherstellen, dass Ihr Server so konfiguriert ist, dass er diese Art von Datenverkehr unterstützt. Wenn Sie die IPv6-Unterstützung mit WireGuard aktivieren möchten und ein DigitalOcean-Droplet verwenden, lesen Sie bitte diese Dokumentationsseite So aktivieren Sie IPv6 auf Droplets. Sie können die IPv6-Unterstützung hinzufügen, wenn Sie ein Droplet erstellen, oder danach mithilfe der Anweisungen auf dieser Seite.

Schritt 1 – Installieren von WireGuard und Generieren eines Schlüsselpaars

Der erste Schritt in diesem Tutorial ist die Installation von WireGuard auf Ihrem Server. Aktualisieren Sie zunächst den Paketindex Ihres WireGuard-Servers und installieren Sie WireGuard mit den folgenden Befehlen. Sie werden möglicherweise aufgefordert, das Kennwort Ihres sudo-Benutzers einzugeben, wenn Sie sudo zum ersten Mal verwenden in dieser Sitzung:

  1. sudo apt update
  2. sudo apt install wireguard

Nachdem Sie WireGuard installiert haben, besteht der nächste Schritt darin, ein privates und ein öffentliches Schlüsselpaar für den Server zu generieren. Sie verwenden den integrierten wg genkey und wg pubkey Befehlen, um die Schlüssel zu erstellen, und fügen Sie dann den privaten Schlüssel zur Konfigurationsdatei von WireGuard hinzu.

Sie müssen auch die Berechtigungen für den Schlüssel ändern, den Sie gerade mit chmod erstellt haben Befehl, da die Datei standardmäßig von jedem Benutzer auf Ihrem Server gelesen werden kann.

Erstellen Sie den privaten Schlüssel für WireGuard und ändern Sie seine Berechtigungen mit den folgenden Befehlen:

  1. wg genkey | sudo tee /etc/wireguard/private.key
  2. sudo chmod go= /etc/wireguard/private.key

Das sudo chmod go=... Der Befehl entfernt alle Berechtigungen für die Datei für andere Benutzer und Gruppen als den Root-Benutzer, um sicherzustellen, dass nur er auf den privaten Schlüssel zugreifen kann.

Sie sollten eine einzelne Zeile base64 erhalten verschlüsselte Ausgabe, die der private Schlüssel ist. Eine Kopie der Ausgabe wird auch in /etc/wireguard/private.key gespeichert Datei zum späteren Nachschlagen durch tee Teil des Befehls. Notieren Sie sich den ausgegebenen privaten Schlüssel sorgfältig, da Sie ihn später in diesem Abschnitt zur Konfigurationsdatei von WireGuard hinzufügen müssen.

Im nächsten Schritt wird der entsprechende öffentliche Schlüssel erstellt, der aus dem privaten Schlüssel abgeleitet wird. Verwenden Sie den folgenden Befehl, um die öffentliche Schlüsseldatei zu erstellen:

  1. sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

Dieser Befehl besteht aus drei einzelnen Befehlen, die mit | verkettet werden (Pipe)-Operator:

  • sudo cat /etc/wireguard/private.key :Dieser Befehl liest die private Schlüsseldatei und gibt sie an den Standardausgabestrom aus.
  • wg pubkey :Der zweite Befehl nimmt die Ausgabe des ersten Befehls als Standardeingabe und verarbeitet sie, um einen öffentlichen Schlüssel zu generieren.
  • sudo tee /etc/wireguard/public.key :Der letzte Befehl nimmt die Ausgabe des Befehls zur Generierung des öffentlichen Schlüssels und leitet sie in die Datei mit dem Namen /etc/wireguard/public.key um .

Wenn Sie den Befehl ausführen, erhalten Sie erneut eine einzelne Zeile base64 verschlüsselte Ausgabe, die der öffentliche Schlüssel für Ihren WireGuard Server ist. Kopieren Sie ihn zu Referenzzwecken irgendwohin, da Sie den öffentlichen Schlüssel an jeden Peer verteilen müssen, der sich mit dem Server verbindet.

Schritt 2 – Auswahl von IPv4- und IPv6-Adressen

Im vorherigen Abschnitt haben Sie WireGuard installiert und ein Schlüsselpaar generiert, das zum Verschlüsseln des Datenverkehrs zum und vom Server verwendet wird. In diesem Abschnitt erstellen Sie eine Konfigurationsdatei für den Server und richten WireGuard so ein, dass es beim Neustart des Servers automatisch gestartet wird. Sie definieren auch private IPv4- und IPv6-Adressen zur Verwendung mit Ihrem WireGuard-Server und Peers.

Wenn Sie sowohl IPv4- als auch IPv6-Adressen verwenden möchten, befolgen Sie beide Abschnitte. Befolgen Sie andernfalls die Anweisungen im entsprechenden Abschnitt für die Netzwerkanforderungen Ihres VPN.

Schritt 2(a) – Auswählen eines IPv4-Bereichs

Wenn Sie Ihren WireGuard-Server mit IPv4-Peers verwenden, benötigt der Server eine Reihe privater IPv4-Adressen zur Verwendung für Clients und für seine Tunnelschnittstelle. Sie können einen beliebigen Bereich von IP-Adressen aus den folgenden reservierten Adressblöcken auswählen (wenn Sie mehr darüber erfahren möchten, wie diese Blöcke zugewiesen werden, besuchen Sie die RFC 1918-Spezifikation):

  • 10.0.0.0 bis 10.255.255.255 (Präfix 10/8)
  • 172.16.0.0 an 172.31.255.255 (Präfix 172.16/12)
  • 192.168.0.0 an 192.168.255.255 (Präfix 192.168/16)

Für die Zwecke dieses Tutorials verwenden wir 10.8.0.0/24 als Block von IP-Adressen aus dem ersten Bereich reservierter IPs. Dieser Bereich lässt bis zu 255 verschiedene Peer-Verbindungen zu und sollte im Allgemeinen keine überlappenden oder widersprüchlichen Adressen mit anderen privaten IP-Bereichen haben. Fühlen Sie sich frei, einen Adressbereich auszuwählen, der mit Ihrer Netzwerkkonfiguration funktioniert, wenn dieser Beispielbereich nicht mit Ihren Netzwerken kompatibel ist.

Der WireGuard Server verwendet eine einzelne IP-Adresse aus dem Bereich für seine private Tunnel-IPv4-Adresse. Wir verwenden 10.8.0.1/24 hier, aber jede Adresse im Bereich von 10.8.0.1 bis 10.8.0.255 kann verwendet werden. Notieren Sie sich die IP-Adresse, die Sie wählen, wenn Sie etwas anderes als 10.8.0.1/24 verwenden . Sie fügen diese IPv4-Adresse der Konfigurationsdatei hinzu, die Sie in Schritt 3 – Erstellen einer WireGuard-Serverkonfiguration definieren.

Schritt 2(b) – Auswählen eines IPv6-Bereichs

Wenn Sie WireGuard mit IPv6 verwenden, müssen Sie basierend auf dem Algorithmus in RFC 4193 ein eindeutiges lokales IPv6-Unicast-Adresspräfix generieren. Die Adressen, die Sie mit WireGuard verwenden, werden einer virtuellen Tunnelschnittstelle zugeordnet. Sie müssen einige Schritte ausführen, um ein zufälliges, eindeutiges IPv6-Präfix innerhalb des reservierten fd00::/8 zu generieren Block privater IPv6-Adressen.

Laut RFC besteht die empfohlene Methode zum Abrufen eines eindeutigen IPv6-Präfix darin, die Uhrzeit mit einem eindeutigen Identifizierungswert aus einem System wie einer Seriennummer oder einer Geräte-ID zu kombinieren. Diese Werte werden dann gehasht und abgeschnitten, was zu einem Satz von Bits führt, die als eindeutige Adresse innerhalb des reservierten privaten fd00::/8 verwendet werden können Block von IPs.

Um mit der Generierung eines IPv6-Bereichs für Ihren WireGuard-Server zu beginnen, erfassen Sie einen 64-Bit-Zeitstempel mit dem date Dienstprogramm mit dem folgenden Befehl:

  1. date +%s%N

Sie erhalten eine Zahl wie die folgende, die die Anzahl der Sekunden darstellt (der %s im date Befehl) und Nanosekunden (der %N ) seit 1970-01-01 00:00:00 UTC kombiniert zusammen:

Output1650301699497770167

Notieren Sie den Wert irgendwo zur späteren Verwendung in diesem Abschnitt. Kopieren Sie als Nächstes die machine-id Wert für Ihren Server aus /var/lib/dbus/machine-id Datei. Diese Kennung ist für Ihr System eindeutig und sollte sich nicht ändern, solange der Server existiert.

  1. cat /var/lib/dbus/machine-id

Sie erhalten eine Ausgabe wie die folgende:

/var/lib/dbus/machine-id610cef4946ed46da8f71dba9d66c67fb

Jetzt müssen Sie den Zeitstempel mit der machine-id kombinieren und hash den resultierenden Wert mit dem SHA-1-Algorithmus. Der Befehl verwendet das folgende Format:

printf <timestamp><machine-id> | sha1sum

Führen Sie den Befehl aus, indem Sie Ihren Zeitstempel und Ihre Maschinenidentitätswerte ersetzen:

  1. printf 1650301699497770167610cef4946ed46da8f71dba9d66c67fb | sha1sum

Sie erhalten einen Hash-Wert wie den folgenden:

Output442adea1488d96388dae9ab816045b24609a6c18  -

Beachten Sie, dass die Ausgabe von sha1sum Der Befehl ist hexadezimal, sodass die Ausgabe zwei Zeichen verwendet, um ein einzelnes Datenbyte darzustellen. Zum Beispiel 4f und 26 in der Beispielausgabe sind die ersten zwei Bytes der gehashten Daten.

Der Algorithmus im RFC erfordert nur die niederwertigsten (nachgestellten) 40 Bits oder 5 Bytes der gehashten Ausgabe. Verwenden Sie den cut Befehl zum Drucken der letzten 5 hexadezimal codierten Bytes aus dem Hash:

  1. printf 442adea1488d96388dae9ab816045b24609a6c18 | cut -c 31-

Das -c Argument teilt dem cut mit Befehl, um nur einen bestimmten Satz von Zeichen auszuwählen. Der 31- Argument teilt cut mit um alle Zeichen von Position 31 bis zum Ende der Eingabezeile zu drucken.

Sie sollten eine Ausgabe wie die folgende erhalten:

Output24609a6c18

In dieser Beispielausgabe ist der Byte-Satz:24 60 9a 6c 18 .

Jetzt können Sie Ihr eindeutiges IPv6-Netzwerkpräfix erstellen, indem Sie die 5 Bytes, die Sie generiert haben, mit dem fd anhängen Präfix, alle 2 trennend Bytes mit einem : Doppelpunkt für bessere Lesbarkeit. Da jedes Subnetz in Ihrem eindeutigen Präfix insgesamt 18.446.744.073.709.551.616 mögliche IPv6-Adressen enthalten kann, können Sie das Subnetz auf eine Standardgröße von /64 beschränken der Einfachheit halber.

Verwenden der zuvor mit /64 generierten Bytes Subnetzgröße lautet das resultierende Präfix wie folgt:

Unique Local IPv6 Address Prefixfd24:609a:6c18::/64

Dieses fd24:609a:6c18::/64 Bereich verwenden Sie, um Ihren WireGuard-Tunnelschnittstellen auf dem Server und den Peers individuelle IP-Adressen zuzuweisen. Um dem Server eine IP zuzuweisen, fügen Sie eine 1 hinzu nach dem abschließenden :: Figuren. Die resultierende Adresse ist fd24:609a:6c18::1/64 . Peers können jede IP im Bereich verwenden, aber normalerweise erhöhen Sie den Wert jedes Mal um eins, wenn Sie einen Peer hinzufügen, z. fd24:609a:6c18::2/64 . Notieren Sie sich die IP-Adresse und fahren Sie im nächsten Abschnitt dieses Tutorials mit der Konfiguration des WireGuard-Servers fort.

Schritt 3 – Erstellen einer WireGuard-Serverkonfiguration

Bevor Sie die Konfiguration Ihres WireGuard-Servers erstellen, benötigen Sie die folgenden Informationen:

  1. Stellen Sie sicher, dass Sie den privaten Schlüssel aus Schritt 1 – Installieren von WireGuard und Generieren eines Schlüsselpaars – zur Hand haben.

  2. Wenn Sie WireGuard mit IPv4 verwenden, benötigen Sie die IP-Adresse, die Sie für den Server in Schritt 2(a) – Auswählen eines IPv4-Bereichs ausgewählt haben, in diesem Beispiel 10.8.0.1/24 .

  3. Wenn Sie WireGuard mit IPv6 verwenden, benötigen Sie die IP-Adresse für den Server, die Sie in Schritt 2(b) – Auswählen eines IPv6-Bereichs – generiert haben. In diesem Beispiel lautet die IP fd24:609a:6c18::1/64 .

Sobald Sie den erforderlichen privaten Schlüssel und die IP-Adresse(n) haben, erstellen Sie eine neue Konfigurationsdatei mit nano oder Ihren bevorzugten Editor, indem Sie den folgenden Befehl ausführen:

  1. sudo nano /etc/wireguard/wg0.conf

Fügen Sie der Datei die folgenden Zeilen hinzu und ersetzen Sie den hervorgehobenen base64_encoded_private_key_goes_here durch Ihren privaten Schlüssel Wert und die IP-Adresse(n) auf Address Linie. Sie können auch den ListenPort ändern line, wenn WireGuard auf einem anderen Port verfügbar sein soll:

/etc/wireguard/wg0.conf[Interface]
PrivateKey = base64_encoded_private_key_goes_here
Address = 10.8.0.1/24, fd24:609a:6c18::1/64
ListenPort = 51820
SaveConfig = true

Die SaveConfig line stellt sicher, dass beim Herunterfahren einer WireGuard-Schnittstelle alle Änderungen in der Konfigurationsdatei gespeichert werden.

Speichern und schließen Sie die /etc/wireguard/wg0.conf Datei. Wenn Sie nano verwenden , können Sie dies mit CTRL+X tun , dann Y und ENTER bestätigen. Sie haben jetzt eine anfängliche Serverkonfiguration, auf der Sie aufbauen können, je nachdem, wie Sie Ihren WireGuard VPN-Server verwenden möchten.

Schritt 4 – Anpassen der Netzwerkkonfiguration des WireGuard-Servers

Wenn Sie WireGuard verwenden, um einen Peer mit dem WireGuard-Server zu verbinden, um auf Dienste nur auf dem Server zuzugreifen , dann brauchen Sie diesen Abschnitt nicht auszufüllen. Wenn Sie den Internetverkehr Ihres WireGuard-Peers über den WireGuard-Server leiten möchten, müssen Sie die IP-Weiterleitung konfigurieren, indem Sie diesem Abschnitt des Tutorials folgen.

Um die Weiterleitung zu konfigurieren, öffnen Sie die /etc/sysctl.conf Datei mit nano oder Ihren bevorzugten Editor:

  1. sudo nano /etc/sysctl.conf

Wenn Sie IPv4 mit WireGuard verwenden, fügen Sie am Ende der Datei die folgende Zeile hinzu:

/etc/sysctl.conf
net.ipv4.ip_forward=1

Wenn Sie IPv6 mit WireGuard verwenden, fügen Sie diese Zeile am Ende der Datei hinzu:

/etc/sysctl.conf
net.ipv6.conf.all.forwarding=1

Wenn Sie sowohl IPv4 als auch IPv6 verwenden, stellen Sie sicher, dass Sie beide Zeilen einschließen. Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Führen Sie Folgendes aus, um die Datei zu lesen und die neuen Werte für Ihre aktuelle Terminalsitzung zu laden:

  1. sudo sysctl -p
Outputnet.ipv6.conf.all.forwarding = 1
net.ipv4.ip_forward = 1

Jetzt kann Ihr WireGuard Server eingehenden Datenverkehr vom virtuellen VPN-Ethernet-Gerät an andere auf dem Server und von dort an das öffentliche Internet weiterleiten. Mit dieser Konfiguration können Sie den gesamten Webverkehr von Ihrem WireGuard Peer über die IP-Adresse Ihres Servers leiten, und die öffentliche IP-Adresse Ihres Clients wird effektiv verborgen.

Bevor der Datenverkehr jedoch korrekt über Ihren Server geleitet werden kann, müssen Sie einige Firewall-Regeln konfigurieren. Diese Regeln stellen sicher, dass der Datenverkehr zu und von Ihrem WireGuard-Server und Peers ordnungsgemäß fließt.

Schritt 5 – Konfigurieren der Firewall des WireGuard-Servers

In diesem Abschnitt bearbeiten Sie die Konfiguration des WireGuard-Servers, um Firewall-Regeln hinzuzufügen, die sicherstellen, dass der Datenverkehr zum und vom Server und den Clients korrekt weitergeleitet wird. Wie im vorherigen Abschnitt überspringen Sie diesen Schritt, wenn Sie Ihr WireGuard VPN nur für eine Maschine-zu-Maschine-Verbindung verwenden, um auf Ressourcen zuzugreifen, die auf Ihr VPN beschränkt sind.

Um WireGuard VPN-Datenverkehr durch die Firewall des Servers zuzulassen, müssen Sie Masquerading aktivieren, ein iptables-Konzept, das eine dynamische Netzwerkadressübersetzung (NAT) im laufenden Betrieb bietet, um Client-Verbindungen korrekt weiterzuleiten.

Suchen Sie zuerst die öffentliche Netzwerkschnittstelle Ihres WireGuard Servers mit der ip route Unterbefehl:

  1. ip route list default

Die öffentliche Schnittstelle ist die Zeichenfolge in der Ausgabe dieses Befehls, die auf das Wort „dev“ folgt. Dieses Ergebnis zeigt beispielsweise die Schnittstelle mit dem Namen eth0 , die unten hervorgehoben wird:

Outputdefault via 203.0.113.1 dev eth0 proto static

Notieren Sie sich den Namen Ihres Geräts, da Sie es zu den iptables hinzufügen werden Regeln im nächsten Schritt.

Um Ihrem WireGuard-Server Firewall-Regeln hinzuzufügen, öffnen Sie /etc/wireguard/wg0.conf Datei mit nano oder wieder Ihren bevorzugten Editor.

  1. sudo nano /etc/wireguard/wg0.conf

Am Ende der Datei nach dem SaveConfig = true Zeile, fügen Sie die folgenden Zeilen ein:

/etc/wireguard/wg0.conf. . .
PostUp = ufw route allow in on wg0 out on eth0
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on eth0
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Das PostUp Leitungen laufen, wenn der WireGuard Server den virtuellen VPN-Tunnel startet. Im Beispiel hier werden drei ufw hinzugefügt und iptables Regeln:

  • ufw route allow in on wg0 out on eth0 - Diese Regel ermöglicht die Weiterleitung von IPv4- und IPv6-Datenverkehr, der auf wg0 eingeht VPN-Schnittstelle zum eth0 Netzwerkschnittstelle auf dem Server. Es funktioniert in Verbindung mit net.ipv4.ip_forward und net.ipv6.conf.all.forwarding sysctl-Werte, die Sie im vorherigen Abschnitt konfiguriert haben.
  • iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE - Diese Regel konfiguriert das Masquerading und schreibt IPv4-Datenverkehr um, der auf wg0 eingeht VPN-Schnittstelle, damit es so aussieht, als stamme es direkt von der öffentlichen IPv4-Adresse des WireGuard-Servers.
  • ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE - Diese Regel konfiguriert Masquerading und schreibt IPv6-Datenverkehr um, der auf wg0 eingeht VPN-Schnittstelle, damit es so aussieht, als stamme es direkt von der öffentlichen IPv6-Adresse des WireGuard-Servers.

Der PreDown Regeln werden ausgeführt, wenn der WireGuard Server den virtuellen VPN-Tunnel stoppt. Diese Regeln sind das Gegenteil von PostUp Regeln und die Funktion, die Weiterleitungs- und Maskierungsregeln für die VPN-Schnittstelle rückgängig zu machen, wenn das VPN angehalten wird.

Bearbeiten Sie in beiden Fällen die Konfiguration, um die für Ihr VPN geeigneten IPv4- und IPv6-Regeln ein- oder auszuschließen. Wenn Sie beispielsweise nur IPv4 verwenden, können Sie die Zeilen mit den ip6tables ausschließen Befehle.

Wenn Sie dagegen nur IPv6 verwenden, bearbeiten Sie die Konfiguration so, dass sie nur die ip6tables enthält Befehle. Der ufw Leitungen sollten für jede Kombination von IPv4- und IPv6-Netzwerken vorhanden sein. Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Der letzte Teil der Konfiguration der Firewall auf Ihrem WireGuard-Server besteht darin, Datenverkehr zum und vom WireGuard-UDP-Port selbst zuzulassen. Wenn Sie den Port in der /etc/wireguard/wg0.conf des Servers nicht geändert haben -Datei ist der Port, den Sie öffnen werden, 51820 . Wenn Sie beim Bearbeiten der Konfiguration einen anderen Port ausgewählt haben, stellen Sie sicher, dass Sie ihn im folgenden UFW-Befehl ersetzen.

Falls Sie beim Befolgen des vorausgesetzten Tutorials vergessen haben, den SSH-Port zu öffnen, fügen Sie ihn auch hier hinzu:

  1. sudo ufw allow 51820/udp
  2. sudo ufw allow OpenSSH

Hinweis :Wenn Sie eine andere Firewall verwenden oder Ihre UFW-Konfiguration angepasst haben, müssen Sie möglicherweise zusätzliche Firewall-Regeln hinzufügen. Wenn Sie sich beispielsweise entscheiden, Ihren gesamten Netzwerkverkehr über die VPN-Verbindung zu tunneln, müssen Sie sicherstellen, dass Port 53 ist Datenverkehr ist für DNS-Anfragen und Ports wie 80 zulässig und 443 für HTTP- bzw. HTTPS-Verkehr. Wenn Sie andere Protokolle über das VPN verwenden, müssen Sie auch Regeln für diese hinzufügen.

Deaktivieren Sie nach dem Hinzufügen dieser Regeln UFW und aktivieren Sie es erneut, um es neu zu starten und die Änderungen aus allen von Ihnen geänderten Dateien zu laden:

  1. sudo ufw disable
  2. sudo ufw enable

Sie können bestätigen, dass die Regeln vorhanden sind, indem Sie ufw status ausführen Befehl. Führen Sie es aus, und Sie sollten eine Ausgabe wie die folgende erhalten:

  1. sudo ufw status
OutputStatus: active

To                         Action      From
--                         ------      ----
51280/udp                  ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
51280/udp (v6)             ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6)

Ihr WireGuard Server ist jetzt so konfiguriert, dass er den Datenverkehr des VPN korrekt verarbeitet, einschließlich Weiterleitung und Maskierung für Peers. Wenn die Firewall-Regeln vorhanden sind, können Sie den WireGuard-Dienst selbst starten, um auf Peer-Verbindungen zu lauschen.

Schritt 6 – Starten des WireGuard-Servers

WireGuard kann so konfiguriert werden, dass es als systemd ausgeführt wird Dienst mit seinem eingebauten wg-quick Skript. Während Sie das wg manuell verwenden könnten Befehl, den Tunnel jedes Mal zu erstellen, wenn Sie das VPN verwenden möchten, ist dies ein manueller Prozess, der sich wiederholt und fehleranfällig wird. Stattdessen können Sie systemctl verwenden um den Tunnel mit Hilfe von wg-quick zu verwalten Skript.

Verwenden eines systemd Service bedeutet, dass Sie WireGuard so konfigurieren können, dass es beim Booten startet, sodass Sie sich jederzeit mit Ihrem VPN verbinden können, solange der Server läuft. Aktivieren Sie dazu wg-quick Dienst für wg0 Tunnel, den Sie definiert haben, indem Sie ihn zu systemctl hinzufügen :

  1. sudo systemctl enable [email protected]

Beachten Sie, dass der Befehl den Namen des Tunnels wg0 angibt Gerätename als Teil des Dienstnamens. Dieser Name wird dem /etc/wireguard/wg0.conf Konfigurationsdatei. Dieser Ansatz zur Benennung bedeutet, dass Sie mit Ihrem Server so viele separate VPN-Tunnel erstellen können, wie Sie möchten.

Beispielsweise könnten Sie ein Tunnelgerät und den Namen prod haben und seine Konfigurationsdatei wäre /etc/wireguard/prod.conf . Jede Tunnelkonfiguration kann unterschiedliche IPv4-, IPv6- und Client-Firewall-Einstellungen enthalten. Auf diese Weise können Sie mehrere verschiedene Peer-Verbindungen unterstützen, jede mit ihren eigenen eindeutigen IP-Adressen und Routing-Regeln.

Starten Sie nun den Dienst:

  1. sudo systemctl start [email protected]

Überprüfen Sie mit dem folgenden Befehl, ob der WireGuard-Dienst aktiv ist. Sie sollten active (running) sehen in der Ausgabe:

  1. sudo systemctl status [email protected]
Output● [email protected] - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
     Active: active (exited) since Mon 2022-04-18 17:22:13 UTC; 2s ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 98834 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 98834 (code=exited, status=0/SUCCESS)
        CPU: 193ms

Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] wg setconf wg0 /dev/fd/63
Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip -4 address add 10.8.0.1/24 dev wg0
Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip -6 address add fd24:609a:6c18::1/64 dev wg0
Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip link set mtu 1420 up dev wg0
Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ufw route allow in on wg0 out on ens3
Apr 18 17:22:13 thats-my-jam wg-quick[98890]: Rule added
Apr 18 17:22:13 thats-my-jam wg-quick[98890]: Rule added (v6)
Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE
Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip6tables -t nat -I POSTROUTING -o ens3 -j MASQUERADE
Apr 18 17:22:13 thats-my-jam systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

Die Ausgabe zeigt die ip Befehle, die zum Erstellen des virtuellen wg0 verwendet werden Gerät und weisen Sie ihm die IPv4- und IPv6-Adressen zu, die Sie der Konfigurationsdatei hinzugefügt haben. Sie können diese Regeln verwenden, um Fehler im Tunnel zu beheben, oder mit dem wg Befehl selbst, wenn Sie versuchen möchten, die VPN-Schnittstelle manuell zu konfigurieren.

Wenn der Server konfiguriert und ausgeführt wird, besteht der nächste Schritt darin, Ihren Client-Computer als WireGuard-Peer zu konfigurieren und sich mit dem WireGuard-Server zu verbinden.

Schritt 7 – Konfigurieren eines WireGuard-Peers

Das Konfigurieren eines WireGuard-Peers ähnelt dem Einrichten des WireGuard-Servers. Sobald Sie die Client-Software installiert haben, generieren Sie ein Paar aus öffentlichem und privatem Schlüssel, entscheiden sich für eine oder mehrere IP-Adressen für den Peer, definieren eine Konfigurationsdatei für den Peer und starten dann den Tunnel mit dem Befehl wg-quick Skript.

Sie können Ihrem VPN beliebig viele Peers hinzufügen, indem Sie mit den folgenden Schritten ein Schlüsselpaar generieren und konfigurieren. Wenn Sie dem VPN mehrere Peers hinzufügen, achten Sie darauf, ihre privaten IP-Adressen im Auge zu behalten, um Kollisionen zu vermeiden.

Um den WireGuard-Peer zu konfigurieren, stellen Sie sicher, dass Sie das WireGuard-Paket mit dem folgenden apt installiert haben Befehle. Auf dem WireGuard-Peer-Lauf:

  1. sudo apt update
  2. sudo apt install wireguard

Erstellen des Schlüsselpaars des WireGuard-Peers

Als Nächstes müssen Sie das Schlüsselpaar auf dem Peer mit den gleichen Schritten wie auf dem Server generieren. Fahren Sie auf Ihrem lokalen Computer oder Remote-Server, der als Peer dienen soll, fort und erstellen Sie den privaten Schlüssel für den Peer mit den folgenden Befehlen:

  1. wg genkey | sudo tee /etc/wireguard/private.key
  2. sudo chmod go= /etc/wireguard/private.key

Auch hier erhalten Sie eine einzelne Zeile base64 verschlüsselte Ausgabe, die der private Schlüssel ist. Eine Kopie der Ausgabe wird auch in /etc/wireguard/private.key gespeichert . Notieren Sie sich den ausgegebenen privaten Schlüssel sorgfältig, da Sie ihn später in diesem Abschnitt zur Konfigurationsdatei von WireGuard hinzufügen müssen.

Verwenden Sie als Nächstes den folgenden Befehl, um die öffentliche Schlüsseldatei zu erstellen:

  1. sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

Sie erhalten wieder eine einzelne Zeile base64 verschlüsselte Ausgabe, die der öffentliche Schlüssel für Ihren WireGuard Peer ist. Kopieren Sie ihn irgendwo als Referenz, da Sie den öffentlichen Schlüssel an den WireGuard-Server verteilen müssen, um eine verschlüsselte Verbindung herzustellen.

Erstellen der WireGuard Peer-Konfigurationsdatei

Nachdem Sie nun ein Schlüsselpaar haben, können Sie eine Konfigurationsdatei für den Peer erstellen, die alle Informationen enthält, die er benötigt, um eine Verbindung zum WireGuard-Server herzustellen.

Für die Konfigurationsdatei benötigen Sie einige Angaben:

  • Das base64 verschlüsselter privater Schlüssel, den Sie auf dem Peer generiert haben.

  • Die IPv4- und IPv6-Adressbereiche, die Sie auf dem WireGuard-Server definiert haben.

  • Das base64 verschlüsselter öffentlicher Schlüssel vom WireGuard Server.

  • Die öffentliche IP-Adresse und Portnummer des WireGuard Servers. Normalerweise ist dies die IPv4-Adresse, aber wenn Ihr Server eine IPv6-Adresse und Ihr Client-Rechner eine IPv6-Verbindung zum Internet hat, können Sie diese anstelle von IPv4 verwenden.

Öffnen Sie mit all diesen Informationen eine neue /etc/wireguard/wg0.conf Datei auf dem WireGuard Peer-Rechner mit nano oder Ihren bevorzugten Editor:

  1. sudo nano /etc/wireguard/wg0.conf

Fügen Sie der Datei die folgenden Zeilen hinzu und ersetzen Sie die verschiedenen Daten nach Bedarf in den hervorgehobenen Abschnitten:

/etc/wireguard/wg0.conf[Interface]
PrivateKey = base64_encoded_peer_private_key_goes_here
Address = 10.8.0.2/24
Address = fd24:609a:6c18::2/64

[Peer]
PublicKey = U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
AllowedIPs = 10.8.0.0/24, fd24:609a:6c18::/64
Endpoint = 203.0.113.1:51820

Beachten Sie, wie die erste Address line verwendet eine IPv4-Adresse aus dem 10.8.0.0/24 Subnetz, das Sie zuvor ausgewählt haben. Diese IP-Adresse kann alles im Subnetz sein, solange sie sich von der IP des Servers unterscheidet. Das Erhöhen von Adressen um 1 jedes Mal, wenn Sie einen Peer hinzufügen, ist im Allgemeinen der einfachste Weg, IPs zuzuweisen.

Beachten Sie ebenso die zweite Address line verwendet eine IPv6-Adresse aus dem zuvor generierten Subnetz und erhöht die Adresse des Servers um eins. Auch hier ist jede IP im Bereich gültig, wenn Sie sich entscheiden, eine andere Adresse zu verwenden.

Der andere bemerkenswerte Teil der Datei sind die letzten AllowedIPs Linie. Diese beiden IPv4- und IPv6-Bereiche weisen den Peer an, Datenverkehr nur dann über das VPN zu senden, wenn das Zielsystem eine IP-Adresse in einem der beiden Bereiche hat. Verwenden der AllowedIPs Direktive können Sie das VPN auf dem Peer darauf beschränken, sich nur mit anderen Peers und Diensten im VPN zu verbinden, oder Sie können die Einstellung so konfigurieren, dass der gesamte Datenverkehr über das VPN getunnelt und der WireGuard-Server als Gateway verwendet wird.

Wenn Sie nur IPv4 verwenden, lassen Sie das abschließende fd24:609a:6c18::/64 weg Bereich (einschließlich , Komma). Wenn Sie dagegen nur IPv6 verwenden, fügen Sie nur den fd24:609a:6c18::/64 hinzu Präfix und lassen Sie 10.8.0.0/24 weg IPv4-Bereich.

In both cases, if you would like to send all your peer’s traffic over the VPN and use the WireGuard Server as a gateway for all traffic, then you can use 0.0.0.0/0 , which represents the entire IPv4 address space, and ::/0 for the entire IPv6 address space.

(Optional) Configuring a Peer to Route All Traffic Over the Tunnel

If you have opted to route all of the peer’s traffic over the tunnel using the 0.0.0.0/0 or ::/0 routes and the peer is a remote system, then you will need to complete the steps in this section. If your peer is a local system then it is best to skip this section.

For remote peers that you access via SSH or some other protocol using a public IP address, you will need to add some extra rules to the peer’s wg0.conf Datei. These rules will ensure that you can still connect to the system from outside of the tunnel when it is connected. Otherwise, when the tunnel is established, all traffic that would normally be handled on the public network interface will not be routed correctly to bypass the wg0 tunnel interface, leading to an inaccessible remote system.

First, you’ll need to determine the IP address that the system uses as its default gateway. Run the following ip route command:

  1. ip route list table main default

Sie erhalten eine Ausgabe wie die folgende:

Outputdefault via 203.0.113.1 dev eth0 proto static

Note the gateway’s highlighted IP address 203.0.113.1 for later use, and device eth0 . Your device name may be different. If so, substitute it in place of eth0 in the following commands.

Next find the public IP for the system by examining the device with the ip address show command:

  1. ip -brief address show eth0

Sie erhalten eine Ausgabe wie die folgende:

Outputeth0             UP             203.0.113.5/20 10.20.30.40/16 2604:a880:400:d1::3d3:6001/64 fe80::68d5:beff:feff:974c/64

In this example output, the highlighted 203.0.113.5 IP (without the trailing /20 ) is the public address that is assigned to the eth0 device that you’ll need to add to the WireGuard configuration.

Now open the WireGuard Peer’s /etc/wireguard/wg0.conf file with nano or your preferred editor.

  1. sudo nano /etc/wireguard/wg0.conf

Before the [Peer] line, add the following 4 lines:

PostUp = ip rule add table 200 from 203.0.113.5
PostUp = ip route add table 200 default via 203.0.113.1
PreDown = ip rule delete table 200 from 203.0.113.5
PreDown = ip route delete table 200 default via 203.0.113.1

[Peer]
. . .

These lines will create a custom routing rule, and add a custom route to ensure that public traffic to the system uses the default gateway.

  • PostUp = ip rule add table 200 from 203.0.113.5 - This command creates a rule that checks for any routing entries in the table numbered 200 when the IP matches the system’s public 203.0.113.5 address.
  • PostUp = ip route add table 200 default via 203.0.113.1 - This command ensures that any traffic being processed by the 200 table will use the 203.0.113.1 gateway for routing, instead of the WireGuard interface.

The PreDown lines remove the custom rule and route when the tunnel is shutdown.

Note:The table number 200 is arbitrary when constructing these rules. You can use a value between 2 and 252, or you can use a custom name by adding a label to the /etc/iproute2/rt_tables file and then referring to the name instead of the numeric value.

For more information about how routing tables work in Linux visit the Routing Tables Section of the Guide to IP Layer Network Administration with Linux.

If you are routing all the peer’s traffic over the VPN, ensure that you have configured the correct sysctl and iptables rules on the WireGuard Server in Step 4 — Adjusting the WireGuard Server’s Network Configuration and Step 5 — Configuring the WireGuard Server’s Firewall.

(Optional) Configuring the WireGuard Peer’s DNS Resolvers

If you are using the WireGuard Server as a VPN gateway for all your peer’s traffic, you will need to add a line to the [Interface] section that specifies DNS resolvers. If you do not add this setting, then your DNS requests may not be secured by the VPN, or they might be revealed to your Internet Service Provider or other third parties.

If you are only using WireGuard to access resources on the VPN network or in a peer-to-peer configuration then you can skip this section.

To add DNS resolvers to your peer’s configuration, first determine which DNS servers your WireGuard Server is using. Run the following command on the WireGuard Server , substituting in your ethernet device name in place of eth0 if it is different from this example:

  1. resolvectl dns eth0

You should receive output like the following:

OutputLink 2 (eth0): 67.207.67.2 67.207.67.3 2001:4860:4860::8844 2001:4860:4860::8888

The IP addresses that are output are the DNS resolvers that the server is using. You can choose to use any or all of them, or only IPv4 or IPv6 depending on your needs. Make a note of the resolvers that you will use.

Next you will need to add your chosen resolvers to the WireGuard Peer’s configuration file. Back on the WireGuard Peer , open /etc/wireguard/wg0.conf Datei mit nano oder Ihren bevorzugten Editor:

  1. sudo nano /etc/wireguard/wg0.conf

Before the [Peer] line, add the following:

DNS = 67.207.67.2 2001:4860:4860::8844

[Peer]
. . .

Again, depending on your preference or requirements for IPv4 and IPv6, you can edit the list according to your needs.

Once you are connected to the VPN in the following step, you can check that you are sending DNS queries over the VPN by using a site like DNS leak test.com.

You can also check that your peer is using the configured resolvers with the resolvectl dns command like you ran on the server. You should receive output like the following, showing the DNS resolvers that you configured for the VPN tunnel:

OutputGlobal: 67.207.67.2 67.207.67.3
. . .

With all of these DNS resolver settings in place, you are now ready to add the peer’s public key to the server, and then start the WireGuard tunnel on the peer.

Step 8 — Adding the Peer’s Public Key to the WireGuard Server

Before connecting the peer to the server, it is important to add the peer’s public key to the WireGuard Server. This step ensures that you will be able to connect to and route traffic over the VPN. Without completing this step the WireGuard server will not allow the peer to send or receive any traffic over the tunnel.

Ensure that you have a copy of the base64 encoded public key for the WireGuard Peer by running:

  1. sudo cat /etc/wireguard/public.key
OutputPeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=

Now log into the WireGuard server, and run the following command:

  1. sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,fd24:609a:6c18::2

Note that the allowed-ips portion of the command takes a comma separated list of IPv4 and IPv6 addresses. You can specify individual IPs if you would like to restrict the IP address that a peer can assign itself, or a range like in the example if your peers can use any IP address in the VPN range. Also note that no two peers can have the same allowed-ips setting.

If you would like to update the allowed-ips for an existing peer, you can run the same command again, but change the IP addresses. Multiple IP addresses are supported. For example, to change the WireGuard Peer that you just added to add an IP like 10.8.0.100 to the existing 10.8.0.2 and fd24:609a:6c18::2 IPs, you would run the following:

  1. sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,10.8.0.100,fd24:609a:6c18::2

Once you have run the command to add the peer, check the status of the tunnel on the server using the wg command:

  1. sudo wg
Outputinterface: wg0
 public key: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 private key: (hidden)
 listening port: 51820

peer: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 allowed ips: 10.8.0.2/32, fd24:609a:6c18::/128

Notice how the peer line shows the WireGuard Peer’s public key, and the IP addresses, or ranges of addresses that it is allowed to use to assign itself an IP.

Now that you have defined the peer’s connection parameters on the server, the next step is to start the tunnel on the peer.

Step 9 — Connecting the WireGuard Peer to the Tunnel

Now that your server and peer are both configured to support your choice of IPv4, IPv6, packet forwarding, and DNS resolution, it is time to connect the peer to the VPN tunnel.

Since you may only want the VPN to be on for certain use cases, we’ll use the wg-quick command to establish the connection manually. If you would like to automate starting the tunnel like you did on the server, follow those steps in Step 6 — Starting the WireGuard Server section instead of using the wq-quick Befehl.

In case you are routing all traffic through the VPN and have set up DNS forwarding, you’ll need to install the resolvconf utility on the WireGuard Peer before you start the tunnel. Run the following command to set this up:

  1. sudo apt install resolvconf

To start the tunnel, run the following on the WireGuard Peer:

  1. sudo wg-quick up wg0

Sie erhalten eine Ausgabe wie die folgende:

Output[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd24:609a:6c18::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x

Notice the highlighted IPv4 and IPv6 addresses that you assigned to the peer.

If you set the AllowedIPs on the peer to 0.0.0.0/0 and ::/0 (or to use ranges other than the ones that you chose for the VPN), then your output will resemble the following:

Output[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd24:609a:6c18::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x
[#] wg set wg0 fwmark 51820
[#] ip -6 route add ::/0 dev wg0 table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] ip6tables-restore -n
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

In this example, notice the highlighted routes that the command added, which correspond to the AllowedIPs in the peer configuration.

You can check the status of the tunnel on the peer using the wg command:

  1. sudo wg
Outputinterface: wg0
 public key: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 private key: (hidden)
 listening port: 49338
 fwmark: 0xca6c

peer: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 endpoint: 203.0.113.1:51820
 allowed ips: 10.8.0.0/24, fd24:609a:6c18::/64
 latest handshake: 1 second ago
 transfer: 6.50 KiB received, 15.41 KiB sent

You can also check the status on the server again, and you will receive similar output.

Verify that your peer is using the VPN by using the ip route and ip -6 route Befehle. If you are using the VPN as a gateway for all your Internet traffic, check which interface will be used for traffic destined to CloudFlare’s 1.1.1.1 and 2606:4700:4700::1111 DNS resolvers.

If you are only using WireGuard to access resources on the VPN, substitute a valid IPv4 or IPv6 address like the gateway itself into these commands. For example 10.8.0.1 or fd24:609a:6c18::1 .

  1. ip route get 1.1.1.1
Output1.1.1.1 dev wg0 table 51820 src 10.8.0.2 uid 1000
   cache

Notice the wg0 device is used and the IPv4 address 10.8.0.2 that you assigned to the peer. Likewise, if you are using IPv6, run the following:

  1. ip -6 route get 2606:4700:4700::1111
Output2606:4700:4700::1111 from :: dev wg0 table 51820 src fd24:609a:6c18::2 metric 1024 pref medium

Again note the wg0 interface, and the IPv6 address fd24:609a:6c18::2 that you assigned to the peer.

If your peer has a browser installed, you can also visit ipleak.net and ipv6-test.com to confirm that your peer is routing its traffic over the VPN.

Once you are ready to disconnect from the VPN on the peer, use the wg-quick command:

  1. sudo wg-quick down wg0

You will receive output like the following indicating that the VPN tunnel is shut down:

Output[#] ip link delete dev wg0
[#] resolvconf -d tun.wg0 -f

If you set the AllowedIPs on the peer to 0.0.0.0/0 and ::/0 (or to use ranges other than the ones that you chose for the VPN), then your output will resemble the following:

Output[#] ip rule delete table 200 from 203.0.113.5
[#] ip route delete table 200 default via 203.0.113.1
[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip -6 rule delete table 51820
[#] ip -6 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0
[#] resolvconf -d tun.wg0 -f
[#] iptables-restore -n
[#] ip6tables-restore -n

To reconnect to the VPN, run the wg-quick up wg0 command again on the peer. If you would like to completely remove a peer’s configuration from the WireGuard Server, you can run the following command, being sure to substitute the correct public key for the peer that you want to remove:

  1. sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= remove

Typically you will only need to remove a peer configuration if the peer no longer exists, or if its encryption keys are compromised or changed. Otherwise it is better to leave the configuration in place so that the peer can reconnect to the VPN without requiring that you add its key and allowed-ips each time.

Conclusion

In this tutorial you installed the WireGuard package and tools on both the server and client Ubuntu 22.04 systems. You set up firewall rules for WireGuard, and configured kernel settings to allow packet forwarding using the sysctl command on the server. You learned how to generate private and public WireGuard encryption keys, and how to configure the server and peer (or peers) to connect to each other.

If your network uses IPv6, you also learned how to generate a unique local address range to use with peer connections. Finally, you learned how to limit which traffic should go over the VPN by restricting the network prefixes that the peer can use, as well as how to use the WireGuard Server as a VPN gateway to handle all Internet traffic for peers.

If you would like to learn more about WireGuard, including how to configure more advanced tunnels, or use WireGuard with containers, visit the official WireGuard documentation.


OpenVPN
  1. So richten Sie WireGuard VPN auf Ubuntu ein (eine Schritt-für-Schritt-Anleitung)

  2. So richten Sie Nginx als Reverse Proxy unter Ubuntu 20.04 ein

  3. So richten Sie eine Zertifizierungsstelle unter Ubuntu 22.04 ein und konfigurieren sie

  4. So richten Sie NFS-Server und -Client unter Ubuntu 20.04 ein

  5. So richten Sie einen TeamSpeak-Server unter Ubuntu 16.04 ein

So richten Sie den CUPS-Druckserver unter Ubuntu 20.04 ein

So richten Sie einen OpenVPN-Server unter Ubuntu 22.04 ein und konfigurieren ihn

So richten Sie den E-Mail-Server mit Plesk unter Ubuntu 20.04 ein

So richten Sie den Prosody XMPP-Server unter Ubuntu 20.04 ein

So richten Sie den Prosody XMPP-Server unter Ubuntu 18.04 ein

So richten Sie den Shadowsocks-libev-Proxyserver unter Ubuntu ein