|
|
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| '''WireGuard''' ist eine Software zum Aufbau eines VPN (Virtual Private Network)
| |
| *{{#l:2022-08-27_16-06.png}}
| |
| *{{#l:2022-08-27_15-48_2.png}}
| |
| *{{#l:2022-08-27_15-48_1.png}}
| |
| *{{#l:2022-08-27_15-48.png}}
| |
| *{{#l:2022-08-27_15-47.png}}
| |
| *[[2022-08-27_15-46.png]]
| |
|
| |
| = Beschreibung =
| |
| * Verschlüsselung mit öffentlichen und privaten Schlüsseln
| |
| * Verwendung einer spezifischen kryptografischen Cipher-Suite, um Einfachheit, Sicherheit und Kompatibilität mit Clients 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, zeitaufwendiger, komplexer und fehleranfälliger.
| |
|
| |
| = Konfiguration =
| |
| == Server ==
| |
| === Installation ===
| |
| # '''apt install wireguard'''
| |
| === Schlüsselpaar erzeugen ===
| |
| ; Privaten Schlüssel erzeugen
| |
| # '''wg genkey > /etc/wireguard/private.key'''
| |
|
| |
| ; Zugriffsrechte anpassen
| |
| # '''chmod go= /etc/wireguard/private.key'''
| |
|
| |
| ; Öffentlichen Schlüssel erzeugen
| |
| # '''cat /etc/wireguard/private.key | wg pubkey > /etc/wireguard/public.key'''
| |
|
| |
| === IPv4-Bereich ===
| |
| 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]):
| |
| 10.0.0.0 zu 10.255.255.255 (10/8 Präfix)
| |
| 172.16.0.0 zu 172.31.255.255 (Präfix 172.16/12)
| |
| 192.168.0.0 zu 192.168.255.255 (Präfix 192.168/16)
| |
|
| |
| Hier 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 Client-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].
| |
|
| |
| === IPv6-Bereich ===
| |
| 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'''
| |
| 1628101352127592197
| |
| 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:
| |
|
| |
| 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'''
| |
| 20086c25853947c7aeee2ca1ea849d7d
| |
|
| |
| Jetzt müssen Sie den Zeitstempel mit dem kombinieren <tt>machine-id </tt>und hash den resultierenden Wert mit dem SHA-1-Algorithmus.
| |
| $ '''printf <timestamp><machine-id> | sha1sum'''
| |
|
| |
| Führen Sie den Befehl aus, indem Sie Ihren Zeitstempel und Ihre Maschinenidentitätswerte ersetzen:
| |
| $ '''printf 162810135212759219720086c25853947c7aeee2ca1ea849d7d | sha1sum'''
| |
| 4f267c51857d6dc93a0bca107bca2f0d86fac3bc -
| |
|
| |
| Beachten Sie, dass die Ausgabe der <tt>sha1sum</tt> hexadezimal ist, 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-'''
| |
| 0d86fac3bc
| |
| 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.
| |
|
| |
| 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 Clients 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>.
| |
| * Clients können jede IP im Bereich verwenden, aber normalerweise erhöhen Sie den Wert jedes Mal um eins, wenn Sie einen Client 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.
| |
|
| |
| === Konfigurationsdatei ===
| |
| 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.
| |
|
| |
| === Netzwerkkonfiguration ===
| |
| Wenn Sie WireGuard verwenden, um einen Client 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-Clients über den WireGuard-Server leiten möchten, müssen Sie die IP-Weiterleitung konfigurieren, indem Sie diesem Abschnitt des Tutorials folgen.
| |
|
| |
| # '''echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf'''
| |
| # '''echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf'''
| |
|
| |
| # '''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 Client ü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 Clients ordnungsgemäß fließt.
| |
|
| |
| === Firewall ===
| |
| 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.
| |
| # '''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.
| |
| # '''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 Clients.
| |
| * Wenn die Firewall-Regeln vorhanden sind, können Sie den WireGuard-Dienst selbst starten, um auf Client-Verbindungen zu lauschen.
| |
|
| |
| === Server starten ===
| |
| 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 Client-Verbindungen unterstützen, jede mit ihren eigenen eindeutigen IP-Adressen und Routing-Regeln.
| |
| # '''systemctl start wg-quick@wg0.service'''
| |
|
| |
| Überprüfen Sie mit dem folgenden Befehl, ob der WireGuard-Dienst aktiv ist.
| |
| # '''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-Client zu konfigurieren und eine Verbindung zum WireGuard-Server herzustellen.
| |
|
| |
| == Client ==
| |
| === Installation ===
| |
| # '''apt install wireguard'''
| |
|
| |
| === Schlüsselpaar erstellen ===
| |
| ==== Privaten Schlüssel erstellen ====
| |
| # '''wg genkey | /etc/wireguard/private.key'''
| |
|
| |
| ==== Zugriffsrechte anpassen ====
| |
| # '''chmod go= /etc/wireguard/private.key'''
| |
|
| |
| ==== Öffentlichen Schlüssel erstellen ====
| |
| # '''cat /etc/wireguard/private.key | wg pubkey | /etc/wireguard/public.key'''
| |
|
| |
| === Konfigurationsdatei ===
| |
| ; /etc/wireguard/wg0.conf
| |
| {| class="wikitable"
| |
| ! Direktive !! Wert !! Beschreibung
| |
| |-
| |
| | [Interface] || ||
| |
| |-
| |
| | PrivateKey = || base64_encoded_Client_private_key_goes_here ||
| |
| |-
| |
| | Address = || 10.8.0.2/24 ||
| |
| |-
| |
| | Address = || fd0d:86fa:c3bc::2/64 ||
| |
| |-
| |
| | [Client] || ||
| |
| |-
| |
| | 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 Client 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 Client 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 Client darauf beschränken, sich nur mit anderen Clients 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 Clients ü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.
| |
|
| |
| === Datenverkehr durch den Tunnel leiten ===
| |
| ==== Gesamten Datenverkehr durch den Tunnel ====
| |
| * Wenn Sie sich dafür entschieden haben, den gesamten Datenverkehr des Clients über den Tunnel zu leiten, indem Sie die <tt>0.0.0.0/0</tt> oder <tt>::/0</tt> routen und der Client ein Remote-System ist, müssen Sie die Schritte in diesem Abschnitt ausführen.
| |
| * Wenn Ihr Client ein lokales System ist, überspringen Sie diesen Abschnitt am besten.
| |
| * Für Remote-Clients, auf die Sie über SSH oder ein anderes Protokoll mit einer öffentlichen IP-Adresse zugreifen, müssen Sie einige zusätzliche Regeln zu den Clients 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.
| |
| # '''ip route list table main default'''
| |
| 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>
| |
| # '''ip -brief address show eth0'''
| |
| 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 die hervorgehobene 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 Clients <tt>/etc/wireguard/wg0.conf</tt> Datei mit <tt>nano </tt>oder Ihren bevorzugten Editor.
| |
|
| |
| Vor dem <tt>[Client]</tt>Zeile, fügen Sie die folgenden 4 Zeilen hinzu:
| |
| ; /etc/wireguard/wg0.conf
| |
| 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
| |
|
| |
| [Client]
| |
| . . .
| |
|
| |
| 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 Tabellennummer <tt>200</tt> ist hier 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 Clients ü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].
| |
|
| |
| === DNS-Auflösung ===
| |
| * Wenn Sie den WireGuard Server als VPN-Gateway für den gesamten Datenverkehr Ihres Clients 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 Client-to-Client-Konfiguration verwenden, können Sie diesen Abschnitt überspringen.
| |
| * Um DNS-Resolver zur Konfiguration Ihres Clients 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'''
| |
| 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 Clients hinzufügen.
| |
| * Zurück auf dem '''WireGuard Client''', öffnen <tt>/etc/wireguard/wg0.conf </tt>Datei verwenden <tt>nano </tt>oder Ihr bevorzugter Editor:
| |
| # nano /etc/wireguard/wg0.conf
| |
|
| |
| Vor dem <tt>[Client]</tt>Zeile folgendes hinzufügen:
| |
| DNS = 67.207.67.2 2001:4860:4860::8844
| |
|
| |
| [Client]
| |
| . . .
| |
|
| |
| 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 Client 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 Clients zum Server hinzufügen und dann den WireGuard-Tunnel auf dem Client starten.
| |
|
| |
| == Öffentlichen Schlüssels des Clients hinzufügen ==
| |
| Bevor Sie den Client mit dem Server verbinden, ist es wichtig, den öffentlichen Schlüssel des Clients 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 Client 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-Client, 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 Client 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 Client selbst zuweisen kann, oder einen Bereich wie im Beispiel, wenn Ihre Clients eine beliebige IP-Adresse im VPN-Bereich verwenden können.
| |
| * Beachten Sie auch, dass keine zwei Clients dasselbe haben können <tt>allowed-ips </tt>Einstellung.
| |
|
| |
| Wenn Sie die aktualisieren möchten <tt>allowed-ips</tt>Für einen vorhandenen Client können Sie denselben Befehl erneut ausführen, aber die IP-Adressen ändern.
| |
| * Mehrere IP-Adressen werden unterstützt.
| |
| * Zum Beispiel, um den WireGuard-Client, 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 Client PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,10.8.0.100,fd0d:86fa:c3bc::2'''
| |
|
| |
| Nachdem Sie den Befehl zum Hinzufügen des Clients 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
| |
|
| |
| Client: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
| |
| allowed ips: 10.8.0.2/32, fd0d:86fa:c3bc::/128
| |
|
| |
| Beachten Sie, wie die <tt>Client</tt>Zeile zeigt den öffentlichen Schlüssel des WireGuard Clients 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.
| |
|
| |
| = Anwendungen =
| |
| == Verbinden des Clients ==
| |
| Nachdem sowohl Ihr Server als auch Ihr Client so konfiguriert sind, dass sie IPv4, IPv6, Paketweiterleitung und DNS-Auflösung Ihrer Wahl unterstützen, ist es an der Zeit, den Client 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 Client, 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 Client 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 Client zugewiesen haben.
| |
|
| |
| Wenn Sie die einstellen <tt>AllowedIPs </tt>auf dem Client 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 Client-Konfiguration.
| |
|
| |
| Sie können den Status des Tunnels auf dem Client mit überprüfen <tt>wg</tt>Befehl:
| |
| # '''wg'''
| |
| interface: wg0
| |
| public key: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
| |
| private key: (hidden)
| |
| listening port: 49338
| |
| fwmark: 0xca6c
| |
|
| |
| Client: 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 Client 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 Client 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 Client zugewiesen haben.
| |
|
| |
| Wenn Ihr Client 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 Client seinen Datenverkehr über das VPN leitet.
| |
|
| |
| Sobald Sie bereit sind, die Verbindung zum VPN auf dem Client 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 Client 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 Client.
| |
| * Wenn Sie die Konfiguration eines Clients 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 Client ersetzen, den Sie entfernen möchten:
| |
| # '''wg set wg0 Client PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= remove'''
| |
|
| |
| * Normalerweise müssen Sie eine Client-Konfiguration nur entfernen, wenn der Client nicht mehr existiert oder wenn seine Verschlüsselungsschlüssel kompromittiert oder geändert wurden.
| |
| * Andernfalls ist es besser, die Konfiguration beizubehalten, damit sich der Client wieder mit dem VPN verbinden kann, ohne dass Sie seinen Schlüssel und hinzufügen müssen <tt>allowed-ips</tt> jedes Mal.
| |
|
| |
| = Syntax =
| |
| == Parameter ==
| |
| == Optionen ==
| |
|
| |
| = Sicherheit =
| |
|
| |
| = Dokumentation =
| |
| == Dateien ==
| |
| == RFC ==
| |
| == Man-Pages ==
| |
| == Info-Pages ==
| |
| == Projekt-Homepage ==
| |
|
| |
| = Links =
| |
| == Siehe auch ==
| |
| == Weblinks ==
| |
| # https://wireguard.com
| |
|
| |
| == Einzelnachweise ==
| |
| <references />
| |
|
| |
| = Testfragen =
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 1''
| |
| <div class="mw-collapsible-content">'''Antwort1'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 2''
| |
| <div class="mw-collapsible-content">'''Antwort2'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 3''
| |
| <div class="mw-collapsible-content">'''Antwort3'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 4''
| |
| <div class="mw-collapsible-content">'''Antwort4'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 5''
| |
| <div class="mw-collapsible-content">'''Antwort5'''</div>
| |
| </div>
| |
|
| |
| [[Kategorie:Netzwerk:Sicherheit]]
| |
| [[Kategorie:VPN]] | | [[Kategorie:VPN]] |