Kategorie:WireGuard

Aus Foxwiki

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 wie dem WLAN in einem Hotel oder Café verbunden sind.

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 verschiedener kryptografischer 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 Lernprogramm richten Sie WireGuard auf einem Ubuntu 20.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- Verbindung bezeichnet).

  • Sie erfahren auch, wie Sie den Internetverkehr des Peers über 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 20.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 dieser Seite .

Voraussetzungen

  • Ein Ubuntu 20.04-Server mit einem sudo-Nicht-Root-Benutzer und einer aktivierten Firewall.
  • Um dies einzurichten, können Sie unserem Initial Server Setup with Ubuntu 20.04 .
  • Wir werden dies in diesem Handbuch als WireGuard-Server .
  • Sie benötigen einen Client-Computer, 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, befolgen Sie unbedingt alle optionalen Abschnitte später in diesem Tutorial, oder Sie sperren sich möglicherweise 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 How to Enable IPv6 on Droplets.
  • Sie können IPv6-Unterstützung hinzufügen, wenn Sie ein Droplet erstellen, oder danach mithilfe der Anweisungen auf dieser Seite.

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 dies zum ersten Mal verwenden sudo in dieser Sitzung:
# apt update
# 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 die integrierte wg genkeyund 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 der erstellt haben chmod 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:

wg genkey | # tee /etc/wireguard/private.key
# chmod go= /etc/wireguard/private.key

Die 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 von erhalten base64verschlüsselte Ausgabe, die der private Schlüssel ist.

  • Eine Kopie der Ausgabe wird auch in der gespeichert /etc/wireguard/private.key Datei zum späteren Nachschlagen durch die 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:
# cat /etc/wireguard/private.key | wg pubkey | # tee /etc/wireguard/public.key

Dieser Befehl besteht aus drei einzelnen Befehlen, die mithilfe von 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 um /etc/wireguard/public.key.

Wenn Sie den Befehl ausführen, erhalten Sie erneut eine einzelne Zeile von base64verschlüsselte Ausgabe, die der öffentliche Schlüssel für Ihren WireGuard Server ist.

  • Kopieren Sie ihn zu Referenzzwecken an einen beliebigen Ort, da Sie den öffentlichen Schlüssel an jeden Peer verteilen müssen, der sich mit dem Server verbindet.

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.

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.0zu 10.255.255.255(10/8 Präfix)
  • 172.16.0.0zu 172.31.255.255(Präfix 172.16/12)
  • 192.168.0.0zu 192.168.255.255(Präfix 192.168/16)

Für die Zwecke dieses Tutorials verwenden wir 10.8.0.0/24als 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.
  • Sie können gerne einen Adressbereich auswä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 werden verwenden 10.8.0.1/24 hier, aber jede Adresse im Bereich von 10.8.0.1zu 10.8.0.255 kann verwendet werden.
  • Notieren Sie sich die IP-Adresse, die Sie wählen, wenn Sie etwas anderes verwenden 10.8.0.1/24.
  • Sie fügen diese IPv4-Adresse der Konfigurationsdatei hinzu, die Sie in Schritt 3 – Erstellen einer WireGuard-Serverkonfiguration .

Auswählen eines IPv6-Bereichs

Wenn Sie WireGuard mit IPv6 verwenden, müssen Sie basierend auf dem Algorithmus in RFC 4193 .

  • 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 der reservierten zu generieren fd00::/8Block 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 der reservierten privaten verwendet werden können fd00::/8Block von IPs.

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

date +%s%N

Sie erhalten eine Zahl wie die folgende, die die Anzahl der Sekunden (die %sin dem dateBefehl) und Nanosekunden (die %N) seit 1970-01-01 00:00:00 UTC kombiniert:

1628101352127592197

Notieren Sie den Wert irgendwo zur späteren Verwendung in diesem Abschnitt.

  • Als nächstes kopieren Sie die machine-id Wert für Ihren Server aus dem /var/lib/dbus/machine-idDatei.
  • Diese Kennung ist für Ihr System eindeutig und sollte sich nicht ändern, solange der Server existiert.
cat /var/lib/dbus/machine-id

Sie erhalten eine Ausgabe wie die folgende:

/var/lib/dbus/machine-id
20086c25853947c7aeee2ca1ea849d7d

Jetzt müssen Sie den Zeitstempel mit dem kombinieren machine-id 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:

printf 162810135212759219720086c25853947c7aeee2ca1ea849d7d | sha1sum

Sie erhalten einen Hash-Wert wie den folgenden:

4f267c51857d6dc93a0bca107bca2f0d86fac3bc  -

Beachten Sie, dass die Ausgabe der sha1sumDer Befehl ist hexadezimal, sodass die Ausgabe zwei Zeichen verwendet, um ein einzelnes Datenbyte darzustellen.

  • Zum Beispiel 4fund 26in 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 die cut Befehl zum Drucken der letzten 5 hexadezimal codierten Bytes aus dem Hash:
printf 4f267c51857d6dc93a0bca107bca2f0d86fac3bc | cut -c 31-

Die -c Argument sagt die cut Befehl, um nur einen bestimmten Satz von Zeichen auszuwählen.

  • Das 31-Argument erzählt cut um alle Zeichen von Position 31 bis zum Ende der Eingabezeile zu drucken.

Sie sollten eine Ausgabe wie die folgende erhalten:

0d86fac3bc

In dieser Beispielausgabe ist der Satz von Byte

Jetzt können Sie Ihr eindeutiges IPv6-Netzwerkpräfix erstellen, indem Sie die 5 Bytes, die Sie generiert haben, mit anhängen fdPräfix, trennen alle 2 Bytes mit a :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 /64der Einfachheit halber.

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

Unique Local IPv6 Address Prefix
fd0d:86fa:c3bc::/64

Das fd0d:86fa:c3bc::/64Bereich 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 a hinzu 1nach dem Finale ::Figuren.
  • Die resultierende Adresse lautet fd0d:86fa:c3bc::/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 fd0d:86fa:c3bc::/64.
  • Notieren Sie sich die IP-Adresse und fahren Sie mit der Konfiguration des WireGuard-Servers im nächsten Abschnitt dieses Tutorials fort.

Erstellen einer WireGuard-Serverkonfiguration

Bevor Sie die Konfiguration Ihres WireGuard Servers erstellen, benötigen Sie die folgenden Informationen:# Sie sicher, dass Sie den privaten Schlüssel aus Schritt 1 – Installieren von WireGuard und Generieren eines Schlüsselpaars – .

  1. Wenn Sie WireGuard mit IPv4 verwenden, benötigen Sie die IP-Adresse, die Sie in Schritt 2(a) – Auswahl eines IPv4- haben, was in diesem Beispiel lautet .
  2. 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- .
  • In diesem Beispiel ist die IP .

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

# nano /etc/wireguard/wg0.conf

Fügen Sie der Datei die folgenden Zeilen hinzu und ersetzen Sie den hervorgehobenen durch Ihren privaten Schlüssel base64_encoded_private_key_goes_hereWert und die IP-Adresse(n) auf der AddressLinie.

  • Sie können die auch ändern ListenPortZeile, wenn Sie möchten, dass WireGuard auf einem anderen Port verfügbar ist:
/etc/wireguard/wg0.conf
[Interface]
PrivateKey = base64_encoded_private_key_goes_here
Address = 10.8.0.1/24, fd0d:86fa:c3bc::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 verwenden nano, können Sie dies mit tun CTRL+X, 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.

Anpassen der Netzwerkkonfiguration des WireGuard-Servers

Wenn Sie WireGuard verwenden, um einen Peer mit dem WireGuard-Server zu verbinden, um nur auf Dienste auf dem Server, müssen Sie diesen Abschnitt nicht ausfü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 verwenden nano oder Ihr bevorzugter Editor:

# nano /etc/sysctl.conf

Wenn Sie IPv4 mit WireGuard verwenden, fügen Sie die folgende Zeile am Ende der Datei 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:

# sysctl -p

net.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.

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 bereitstellt, um Client-Verbindungen korrekt weiterzuleiten.

Suchen Sie zunächst die öffentliche Netzwerkschnittstelle Ihres WireGuard Servers mit der ip route Unterbefehl:

ip route list default

Die öffentliche Schnittstelle ist die Zeichenfolge, die in der Ausgabe dieses Befehls gefunden wird, die auf das Wort „dev“ folgt.

  • Dieses Ergebnis zeigt beispielsweise die benannte Schnittstelle eth0, die unten hervorgehoben wird:
default via 203.0.113.1 dev eth0 proto static

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

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

# 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

Die PostUp Leitungen laufen, wenn der WireGuard Server den virtuellen VPN-Tunnel startet.

  • Im Beispiel hier werden drei hinzugefügt ufw und iptables Regeln:* ufw route allow in on wg0 out on - Diese Regel ermöglicht die Weiterleitung von IPv4- und IPv6-Datenverkehr, der auf dem eingeht wg0VPN-Schnittstelle zum eth0Netzwerkschnittstelle auf dem Server.
  • Es funktioniert in Verbindung mit der net.ipv4.ip_forwardund net.ipv6.conf.all.forwardingsysctl-Werte, die Sie im vorherigen Abschnitt konfiguriert haben.
  • iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE- Diese Regel konfiguriert Masquerading und schreibt IPv4-Datenverkehr um, der auf dem eingeht wg0VPN-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 dem eingeht wg0VPN-Schnittstelle, damit es so aussieht, als stamme es direkt von der öffentlichen IPv6-Adresse des WireGuard-Servers.

Die PreDown Regeln werden ausgeführt, wenn der WireGuard Server den virtuellen VPN-Tunnel stoppt.

  • Diese Regeln sind die Umkehrung der PostUp Regeln und die Funktion, die Weiterleitungs- und Maskierungsregeln für die VPN-Schnittstelle rückgängig zu machen, wenn das VPN gestoppt 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 ausschließen ip6tablesBefehle.

Wenn Sie dagegen nur IPv6 verwenden, bearbeiten Sie die Konfiguration so, dass sie nur die enthält ip6tablesBefehle.

  • Das 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 im Server nicht geändert haben /etc/wireguard/wg0.conf Datei, der Port, den Sie öffnen werden, ist 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:

# ufw allow 51820/udp
# 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 diesen Port sicherstellen 53Datenverkehr ist für DNS-Anfragen und Ports wie zulässig 80und 443für HTTP- bzw.
  • HTTPS-Verkehr.
  • Wenn es andere Protokolle gibt, die Sie ü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:

# ufw disable
# ufw enable

Sie können bestätigen, dass die Regeln vorhanden sind, indem Sie die ausführen ufw statusBefehl.

  • Führen Sie es aus, und Sie sollten eine Ausgabe wie die folgende erhalten:
# ufw status
Status: 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 VPN-Datenverkehr 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.

Starten des WireGuard-Servers

WireGuard kann so konfiguriert werden, dass es als ausgeführt wird systemd Dienst mit seinem eingebauten wg-quickSkript.

  • Während Sie die manuell verwenden könnten wgBefehl, 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 verwenden systemctl den Tunnel mit Hilfe des zu verwalten wg-quick Skript.

Verwendung einer 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 die wg-quick Dienst für die wg0Tunnel, den Sie durch Hinzufügen definiert haben systemctl:
# systemctl enable wg-quick@wg0.service

Beachten Sie, dass der Befehl den Namen des Tunnels angibt wg0 Gerätename als Teil des Dienstnamens.

  • Dieser Name entspricht dem /etc/wireguard/.confKonfigurationsdatei.
  • 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 von haben prod 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:

# systemctl start wg-quick@wg0.service

Überprüfen Sie mit dem folgenden Befehl, ob der WireGuard-Dienst aktiv ist.

  • Das solltest du sehen active (running)in der Ausgabe:
# systemctl status wg-quick@wg0.service
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2021-08-25 15:24:14 UTC; 5s 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: 3245 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 3245 (code=exited, status=0/SUCCESS)
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] wg setconf wg0 /dev/fd/63
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -4 address add 10.8.0.1/24 dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -6 address add fd0d:86fa:c3bc::1/64 dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip link set mtu 1420 up dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ufw route allow in on wg0 out on eth0
Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added
Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added (v6)
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
Aug 25 15:24:14 wg0 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

Die Ausgabe zeigt die ip Befehle, die zum Erstellen der virtuellen Datei verwendet werden wg0 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 eine Verbindung zum WireGuard-Server herzustellen.

Konfigurieren eines WireGuard-Peers

Das Konfigurieren eines WireGuard-Peers ähnelt dem Einrichten des WireGuard-Servers.

  • Nachdem 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 der 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 installiert haben, indem Sie Folgendes verwenden apt Befehle.

  • Auf dem WireGuard-Peer-Lauf:
# apt update
# 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:
wg genkey | tee /etc/wireguard/private.key
# chmod go= /etc/wireguard/private.key

Auch hier erhalten Sie eine einzelne Zeile von base64verschlüsselte Ausgabe, die der private Schlüssel ist.

  • Eine Kopie der Ausgabe wird auch in der gespeichert /etc/wireguard/private.key.
  • 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:

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

Sie erhalten wieder eine einzelne Zeile von base64verschlü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 Konfigurationsdatei des WireGuard-Peers

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:* Die base64verschlüsselter privater Schlüssel, den Sie auf dem Peer generiert haben.

  • Die IPv4- und IPv6-Adressbereiche, die Sie auf dem WireGuard-Server definiert haben.
  • Die base64verschlü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 hat und Ihr Client-Computer 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 verwenden nano oder Ihr bevorzugter Editor:

# 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 = fd0d:86fa:c3bc::2/64
[Peer]
PublicKey = U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
AllowedIPs = 10.8.0.0/24, fd0d:86fa:c3bc::/64
Endpoint = 203.0.113.1:51820

Beachten Sie, wie die erste Addressline verwendet eine IPv4-Adresse von der 10.8.0.0/24Subnetz, 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, wie die zweite Address line verwendet eine IPv6-Adresse aus dem Subnetz, das Sie zuvor generiert haben, 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 ist der letzte 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.
  • Verwendung 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 Zeichen weg fd0d:86fa:c3bc::/64 Bereich (einschließlich der ,Komma).

  • Umgekehrt, wenn Sie nur IPv6 verwenden, dann schließen Sie nur die ein fd0d:86fa:c3bc::/64voranstellen und weglassen 10.8.0.0/24IPv4-Bereich.

Wenn Sie in beiden Fällen den gesamten Datenverkehr Ihres Peers über das VPN senden und den WireGuard-Server als Gateway für den gesamten Datenverkehr verwenden möchten, können Sie verwenden 0.0.0.0/0, die den gesamten IPv4-Adressraum darstellt, und ::/0für den gesamten IPv6-Adressraum.

(Optional) Konfigurieren eines Peers zum Weiterleiten des gesamten Datenverkehrs über den Tunnel

Wenn Sie sich dafür entschieden haben, den gesamten Datenverkehr des Peers über den Tunnel zu leiten, indem Sie die 0.0.0.0/0 oder ::/0routen und der Peer ein Remote-System ist, müssen Sie die Schritte in diesem Abschnitt ausführen.

  • Wenn Ihr Peer ein lokales System ist, überspringen Sie diesen Abschnitt am besten.

Für Remote-Peers, auf die Sie über SSH oder ein anderes Protokoll mit einer öffentlichen IP-Adresse zugreifen, müssen Sie einige zusätzliche Regeln zu den Peers hinzufügen wg0.conf Datei.

  • Diese Regeln stellen sicher, dass Sie sich immer noch von außerhalb des Tunnels mit dem System verbinden können, wenn es verbunden ist.
  • Andernfalls wird beim Aufbau des Tunnels der gesamte Datenverkehr, der normalerweise über die öffentliche Netzwerkschnittstelle abgewickelt würde, nicht korrekt geroutet, um die zu umgehen wg0Tunnelschnittstelle, was zu einem unzugänglichen Remote-System führt.

Zunächst müssen Sie die IP-Adresse ermitteln, die das System als Standard-Gateway verwendet.

  • Führen Sie Folgendes aus ip routeBefehl:
ip route list table main default

Sie erhalten eine Ausgabe wie die folgende:

default via 203.0.113.1 dev eth0 proto static

Beachten Sie die hervorgehobene IP-Adresse des Gateways für spätere Verwendung und Gerät.

  • Ihr Gerätename kann anders lauten.
  • Wenn ja, ersetzen Sie es durch eth0 in den folgenden Befehlen.

Suchen Sie als Nächstes die öffentliche IP-Adresse für das System, indem Sie das Gerät mit untersuchen ip address show Befehl:

ip -brief address show eth0

Sie erhalten eine Ausgabe wie die folgende:

eth0             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 dieser Beispielausgabe ist das hervorgehoben IP (ohne die nachgestellte /20) ist die öffentliche Adresse, die der zugewiesen ist eth0Gerät, das Sie der WireGuard-Konfiguration hinzufügen müssen.

Öffnen Sie nun die des WireGuard Peers /etc/wireguard/wg0.conf Datei mit nano oder Ihren bevorzugten Editor.

# nano /etc/wireguard/wg0.conf

Vor dem [Peer]Zeile, fügen Sie die folgenden 4 Zeilen hinzu:

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]
. . .

Diese Zeilen erstellen eine benutzerdefinierte Routing-Regel und fügen eine benutzerdefinierte Route hinzu, um sicherzustellen, dass der öffentliche Datenverkehr zum System das Standard-Gateway verwendet.

PostUp = ip rule add table 200 from 

Dieser Befehl erstellt eine Regel, die nach Routing-Einträgen in der Tabelle mit der Nummer sucht 200wenn die IP mit der öffentlichen des Systems übereinstimmt die Anschrift.

PostUp = ip route add table 200 default via 

Dieser Befehl stellt sicher, dass jeglicher Datenverkehr von verarbeitet wird 200Tabelle verwendet die Gateway für das Routing anstelle der WireGuard-Schnittstelle.

Die PreDown Zeilen entfernen die benutzerdefinierte Regel und Route, wenn der Tunnel heruntergefahren wird.

Hinweis
Die Tischnummer 200 ist bei der Konstruktion dieser Regeln willkürlich. 
  • Sie können einen Wert zwischen 2 und 252 verwenden, oder Sie können einen benutzerdefinierten Namen verwenden, indem Sie dem eine Bezeichnung hinzufügen /etc/iproute2/rt_tables Datei und bezieht sich dann auf den Namen anstelle des numerischen Werts.

Weitere Informationen zur Funktionsweise von Routing-Tabellen unter Linux finden Sie im Abschnitt „Routing-Tabellen“ des Handbuchs zur IP-Layer-Netzwerkverwaltung unter Linux .

Wenn Sie den gesamten Datenverkehr des Peers über das VPN leiten, stellen Sie sicher, dass Sie das richtige konfiguriert haben sysctlund iptablesRegeln auf dem WireGuard-Server in Schritt 4 – Anpassen der Netzwerkkonfiguration des WireGuard-Servers und Schritt 5 – Konfigurieren der Firewall des WireGuard-Servers .

(Optional) Konfigurieren der DNS-Resolver des WireGuard-Peers

Wenn Sie den WireGuard Server als VPN-Gateway für den gesamten Datenverkehr Ihres Peers verwenden, müssen Sie eine Zeile zu hinzufügen [Interface]Abschnitt, der DNS-Resolver angibt.

  • Wenn Sie diese Einstellung nicht hinzufügen, werden Ihre DNS-Anforderungen möglicherweise nicht durch das VPN gesichert oder sie werden Ihrem Internetdienstanbieter oder anderen Dritten offengelegt.

Wenn Sie WireGuard nur für den Zugriff auf Ressourcen im VPN-Netzwerk oder in einer Peer-to-Peer-Konfiguration verwenden, können Sie diesen Abschnitt überspringen.

Um DNS-Resolver zur Konfiguration Ihres Peers hinzuzufügen, ermitteln Sie zunächst, welche DNS-Server Ihr WireGuard-Server verwendet.

  • Führen Sie den folgenden Befehl auf dem WireGuard-Server aus und ersetzen Sie dabei Ihren Ethernet-Gerätenamen anstelle von eth0wenn es sich von diesem Beispiel unterscheidet:
resolvectl dns eth0

Sie sollten eine Ausgabe wie die folgende erhalten:

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

Die ausgegebenen IP-Adressen sind die vom Server verwendeten DNS-Resolver.

  • Sie können wählen, ob Sie einige oder alle davon verwenden möchten, oder nur IPv4 oder IPv6, je nach Ihren Anforderungen.
  • Notieren Sie sich die Resolver, die Sie verwenden werden.

Als nächstes müssen Sie Ihre ausgewählten Resolver zur Konfigurationsdatei des WireGuard Peers hinzufügen.

  • Zurück auf dem WireGuard Peer , öffnen /etc/wireguard/wg0.conf Datei verwenden nano oder Ihr bevorzugter Editor:
# nano /etc/wireguard/wg0.conf

Vor dem [Peer]Zeile folgendes hinzufügen:

DNS = 67.207.67.2 2001:4860:4860::8844
[Peer]
. . .


Auch hier können Sie je nach Ihren Vorlieben oder Anforderungen für IPv4 und IPv6 die Liste nach Ihren Bedürfnissen bearbeiten.

Sobald Sie im folgenden Schritt mit dem VPN verbunden sind, können Sie überprüfen, ob Sie DNS-Abfragen über das VPN senden, indem Sie eine Website wie DNS Leak Test.com verwenden .

Sie können auch überprüfen, ob Ihr Peer die konfigurierten Resolver mit verwendet resolvectl dns Befehl, wie Sie ihn auf dem Server ausgeführt haben.

  • Sie sollten eine Ausgabe wie die folgende erhalten, die die DNS-Resolver zeigt, die Sie für den VPN-Tunnel konfiguriert haben:
Global: 67.207.67.2 67.207.67.3
. . .

Mit all diesen DNS-Resolver-Einstellungen können Sie nun den öffentlichen Schlüssel des Peers zum Server hinzufügen und dann den WireGuard-Tunnel auf dem Peer starten.

Hinzufügen des öffentlichen Schlüssels des Peers

Bevor Sie den Peer mit dem Server verbinden, ist es wichtig, den öffentlichen Schlüssel des Peers zum WireGuard Server hinzuzufügen.

  • Dieser Schritt stellt sicher, dass Sie sich mit dem VPN verbinden und Datenverkehr darüber leiten können.
  • Ohne diesen Schritt wird der WireGuard-Server dem Peer nicht erlauben, Datenverkehr über den Tunnel zu senden oder zu empfangen.

Stellen Sie sicher, dass Sie eine Kopie der haben base64 verschlüsselter öffentlicher Schlüssel für den WireGuard-Peer, indem Sie Folgendes ausführen:

# cat /etc/wireguard/public.key

PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=

Melden Sie sich nun beim WireGuard-Server an und führen Sie den folgenden Befehl aus:

# wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,fd0d:86fa:c3bc::2

Notiere dass der allowed-ipsDer Teil des Befehls enthält eine durch Kommas getrennte Liste von IPv4- und IPv6-Adressen.

  • Sie können einzelne IPs angeben, wenn Sie die IP-Adresse einschränken möchten, die sich ein Peer selbst zuweisen kann, oder einen Bereich wie im Beispiel, wenn Ihre Peers eine beliebige IP-Adresse im VPN-Bereich verwenden können.
  • Beachten Sie auch, dass keine zwei Peers dasselbe haben können allowed-ips Einstellung.

Wenn Sie die aktualisieren möchten allowed-ipsFür einen vorhandenen Peer können Sie denselben Befehl erneut ausführen, aber die IP-Adressen ändern.

  • Mehrere IP-Adressen werden unterstützt.
  • Zum Beispiel, um den WireGuard-Peer, den Sie gerade hinzugefügt haben, zu ändern, um eine IP wie hinzuzufügen 10.8.0.100zum Bestehenden 10.8.0.2 und fd0d:86fa:c3bc::2IPs, würden Sie Folgendes ausführen:
# wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,10.8.0.100,fd0d:86fa:c3bc::2

Nachdem Sie den Befehl zum Hinzufügen des Peers ausgeführt haben, überprüfen Sie den Status des Tunnels auf dem Server mithilfe von wg Befehl:

# wg

interface: wg0
 public key: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 private key: (hidden)
 listening port: 51820

peer: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 allowed ips: 10.8.0.2/32, fd0d:86fa:c3bc::/128

Beachten Sie, wie die peerZeile zeigt den öffentlichen Schlüssel des WireGuard Peers und die IP-Adressen oder Adressbereiche, die er verwenden darf, um sich selbst eine IP zuzuweisen.

Nachdem Sie nun die Verbindungsparameter der Gegenstelle auf dem Server festgelegt haben, starten Sie im nächsten Schritt den Tunnel auf der Gegenstelle.

Verbinden des WireGuard-Peers mit dem Tunnel

Nachdem sowohl Ihr Server als auch Ihr Peer so konfiguriert sind, dass sie IPv4, IPv6, Paketweiterleitung und DNS-Auflösung Ihrer Wahl unterstützen, ist es an der Zeit, den Peer mit dem VPN-Tunnel zu verbinden.

Da Sie das VPN möglicherweise nur für bestimmte Anwendungsfälle aktivieren möchten, verwenden wir die wg-quick Befehl, um die Verbindung manuell herzustellen.

Falls Sie den gesamten Datenverkehr über das VPN leiten und die DNS-Weiterleitung eingerichtet haben, müssen Sie die resolvconf Dienstprogramm auf dem WireGuard Peer, bevor Sie den Tunnel starten. Führen Sie den folgenden Befehl aus, um dies einzurichten:

# apt install resolvconf

Um den Tunnel zu starten, führen Sie Folgendes auf dem WireGuard Peer aus:

# wg-quick up wg0

Sie erhalten eine Ausgabe wie die folgende:

[#] 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 fd0d:86fa:c3bc::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x

Beachten Sie die hervorgehobenen IPv4- und IPv6-Adressen, die Sie dem Peer zugewiesen haben.

Wenn Sie die einstellen AllowedIPs auf dem Peer zu 0.0.0.0/0und ::/0 (oder um andere Bereiche als die, die Sie für das VPN ausgewählt haben, zu verwenden), sieht Ihre Ausgabe wie folgt aus:

[#] 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 fd0d:86fa:c3bc::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

Beachten Sie in diesem Beispiel die hervorgehobenen Routen, die der Befehl hinzugefügt hat und die dem entsprechen AllowedIPsin der Peer-Konfiguration.

Sie können den Status des Tunnels auf dem Peer mit überprüfen wgBefehl:

# wg

interface: 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, fd0d:86fa:c3bc::/64
 latest handshake: 1 second ago
 transfer: 6.50 KiB received, 15.41 KiB sent
  • Sie können den Status auf dem Server auch erneut überprüfen und erhalten eine ähnliche Ausgabe.
  • Überprüfen Sie, ob Ihr Peer das VPN verwendet, indem Sie die verwenden ip routeund ip -6 route Befehle.
  • Wenn Sie das VPN als Gateway für Ihren gesamten Internetverkehr verwenden, prüfen Sie, welche Schnittstelle für den Datenverkehr von CloudFlare verwendet wird 1.1.1.1 und 2606:4700:4700::1111 DNS-Resolver.

Wenn Sie WireGuard nur für den Zugriff auf Ressourcen im VPN verwenden, ersetzen Sie diese Befehle durch eine gültige IPv4- oder IPv6-Adresse wie das Gateway selbst.

Zum Beispiel 10.8.0.1oder fd0d:86fa:c3bc::1.

ip route get 1.1.1.1

1.1.1.1 dev wg0 table 51820 src 10.8.0.2 uid 1000
   cache

Beachten Sie die wg0verwendete Gerät und die IPv4-Adresse 10.8.0.2 die Sie dem Peer zugewiesen haben. Wenn Sie IPv6 verwenden, führen Sie ebenfalls Folgendes aus:

ip -6 route get 2606:4700:4700::1111

2606:4700:4700::1111 from :: dev wg0 table 51820 src fd0d:86fa:c3bc::2 metric 1024 pref medium

Beachten Sie wieder die wg0Schnittstelle und die IPv6-Adresse fd0d:86fa:c3bc::2 die Sie dem Peer zugewiesen haben.

Wenn Ihr Peer einen Browser installiert hat, können Sie auch ipleak.net und ipv6-test.com, um zu bestätigen, dass Ihr Peer seinen Datenverkehr über das VPN leitet.

Sobald Sie bereit sind, die Verbindung zum VPN auf dem Peer zu trennen, verwenden Sie die wg-quickBefehl:

# wg-quick down wg0

Sie erhalten eine Ausgabe wie die folgende, die anzeigt, dass der VPN-Tunnel heruntergefahren ist:

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

Wenn Sie die einstellen AllowedIPs auf dem Peer zu 0.0.0.0/0und ::/0(oder um andere Bereiche als die, die Sie für das VPN ausgewählt haben, zu verwenden), sieht Ihre Ausgabe wie folgt aus:

[#] 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
  • Um sich wieder mit dem VPN zu verbinden, führen Sie die wg-quick up wg0 Befehl erneut auf dem Peer.
  • Wenn Sie die Konfiguration eines Peers vollständig vom WireGuard-Server entfernen möchten, können Sie den folgenden Befehl ausführen und sicherstellen, dass Sie den richtigen öffentlichen Schlüssel für den Peer ersetzen, den Sie entfernen möchten:
# wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= remove
  • Normalerweise müssen Sie eine Peer-Konfiguration nur entfernen, wenn der Peer nicht mehr existiert oder wenn seine Verschlüsselungsschlüssel kompromittiert oder geändert wurden.
  • Andernfalls ist es besser, die Konfiguration beizubehalten, damit sich der Peer wieder mit dem VPN verbinden kann, ohne dass Sie seinen Schlüssel und hinzufügen müssen allowed-ips jedes Mal.

Fazit

  • In diesem Tutorial haben Sie das WireGuard-Paket und die Tools sowohl auf dem Server- als auch auf dem Client-Ubuntu 20.04-System installiert.
  • Sie richten Firewall-Regeln für WireGuard ein und konfigurieren die Kernel-Einstellungen, um die Paketweiterleitung mit dem zuzulassen sysctlBefehl auf dem Server.
  • Sie haben gelernt, wie Sie private und öffentliche WireGuard-Verschlüsselungsschlüssel generieren und wie Sie den Server und den Peer (oder die Peers) so konfigurieren, dass sie sich miteinander verbinden.
  • Wenn Ihr Netzwerk IPv6 verwendet, haben Sie auch gelernt, wie Sie einen eindeutigen lokalen Adressbereich zur Verwendung mit Peer-Verbindungen generieren.
  • Schließlich haben Sie gelernt, wie Sie einschränken können, welcher Datenverkehr über das VPN geleitet werden soll, indem Sie die Netzwerkpräfixe einschränken, die der Peer verwenden kann, und wie Sie den WireGuard-Server als VPN-Gateway verwenden, um den gesamten Internetverkehr für Peers zu verarbeiten.
  • Wenn Sie mehr über WireGuard erfahren möchten, einschließlich der Konfiguration erweiterter Tunnel oder der Verwendung von WireGuard mit Containern, besuchen Sie die offizielle WireGuard-Dokumentation.

Seiten in der Kategorie „WireGuard“

Folgende 5 Seiten sind in dieser Kategorie, von 5 insgesamt.