Richten Sie ein selbst gehostetes VPN mit Wireguard ein
EIN VPN (virtuelles privates Netzwerk) ermöglicht dem Benutzer die Remote-Verbindung zu einem privaten Netzwerk, als ob der Computer des Benutzers direkt mit dem privaten Netzwerk verbunden wäre. Die Technologie wurde ursprünglich entwickelt, um den Fernzugriff auf das interne private Netzwerk eines Unternehmens für Mitarbeiter zu ermöglichen, die sich nicht am Standort des internen Netzwerks befinden.
Am Standort des internen Netzwerks wird ein VPN-Server bereitgestellt. Dieser Server befindet sich im öffentlichen Netz und ist für den Mitarbeiter über einen VPN-Client erreichbar. Für die Verbindung mit dem VPN-Server ist eine Authentifizierung erforderlich. Die Kommunikation zwischen VPN-Server und VPN-Client wird über ein Tunneling-Protokoll abgesichert. Beachten Sie, dass diese Kommunikation verschlüsselt sein kann oder nicht, aber normalerweise ist sie in den meisten VPN-Protokollen verschlüsselt.
Eine andere Verwendung von VPN besteht darin, Anonymität beim Zugriff auf das Internet erlangen oder um geografische Beschränkungen beim Zugriff auf einige Websites zu umgehen. In solchen Fällen ist das Netzwerk, mit dem sich der Benutzer verbinden möchte, kein privates Netzwerk, sondern das Internet.
Im Laufe der Jahre wurden viele VPN-Protokolle entwickelt. Diese Protokolle verwenden verschiedene Tunneling-Protokolle und Verschlüsselungsalgorithmen für die Kommunikation zwischen Server und Client.
Ein solches Protokoll, das in letzter Zeit weit verbreitet ist, ist Drahtschutz. Wireguard ist leichter, einfacher und leistungsfähiger als bekannte traditionell verwendete VPN-Protokolle wie OpenVPN, IPSec. Es ist bereits für Windows, Mac OS und eine Vielzahl von Linux-Distributionen implementiert. Unter Linux ist es als Kernel-Modul implementiert. Es ist in den offiziellen Repositories von Ubuntu 20.04 verfügbar.
In diesem Artikel erfahren Sie, wie Sie einen Wireguard VPN-Server und -Client in Ubuntu 20.04 einrichten.
Installation
Für diesen Artikel richte ich einen Wireguard Server auf einem Ubuntu 20.04 Linode und einen Wireguard Client auf meinem lokalen Rechner mit Ubuntu 20.04 ein.
Das Paket Drahtschutz
installiert sowohl Wireguard Server als auch Client. Führen Sie den folgenden Befehl aus sowohl auf dem Server-Rechner als auch auf dem Client-Rechner.
sudo apt installiere Wireguard
Serverkonfiguration
Sicherheitsschlüssel
Wir müssen eine Reihe von öffentlichen/privaten Schlüsselpaaren generieren um die Wireguard-Verbindung zu authentifizieren und abzusichern. Dies kann mit den folgenden Befehlen erfolgen:
sudo su cd /etc/wireguard umask 077 wg genkey | tee private_key | wg pubkey > public_key
Beachten Sie, dass wir alle Konfigurationsaufgaben als Superuser ausführen. Der Grund ist, dass der Zugriff auf das Verzeichnis /etc/wireguard
wird für normale Benutzer verhindert, und ein Verzeichniszugriff kann nicht nur mit sudo-Berechtigungen für einen normalen Benutzer erhalten werden.
Als nächstes setzen wir die Dateierstellungsmaske auf 077
. Dies bedeutet, dass jedes Mal, wenn in diesem Ordner von einem beliebigen Prozess eine neue Datei erstellt wird, deren Berechtigungen automatisch mit 077 maskiert werden. Wenn in diesem Ordner eine Datei mit den Berechtigungen 777 erstellt wird, wird sie automatisch maskiert und die Berechtigungen werden effektiv 700. Dies geschieht, damit nur der Eigentümer der Datei alle Berechtigungen für die Datei hat und alle anderen keine Berechtigungen haben.
In der nächsten Zeile, wir generieren das öffentliche/private Schlüsselpaar für den Server. Sie werden in Dateien gespeichert Privat Schlüssel
und Öffentlicher Schlüssel
. Um die Schlüssel anzuzeigen, führen Sie Folgendes aus:
Katze privater_Schlüssel Katze öffentlicher_Schlüssel

Kopieren Sie den privaten Schlüssel, wir brauchen ihn im nächsten Schritt.
Notiz: Geben Sie Ihren privaten Schlüssel niemals öffentlich weiter!
Konfigurationsdatei
Erstellen wir eine Konfigurationsdatei für den Wireguard Server. Sie können einen beliebigen Namen für die Datei wählen. Wir erstellen eine Datei wg0.conf
in diesem Beispiel.
vim wg0.conf
Fügen Sie der Datei Folgendes hinzu.
[Schnittstelle] Adresse = 10.20.43.1/24 SaveConfig = true ListenPort = 51190 PrivateKey = PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o -j MASQUERADE
Fügen Sie den privaten Schlüssel ein, den wir zuvor in Zeile 5 des obigen Codes kopiert haben.
Wir müssen Wireguard in einem anderen (virtuellen) Subnetz konfigurieren als die IP-Adresse des Servers. Hier habe ich 10.20.43.1 für den Server verwendet und werde 10.20.43.2 für den Client verwenden. Hier kann jedes Subnetz verwendet werden. Um die IP-Adresse des Servers und der Schnittstelle zu erhalten, führen Sie Folgendes aus:
ifconfig

Notieren Sie die IP-Adresse des Servers. Dies ist während der Client-Konfiguration erforderlich.
Die vom Server verwendete Schnittstelle, wie im Bild oben zu sehen, ist eth0
. Der Schnittstellenname kann je nach Netzwerk des Benutzers unterschiedlich sein wlan0
oder wlp2s0
falls der Benutzer über eine WLAN-Karte mit einem WiFi-Netzwerk verbunden ist.
Ersetze das in
PostUp
und PostDown
mit Ihrer Schnittstelle; in diesem Beispiel ist es eth0
.PostUp
und PostDown
Direktiven werden verwendet, um anzugeben, welche Befehle ausgeführt werden sollen, wenn der Server startet bzw. stoppt. In unserem Beispiel verwenden wir die iptables
Befehl zum Festlegen von IP-Regeln, sodass die IP-Adresse des Servers von den Clients geteilt wird. Die Regeln werden gelöscht, sobald der Server stoppt.
Speichern und beenden Sie die Datei. Wenn du vim verwendest, drücke Esc, dann tippe :wq
und drücke Eingeben zu speichern und zu beenden.
Wenn Sie a . verwenden ufw
Firewall auf dem Server müssen wir UDP-Verbindungen zum Port für VPN-Server 51190 zulassen.
ufw erlauben 51190/udp
Starten des Dienstes
Nachdem die Konfiguration nun abgeschlossen ist, können wir den Wireguard VPN-Dienst starten.
Ermöglichen Um den Dienst beim Booten zu starten, führen Sie Folgendes aus:
systemctl enable [email protected]
Beachten Sie, dass hier wg0
ist der Name der Konfigurationsdatei.
Anfangen den Dienst ausführen:
service [email protected] start
Verifizieren dass der Dienst erfolgreich gestartet wurde:
service [email protected] status

Stellen Sie sicher, dass die Schnittstelle Wir haben die in der Konfigurationsdatei erstellte Datei mit dem IP-Befehl gestartet.
ip a show wg0

Der Wireguard VPN-Server ist nun eingerichtet und läuft. Lassen Sie uns jetzt den Client konfigurieren.
Client-Konfiguration
Die Client-Konfiguration für Wireguard entspricht mehr oder weniger einer Server-Konfiguration. Wir generieren die Schlüssel für den Client und erstellen dann eine Konfigurationsdatei.
Sicherheitsschlüssel
Um den öffentlichen/privaten Schlüssel zu generieren Paar für den Client, führen Sie aus:
sudo su cd /etc/wireguard umask 077 wg genkey | tee client_private_key | wg pubkey > client_public_key
Der öffentliche und der private Schlüssel für den Client werden nun jeweils in Dateien generiert client_private_key
und client_public_key
.
Überprüfen Sie, ob sie erstellt wurden, indem Sie verwenden Katze
Befehl.
Katze client_private_key Katze client_public_key
Kopieren Sie den angezeigten privaten Schlüssel, da wir ihn der Konfigurationsdatei für den Client hinzufügen müssen.
Konfigurationsdatei
Erstellen Sie die Konfigurationsdatei mit beliebigem Namen. Wir werden es mit dem Namen erstellen wg0-Client
für dieses Beispiel.
vim wg0-client.conf
Fügen Sie die folgende Konfiguration hinzu.
[Interface] # IP-Adresse und privater Schlüssel der Client-Adresse = 10.20.43.2/24 PrivateKey = [Peer] # Öffentlicher Schlüssel, IP-Adresse und Port des Servers PublicKey = Endpunkt = :51190 AllowedIPs = 0.0.0.0/0, : :/0
Geben Sie die Subnetzadresse für den Client ein. Wie zuvor beschrieben, verwenden wir 10.20.43.2
für den Client in diesem Beispiel.
Fügen Sie den privaten Schlüssel des Clients hinzu im vorherigen Schritt in Zeile 4 im obigen Konfigurationscode generiert.
Unter „Peer“ fügen wir Informationen zum Wireguard VPN-Server hinzu wir wollen uns verbinden.
Geben Sie den öffentlichen Schlüssel des Servers ein. Geben Sie die IP-Adresse des Servers, die wir zuvor notiert haben, und Port im angegebenen Format gegen Endpunkt. Dies ist der Port, den wir in der Serverkonfigurationsdatei angegeben haben und auf dem der VPN-Dienst auf dem Server gestartet wurde.
Erlaubte IPs sollten wie angegeben (0.0.0.0/0) eingegeben werden, damit jede Anfrage an eine dynamische öffentliche IP, die vom Client verwendet wird, immer an den VPN-Server weitergeleitet wird.
Speichern und beenden Sie die Datei. Wenn du vim verwendest, drücke Esc, dann tippe :wq
und drücke Eingeben zu speichern und zu beenden.
Aktivieren Sie den Client-Dienst mit jedem Boot laufen, und starten Sie es.
systemctl aktivieren [email protected] service [email protected] start
Verifizieren wenn der Dienst gestartet wurde.
service [email protected] status

Peer zum Server hinzufügen
Jetzt haben wir den VPN-Server und -Client in Betrieb genommen. Es wird jedoch kein sicherer Tunnel zwischen den beiden hergestellt, es sei denn, wir stellen eine Peer-to-Peer-Verbindung zwischen Server und Client her.
Geh zurück zum Server. Zuerst, Stoppen Sie den VPN-Dienst.
service [email protected] halt
Öffnen Sie als Nächstes die Konfigurationsdatei, um Konfiguration für den Peer hinzufügen (Klient).
vim /etc/wireguard/wg0.conf
Anhängen die folgenden Zeilen zur Datei.
[Peer] PublicKey = AllowedIPs = 10.20.43.2/32
Jetzt, Starten Sie den VPN-Dienst erneut.
service [email protected] start
Das ist es! Dies ist die gesamte Konfiguration, die für die Einrichtung des Wireguard VPN-Clients und -Servers erforderlich ist. Lassen Sie uns nun unser VPN testen.
Testen des VPN
Lassen Sie uns zunächst einen einfachen Ping vom Client zum Server durchführen, um sicherzustellen, dass die VPN-Tunnelkommunikation funktioniert. Führen Sie Folgendes auf dem Client aus:
Ping 10.20.43.1

Nächste, Öffnen Sie einen Webbrowser und öffnen Sie eine beliebige Website um zu überprüfen, ob Sie vom Client-Rechner aus eine Verbindung zum Internet herstellen können. Sie können Ihre Internetverbindung auch über die Befehlszeile mit überprüfen wget
.
wget

Nun haben wir die Tunnelkonnektivität und die Internetkonnektivität überprüft. Wenn beide funktionieren, müssen wir jetzt sicherstellen, dass der gesamte Internetverkehr, der zum Client kommt, über den Server läuft.
Dazu müssen wir lediglich die IP-Adresse des Clients überprüfen, wie sie vom Internet aus gesehen wird. Eine Möglichkeit, dies zu tun, besteht darin, zu whatsmyip.org zu gehen. Oder über die Befehlszeile können wir mit Curl einen anderen ähnlichen Dienst namens IP-Info abfragen.
Führen Sie Folgendes auf dem Client-Rechner aus
curl //ipinfo.io/ip

Ja. Dies ist die öffentliche IP-Adresse des Linode, auf dem der VPN-Server gehostet wird. Auf diese Weise wird mit VPN Anonymität erreicht, da im gesamten Internet jetzt die IP des VPN-Servers und nicht Ihres Computers gesehen wird.
Fazit
Die einfache Einrichtung ist einer der wichtigsten Vorteile von Wireguard gegenüber herkömmlicher VPN-Software wie OpenVPN, deren Einrichtung ein höheres Maß an Netzwerk- und Routing-Kenntnissen erfordert. Es fehlt jedoch eine detaillierte offizielle Dokumentation für Wireguard, die Probleme verursachen könnte, wenn Ihr Wireguard-Setup Fehler auslöst oder nicht wie erwartet funktioniert.
Trotzdem ist Wireguard eine ausgezeichnete Wahl, wenn Sie ein selbst gehostetes VPN für die sichere Kommunikation über das Internet wünschen. Um mehr über Wireguard und die verwendeten Protokolle und Technologien zu erfahren, können Sie die offizielle Website besuchen.