Kategorie:WireGuard: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
K Textersetzung - „Kategorie:Virtual Private Network“ durch „Kategorie:VPN“
Markierung: Manuelle Zurücksetzung
 
(136 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Einführung =
[[Kategorie:VPN]]
[https://wireguard.com/ 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 [https://www.digitalocean.com/docs/accounts/billing/bandwidth/ 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 [https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04 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 [https://docs.digitalocean.com/products/networking/ipv6/how-to/enable/ 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 <tt>sudo </tt>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 <tt>wg genkey</tt>und <tt>wg pubkey </tt>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 <tt>chmod </tt>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 <tt>sudo chmod go=...</tt>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 <tt>base64</tt>verschlüsselte Ausgabe, die der private Schlüssel ist.
* Eine Kopie der Ausgabe wird auch in der gespeichert <tt>/etc/wireguard/private.key </tt>Datei zum späteren Nachschlagen durch die <tt>tee </tt>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 <tt>|</tt>(Pipe)-Operator:
* <tt>sudo cat /etc/wireguard/private.key</tt>: Dieser Befehl liest die private Schlüsseldatei und gibt sie an den [https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-i-o-redirection#standard-output Standardausgabestrom aus ].
* <tt>wg pubkey</tt>: Der zweite Befehl nimmt die Ausgabe des ersten Befehls als [https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-i-o-redirection#standard-input Standardeingabe ]und verarbeitet sie, um einen öffentlichen Schlüssel zu generieren.
* <tt>sudo tee /etc/wireguard/public.key</tt>: Der letzte Befehl nimmt die Ausgabe des Befehls zur Generierung des öffentlichen Schlüssels und leitet sie in die Datei mit dem Namen um <tt>/etc/wireguard/public.key</tt>.
 
Wenn Sie den Befehl ausführen, erhalten Sie erneut eine einzelne Zeile von <tt>base64</tt>verschlü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 [https://datatracker.ietf.org/doc/html/rfc1918#section-3 RFC 1918-Spezifikation ]):
* <tt>10.0.0.0</tt>zu <tt>10.255.255.255</tt>(10/8 Präfix)
* <tt>172.16.0.0</tt>zu <tt>172.31.255.255</tt>(Präfix 172.16/12)
* <tt>192.168.0.0</tt>zu <tt>192.168.255.255</tt>(Präfix 192.168/16)
 
Für die Zwecke dieses Tutorials verwenden wir <tt>10.8.0.0/24</tt>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.
* 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 <tt>10.8.0.1/24 </tt>hier, aber jede Adresse im Bereich von <tt>10.8.0.1</tt>zu <tt>10.8.0.255 </tt>kann verwendet werden.
* Notieren Sie sich die IP-Adresse, die Sie wählen, wenn Sie etwas anderes verwenden <tt>10.8.0.1/24</tt>.
* Sie fügen diese IPv4-Adresse der Konfigurationsdatei hinzu, die Sie in [https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-ubuntu-20-04#step-3-—-creating-a-wireguard-server-configuration 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 [https://www.rfc-editor.org/rfc/rfc4193#section-3 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 <tt>fd00::/8</tt>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 der reservierten privaten verwendet werden können <tt>fd00::/8</tt>Block von IPs.
 
Um mit der Generierung eines IPv6-Bereichs für Ihren WireGuard-Server zu beginnen, erfassen Sie einen 64-Bit-Zeitstempel mit der <tt>date</tt>Dienstprogramm mit dem folgenden Befehl:
 
date +%s%N
 
Sie erhalten eine Zahl wie die folgende, die die Anzahl der Sekunden (die <tt>%s</tt>in dem <tt>date</tt>Befehl) und Nanosekunden (die <tt>%N</tt>) 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 <tt>machine-id </tt>Wert für Ihren Server aus dem <tt>/var/lib/dbus/machine-id</tt>Datei.
* 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 <tt>machine-id </tt>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 <tt>sha1sum</tt>Der Befehl ist hexadezimal, sodass die Ausgabe zwei Zeichen verwendet, um ein einzelnes Datenbyte darzustellen.
* Zum Beispiel <tt>4f</tt>und <tt>26</tt>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 die <tt>cut </tt>Befehl zum Drucken der letzten 5 hexadezimal codierten Bytes aus dem Hash:
 
printf 4f267c51857d6dc93a0bca107bca2f0d86fac3bc | cut -c 31-
 
Die <tt>-c </tt>Argument sagt die <tt>cut </tt>Befehl, um nur einen bestimmten Satz von Zeichen auszuwählen.
* Das <tt>31-</tt>Argument erzählt <tt>cut </tt>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 <tt>fd</tt>Präfix, trennen alle '''2 '''Bytes mit a <tt>:</tt>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 <tt>/64</tt>der Einfachheit halber.
 
Unter Verwendung der zuvor mit der generierten Bytes <tt>/64</tt>Subnetzgröße lautet das resultierende Präfix wie folgt:
 
Unique Local IPv6 Address Prefix
fd0d:86fa:c3bc::/64
 
Das <tt>fd0d:86fa:c3bc::/64</tt>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 a hinzu <tt>1</tt>nach dem Finale <tt>::</tt>Figuren.
* Die resultierende Adresse lautet <tt>fd0d:86fa:c3bc::/64</tt>.
* 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 <tt>fd0d:86fa:c3bc::/64</tt>.
* 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 [https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-ubuntu-20-04#step-1-—-installing-wireguard-and-generating-a-key-pair Schritt 1 – Installieren von WireGuard und Generieren eines Schlüsselpaars – ].
# Wenn Sie WireGuard mit IPv4 verwenden, benötigen Sie die IP-Adresse, die Sie in [https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-ubuntu-20-04#step-2-a-—-choosing-an-ipv4-range Schritt 2(a) – Auswahl eines IPv4- ]haben, was in diesem Beispiel lautet .
# Wenn Sie WireGuard mit IPv6 verwenden, benötigen Sie die IP-Adresse für den Server, die Sie in [https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-ubuntu-20-04#step-2-b-—-choosing-an-ipv6-range 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 <tt>nano</tt>oder 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 <tt>base64_encoded_private_key_goes_here</tt>Wert und die IP-Adresse(n) auf der <tt>Address</tt>Linie.
* Sie können die auch ändern <tt>ListenPort</tt>Zeile, 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 <tt>SaveConfig </tt>line stellt sicher, dass beim Herunterfahren einer WireGuard-Schnittstelle alle Änderungen in der Konfigurationsdatei gespeichert werden.
 
Speichern und schließen Sie die <tt>/etc/wireguard/wg0.conf </tt>Datei.
* Wenn Sie verwenden <tt>nano</tt>, können Sie dies mit tun <tt>CTRL+X</tt>, dann <tt>Y </tt>und <tt>ENTER </tt>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 <tt>/etc/sysctl.conf </tt>Datei verwenden <tt>nano </tt>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 <tt>ip route </tt>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 <tt>eth0</tt>, 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 <tt>iptables </tt>Regeln im nächsten Schritt.
 
Um Ihrem WireGuard Server Firewall-Regeln hinzuzufügen, öffnen Sie die <tt>/etc/wireguard/wg0.conf</tt>Datei mit <tt>nano </tt>oder wieder Ihren bevorzugten Editor.
 
# nano /etc/wireguard/wg0.conf
 
Am Ende der Datei nach dem <tt>SaveConfig = true </tt>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 <tt>PostUp </tt>Leitungen laufen, wenn der WireGuard Server den virtuellen VPN-Tunnel startet.
* Im Beispiel hier werden drei hinzugefügt <tt>ufw </tt>und <tt>iptables </tt>Regeln:* <tt>ufw route allow in on wg0 out on </tt>- Diese Regel ermöglicht die Weiterleitung von IPv4- und IPv6-Datenverkehr, der auf dem eingeht <tt>wg0</tt>VPN-Schnittstelle zum <tt>eth0</tt>Netzwerkschnittstelle auf dem Server.
* Es funktioniert in Verbindung mit der <tt>net.ipv4.ip_forward</tt>und <tt>net.ipv6.conf.all.forwarding</tt>sysctl-Werte, die Sie im vorherigen Abschnitt konfiguriert haben.
* <tt>iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE</tt>- Diese Regel konfiguriert Masquerading und schreibt IPv4-Datenverkehr um, der auf dem eingeht <tt>wg0</tt>VPN-Schnittstelle, damit es so aussieht, als stamme es direkt von der öffentlichen IPv4-Adresse des WireGuard-Servers.
* <tt>ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE</tt>- Diese Regel konfiguriert Masquerading und schreibt IPv6-Datenverkehr um, der auf dem eingeht <tt>wg0</tt>VPN-Schnittstelle, damit es so aussieht, als stamme es direkt von der öffentlichen IPv6-Adresse des WireGuard-Servers.
 
Die <tt>PreDown </tt>Regeln werden ausgeführt, wenn der WireGuard Server den virtuellen VPN-Tunnel stoppt.
* Diese Regeln sind die Umkehrung der <tt>PostUp </tt>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 <tt>ip6tables</tt>Befehle.
 
Wenn Sie dagegen nur IPv6 verwenden, bearbeiten Sie die Konfiguration so, dass sie nur die enthält <tt>ip6tables</tt>Befehle.
* Das <tt>ufw </tt>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 <tt>/etc/wireguard/wg0.conf </tt>Datei, der Port, den Sie öffnen werden, ist <tt>51820</tt>.
* 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 <tt>53</tt>Datenverkehr ist für DNS-Anfragen und Ports wie zulässig <tt>80</tt>und <tt>443</tt>fü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 <tt>ufw status</tt>Befehl.
* 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 <tt>systemd </tt>Dienst mit seinem eingebauten <tt>wg-quick</tt>Skript.
* Während Sie die manuell verwenden könnten <tt>wg</tt>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 verwenden <tt>systemctl </tt>den Tunnel mit Hilfe des zu verwalten <tt>wg-quick </tt>Skript.
 
Verwendung einer <tt>systemd </tt>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 <tt>wg-quick </tt>Dienst für die <tt>wg0</tt>Tunnel, den Sie durch Hinzufügen definiert haben <tt>systemctl</tt>:
 
# systemctl enable wg-quick@wg0.service
 
Beachten Sie, dass der Befehl den Namen des Tunnels angibt <tt>wg0 </tt>Gerätename als Teil des Dienstnamens.
* Dieser Name entspricht dem <tt>/etc/wireguard/.conf</tt>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 von haben <tt>prod </tt>und seine Konfigurationsdatei wäre <tt>/etc/wireguard/prod.conf</tt>.
* 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 <tt>active (running)</tt>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 <tt>ip </tt>Befehle, die zum Erstellen der virtuellen Datei verwendet werden <tt>wg0 </tt>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 <tt>wg </tt>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 <tt>wg-quick </tt>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 <tt>apt </tt>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 <tt>base64</tt>verschlüsselte Ausgabe, die der private Schlüssel ist.
* Eine Kopie der Ausgabe wird auch in der gespeichert <tt>/etc/wireguard/private.key</tt>.
* 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 <tt>base64</tt>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 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 <tt>base64</tt>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.
* Die <tt>base64</tt>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 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 <tt>/etc/wireguard/wg0.conf </tt>Datei auf dem WireGuard Peer-Rechner verwenden <tt>nano </tt>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 <tt>Address</tt>line verwendet eine IPv4-Adresse von der <tt>10.8.0.0/24</tt>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, wie die zweite <tt>Address </tt>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 <tt>AllowedIPs </tt>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 <tt>AllowedIPs </tt>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 <tt>fd0d:86fa:c3bc::/64 </tt>Bereich (einschließlich der <tt>,</tt>Komma).
* Umgekehrt, wenn Sie nur IPv6 verwenden, dann schließen Sie nur die ein <tt>fd0d:86fa:c3bc::/64</tt>voranstellen und weglassen <tt>10.8.0.0/24</tt>IPv4-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 <tt>0.0.0.0/0</tt>, die den gesamten IPv4-Adressraum darstellt, und <tt>::/0</tt>fü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 <tt>0.0.0.0/0 </tt>oder <tt>::/0</tt>routen 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 <tt>wg0.conf </tt>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 <tt>wg0</tt>Tunnelschnittstelle, 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 <tt>ip route</tt>Befehl:
 
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 <tt>eth0 </tt>in den folgenden Befehlen.
 
Suchen Sie als Nächstes die öffentliche IP-Adresse für das System, indem Sie das Gerät mit untersuchen <tt>ip address show </tt>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 <tt>/20</tt>) ist die öffentliche Adresse, die der zugewiesen ist <tt>eth0</tt>Gerät, das Sie der WireGuard-Konfiguration hinzufügen müssen.
 
Öffnen Sie nun die des WireGuard Peers <tt>/etc/wireguard/wg0.conf </tt>Datei mit <tt>nano </tt>oder Ihren bevorzugten Editor.
 
# nano /etc/wireguard/wg0.conf
 
Vor dem <tt>[Peer]</tt>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.* <tt>PostUp = ip rule add table 200 from </tt>- Dieser Befehl erstellt eine Regel, die nach Routing-Einträgen in der Tabelle mit der Nummer sucht <tt>200</tt>wenn die IP mit der öffentlichen des Systems übereinstimmt die Anschrift.
* <tt>PostUp = ip route add table 200 default via </tt>- Dieser Befehl stellt sicher, dass jeglicher Datenverkehr von verarbeitet wird <tt>200</tt>Tabelle verwendet die Gateway für das Routing anstelle der WireGuard-Schnittstelle.
 
Die <tt>PreDown </tt>Zeilen entfernen die benutzerdefinierte Regel und Route, wenn der Tunnel heruntergefahren wird.
 
Hinweis
Die Tischnummer <tt>200 </tt>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 <tt>/etc/iproute2/rt_tables </tt>Datei und bezieht sich dann auf den Namen anstelle des numerischen Werts.
 
Weitere Informationen zur Funktionsweise von Routing-Tabellen unter Linux finden Sie im [http://linux-ip.net/html/routing-tables.html Abschnitt „Routing-Tabellen“ ]des [http://linux-ip.net/html/index.html 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 <tt>sysctl</tt>und <tt>iptables</tt>Regeln auf dem WireGuard-Server in [https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-ubuntu-20-04#step-4-—-adjusting-the-wireguard-server-39-s-network-configuration Schritt 4 – Anpassen der Netzwerkkonfiguration des WireGuard-Servers ]und [https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-ubuntu-20-04#step-5-—-configuring-the-wireguard-server’s-firewall 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 <tt>[Interface]</tt>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 <tt>eth0</tt>wenn 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 <tt>/etc/wireguard/wg0.conf </tt>Datei verwenden <tt>nano </tt>oder Ihr bevorzugter Editor:
 
# nano /etc/wireguard/wg0.conf
 
Vor dem <tt>[Peer]</tt>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 [https://www.dnsleaktest.com/ DNS Leak Test.com verwenden ].
 
Sie können auch überprüfen, ob Ihr Peer die konfigurierten Resolver mit verwendet <tt>resolvectl dns </tt>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 zum WireGuard-Server =
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 <tt>base64 </tt>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 <tt>allowed-ips</tt>Der 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 <tt>allowed-ips </tt>Einstellung.
 
Wenn Sie die aktualisieren möchten <tt>allowed-ips</tt>Fü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 <tt>10.8.0.100</tt>zum Bestehenden <tt>10.8.0.2 </tt>und <tt>fd0d:86fa:c3bc::2</tt>IPs, 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 <tt>wg </tt>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 <tt>peer</tt>Zeile 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 <tt>wg-quick </tt>Befehl, um die Verbindung manuell herzustellen.
* Wenn Sie das Starten des Tunnels automatisieren möchten, wie Sie es auf dem Server getan haben, befolgen Sie die Schritte in [https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-ubuntu-20-04#step-6-—-starting-the-wireguard-server Schritt 6 – Starten des WireGuard-Server- ]Abschnitts, anstatt die <tt>wq-quick </tt>Befehl.
 
Falls Sie den gesamten Datenverkehr über das VPN leiten und die DNS-Weiterleitung eingerichtet haben, müssen Sie die <tt>resolvconf </tt>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 <tt>AllowedIPs </tt>auf dem Peer zu <tt>0.0.0.0/0</tt>und <tt>::/0 </tt>(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 <tt>AllowedIPs</tt>in der Peer-Konfiguration.
 
Sie können den Status des Tunnels auf dem Peer mit überprüfen <tt>wg</tt>Befehl:
 
# 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 <tt>ip route</tt>und <tt>ip -6 route </tt>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 <tt>1.1.1.1 </tt>und <tt>2606:4700:4700::1111 </tt>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 <tt>10.8.0.1</tt>oder <tt>fd0d:86fa:c3bc::1</tt>.
 
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 <tt>wg0</tt>verwendete Gerät und die IPv4-Adresse <tt>10.8.0.2</tt>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 <tt>wg0</tt>Schnittstelle und die IPv6-Adresse <tt>fd0d:86fa:c3bc::2 </tt>die Sie dem Peer zugewiesen haben.
 
Wenn Ihr Peer einen Browser installiert hat, können Sie auch [https://ipleak.net/ ipleak.net ]und [https://ipv6-test.com/ 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 <tt>wg-quick</tt>Befehl:
 
# 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 <tt>AllowedIPs </tt>auf dem Peer zu <tt>0.0.0.0/0</tt>und <tt>::/0</tt>(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 <tt>wg-quick up wg0 </tt>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 <tt>allowed-ips </tt>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 <tt>sysctl</tt>Befehl 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 [https://wireguard.com/ offizielle WireGuard-Dokumentation ].

Aktuelle Version vom 4. Juni 2023, 10:03 Uhr

Seiten in der Kategorie „WireGuard“

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