So richten Sie Wireguard VPN unter Linux ein

Ein Foto von einem Laptop mit einem Desktop-Monitor daneben.

Wireguard ist ein leistungsstarker Open-Source-Virtual-Private-Network (VPN)-Daemon, der sowohl auf Desktop- als auch auf Mobilgeräten ausgeführt werden kann. Es bietet eine schnelle und leichte Alternative zu traditionellen VPN-Lösungen wie IPsec und OpenVPN. Hier zeigen wir Ihnen, wie Sie Wireguard installieren und eine einfache VPN-Konfiguration mit drei Linux-Maschinen erstellen.

Inhaltsverzeichnis

  • Warum Wireguard als VPN-Lösung verwenden?
  • Wireguard beschaffen
  • Einrichten des Wireguard-Servers
  • Einrichten und Verbinden des Wireguard-Clients
  • Hinzufügen eines zweiten Clients zum Server
  • Testen des Wireguard-Netzwerks

Warum Wireguard als VPN-Lösung verwenden?

Einer der größten Verkaufsargumente von Wireguard ist, dass es ein schneller und leichter VPN-Daemon ist. Im Gegensatz zu traditionellen Lösungen fügt Wireguard Ihrem Netzwerk nicht viel Overhead hinzu. Dies führt zu einer geringeren Latenz und einer hohen Gesamt-Durchsatzrate über Ihre Knoten.

Ein Terminal, das einen iperf3-Test zwischen zwei Wireguard-Knoten zeigt, die einen hohen Durchsatz anzeigen.

Ein weiteres wichtiges Merkmal von Wireguard ist, dass es ein Modul im Linux-Kernel ist. Dies ermöglicht es, ohne zusätzliche Systemressourcen von Ihrem Computer zu laufen, was es zu einer idealen Wahl für den Einsatz auf Low-End- und SOC-Geräten macht.

Ein Terminal, das Wireguard im Linux-Kernel zeigt.

Schließlich nutzt Wireguard auch moderne kryptografische Standards und Entwicklungspraktiken. Es hat auch mehrere formale Überprüfungen durchlaufen, die die Korrektheit des Codes von Wireguard, Sicherheitsgarantien und die Fähigkeit, Angriffen zu widerstehen, bestätigen.

Nebenbei bemerkt: Immer noch nicht von Wireguard überzeugt? Erfahren Sie, wie Wireguard im Vergleich zu OpenVPN abschneidet.

Wireguard beschaffen

Der erste Schritt zur Einrichtung von Wireguard unter Linux besteht darin, die Kernwerkzeuge aus dem Repository Ihrer Distribution herunterzuladen. Dies ermöglicht es Ihnen, das integrierte Wireguard-Kernelmodul mit Benutzerspace-Befehlen zu steuern.

Um die Kernwerkzeuge in Ubuntu und Debian zu installieren, führen Sie den folgenden Befehl aus:

sudo apt install wireguard wireguard-tools

In Fedora können Sie den Paketmanager dnf verwenden:

sudo dnf install wireguard-tools

Für Arch Linux können Sie pacman verwenden, um die Wireguard-Kernwerkzeuge zu erhalten:

sudo pacman -S wireguard-tools

Bestätigen Sie, dass Sie die Wireguard-Tools ordnungsgemäß installiert haben, indem Sie den Hilfebildschirm laden:

wg -h

Ein Terminal, das das Hilfemenü für das Wireguard-Benutzerspace-Tool zeigt.

Einrichten des Wireguard-Servers

Annahme: Dieser Artikel geht davon aus, dass Sie den Wireguard-Server auf einem Linux-System mit einer öffentlich zugänglichen IPv4-Adresse installieren. Die Anweisungen funktionieren auch auf einem Server hinter einem NAT, aber er wird keine Knoten außerhalb seines Subnetzes finden.

Mit dem Wireguard-Kernwerkzeug auf Ihren Linux-Maschinen können Sie jetzt den Serverknoten Ihres VPN einrichten. Dies dient als Internet-Gateway für Ihre Client-Knoten im Netzwerk.

Beginnen Sie, indem Sie zu Ihrem Wireguard-Konfigurationsverzeichnis navigieren und die Standardberechtigungen auf “nur Root” setzen:

cd/etc/wireguard  
sudoumask 077

Hinweis: Einige Systeme verhindern möglicherweise, dass Sie als regulärer Benutzer in den Ordner “/etc/wireguard” gelangen. Um dies zu beheben, wechseln Sie mit sudo -s zum Root-Benutzer.

Generieren Sie den öffentlichen und privaten Schlüssel für Ihren Wireguard-Server:

sudosh-c'wg genkey | tee /etc/wireguard/server-private-key | wg pubkey > /etc/wireguard/server-public-key'

Erstellen Sie die Konfigurationsdatei Ihres Servers mit Ihrem bevorzugten Texteditor:

sudonano/etc/wireguard/wg0.conf

Fügen Sie den folgenden Codeblock in Ihre Serverkonfigurationsdatei ein:

[Interface]  
PrivateKey= PASTE-YOUR-SERVER-PRIVATE-KEY-HERE  
Address= 10.0.0.1/32  
ListenPort= 60101  
PostUp= iptables -t nat -I POSTROUTING -o NETWORK-INTERFACE-HERE -j MASQUERADE  
PostDown= iptables -t nat -D POSTROUTING -o NETWORK-INTERFACE-HERE -j MASQUERADE

Öffnen Sie eine neue Terminal-Sitzung und drucken Sie den privaten Schlüssel Ihres Servers:

sudocat/etc/wireguard/server-private-key

Kopieren Sie den privaten Schlüssel Ihres Servers in Ihre Zwischenablage.

Ein Terminal, das den Prozess des Kopierens des privaten Schlüssels des Servers unter Ubuntu zeigt.

Ersetzen Sie den Wert der Variablen PrivateKey durch den Schlüssel in Ihrer Zwischenablage.

Ein Terminal, das den privaten Schlüssel des Servers in der Wireguard-Konfiguration des Servers zeigt.

Finden Sie die Netzwerkschnittstelle, die Zugriff auf das Internet hat, mit dem Befehl ip:

ip route get 8.8.8.8

Setzen Sie den Wert des -o-Flags in den Variablen PostUp und PostDown auf die Schnittstelle mit Internetzugang und speichern Sie dann Ihre Konfigurationsdatei.

Ein Terminal, das den richtigen Gerätenamen in der Konfigurationsdatei des Wireguard-Servers zeigt.

Öffnen Sie die Datei “/etc/sysctl.conf” des Servers mit Ihrem bevorzugten Texteditor:

sudonano/etc/sysctl.conf

Scrollen Sie zu der Zeile, die net.ipv4.ip_forward=1 enthält, und entfernen Sie das Rautezeichen (#) davor.

Ein Terminal, das den Standort der IPv4-Weiterleitungsoption in sysctl.conf hervorhebt.

Laden Sie Ihre neue sysctl-Konfiguration neu, indem Sie ausführen: sudo sysctl -p.

FYI: Wireguard ist nicht die einzige VPN-Lösung, die Sie unter Linux ausführen können. Erfahren Sie, wie Sie Ihr eigenes VPN mit OpenVPN erstellen.

Einrichten und Verbinden des Wireguard-Clients

An diesem Punkt haben Sie jetzt einen ordnungsgemäß konfigurierten Wireguard-Server ohne Peers. Um ihn zu verwenden, müssen Sie Ihren ersten Wireguard-Client einrichten und verbinden.

Navigieren Sie zum Wireguard-Konfigurationsverzeichnis Ihres Client-Systems und setzen Sie die Standardberechtigungen:

cd/etc/wireguard  
sudoumask 077

Generieren Sie das Wireguard-Schlüsselpaar Ihres Clients mit dem folgenden Befehl:

sudosh-c'wg genkey | tee /etc/wireguard/client1-private-key | wg pubkey > /etc/wireguard/client1-public-key'

Erstellen Sie die Konfigurationsdatei des Clients mit Ihrem bevorzugten Texteditor:

sudonano/etc/wireguard/wg0.conf

Fügen Sie den folgenden Codeblock in Ihre Client-Konfigurationsdatei ein:

[Interface]  
PrivateKey= PASTE-YOUR-CLIENT1-PRIVATE-KEY-HERE  
Address= 10.0.0.2/32  
ListenPort= 60101  
  
[Peer]  
PublicKey= PASTE-YOUR-SERVER-PUBLIC-KEY-HERE  
AllowedIPs= 0.0.0.0/0  
Endpoint= PASTE-YOUR-SERVER-IP-ADDRESS-HERE:60101  
PersistentKeepalive= 25

Ersetzen Sie die Variable PrivateKey durch den privaten Schlüssel Ihres Clients.

Ein Terminal, das den privaten Schlüssel für den ersten Wireguard-Client hervorhebt.

Öffnen Sie die Terminal-Sitzung Ihres Wireguard-Servers und drucken Sie seinen öffentlichen Schlüssel:

sudocat/etc/wireguard/server-public-key

Setzen Sie den Wert der Variablen PublicKey auf den öffentlichen Schlüssel Ihres Servers.

Ein Terminal, das den öffentlichen Schlüssel des Wireguard-Servers in der Konfigurationsdatei des zweiten Clients hervorhebt.

Ändern Sie die Variable Endpoint auf die IP-Adresse Ihres Wireguard-Servers.

Ein Terminal, das die IP-Adresse für den Wireguard-Server hervorhebt.

Speichern Sie Ihre Konfigurationsdatei und verwenden Sie den Befehl wg-quick, um den Wireguard-Client zu starten:

sudo wg-quick up wg0

Ein Terminal, das den Prozess des Startens des Wireguard-Client-Daemons zeigt.

Hinweis: Dieser Befehl deaktiviert die Netzwerkverbindung Ihres Clients, bis Sie Ihren Wireguard-Server starten. Um zu Ihrem ursprünglichen Netzwerk zurückzukehren, führen Sie sudo wg-quick down wg0 aus.

Verknüpfen des Wireguard-Servers mit dem Client

Gehen Sie zur Terminal-Sitzung Ihres Wireguard-Servers und öffnen Sie seine Konfigurationsdatei:

sudonano/etc/wireguard/wg0.conf

Fügen Sie den folgenden Codeblock nach dem Abschnitt [Interface] ein:

[Peer]  
PublicKey= PASTE-YOUR-CLIENT1-PUBLIC-KEY-HERE  
AllowedIPs= 10.0.0.2/32  
PersistentKeepalive= 25

Setzen Sie die Variable PublicKey auf den öffentlichen Schlüssel Ihres Wireguard-Clients.

Ein Terminal, das den Standort des [Peer]-Blocks zeigt und den öffentlichen Schlüssel des Clients hervorhebt.

Hinweis: Sie können den öffentlichen Schlüssel erhalten, indem Sie sudo cat /etc/wireguard/client1-public-key auf Ihrem Client-Computer ausführen.

Speichern Sie die Konfigurationsdatei und führen Sie den folgenden Befehl aus, um den Wireguard-Dienst auf Ihrem Server zu starten:

sudo wg-quick up wg0

Hinzufügen eines zweiten Clients zum Server

Ein wichtiges Merkmal jedes VPN-Dienstes ist, dass er mehrere Maschinen aus verschiedenen Netzwerken miteinander verknüpfen kann. Dies ist nützlich, wenn Sie Computer an verschiedenen Standorten haben oder einen privaten Spieleserver für Ihre Freunde hosten möchten.

Um dies in Wireguard zu tun, müssen Sie eine Konfigurationsdatei für eine neue VPN-Schnittstelle auf Ihrem Server erstellen. Der einfachste Weg, dies zu tun, besteht darin, Ihre aktuelle Serverkonfiguration zu kopieren und der Kopie einen neuen Namen zu geben:

sudocp/etc/wireguard/wg0.conf /etc/wireguard/wg1.conf

Öffnen Sie Ihre neue Konfigurationsdatei mit Ihrem bevorzugten Texteditor:

sudonano/etc/wireguard/wg1.conf

Setzen Sie die Variable ListenPort auf 60102. Dadurch wird verhindert, dass es zu Portkonflikten zwischen den VPN-Schnittstellen wg0 und wg1 kommt.

Ein Terminal, das die geänderte ListenPort-Variable für die zweite Wireguard-Schnittstelle hervorhebt.

Gehen Sie zum Abschnitt [Peer] und ändern Sie die Variable AllowedIPs von “10.0.0.2/32” in “10.0.0.3/32” und speichern Sie dann Ihre Konfigurationsdatei.

Ein Terminal, das die geänderte AllowedIPs-Variable für den zweiten Wireguard-Client hervorhebt.

Konfigurieren des zweiten Wireguard-Clients

Melden Sie sich bei Ihrer zweiten Maschine an und bereiten Sie Ihr Wireguard-Konfigurationsverzeichnis vor:

cd/etc/wireguard  
sudoumask 077

Generieren Sie ein neues Wireguard-Schlüsselpaar mit dem folgenden Befehl:

sudosh-c'wg genkey | tee /etc/wireguard/client2-private-key | wg pubkey > /etc/wireguard/client2-public-key'

Erstellen Sie eine neue Konfigurationsdatei mit Ihrem bevorzugten Texteditor:

sudonano/etc/wireguard/wg0.conf

Fügen Sie den folgenden Codeblock in Ihre neue Konfigurationsdatei ein:

[Interface]  
PrivateKey= PASTE-YOUR-CLIENT2-PRIVATE-KEY-HERE  
Address= 10.0.0.3/32  
ListenPort= 60102  
  
[Peer]  
PublicKey= PASTE-YOUR-SERVER-PUBLIC-KEY-HERE  
AllowedIPs= 0.0.0.0/0  
Endpoint= PASTE-YOUR-SERVER-IP-ADDRESS-HERE:60102  
PersistentKeepalive= 25

Setzen Sie die Variable PrivateKey auf den privaten Schlüssel Ihrer zweiten Maschine und ändern Sie dann die Variable PublicKey auf den öffentlichen Schlüssel Ihres Servers.

Ersetzen Sie die Endpoint-Variable durch die IP-Adresse Ihres Servers, gefolgt von “:60102.”

Speichern Sie Ihre Konfigurationsdatei und starten Sie den Wireguard-Client der zweiten Maschine:

sudo wg-quick up wg0

Verknüpfen des zweiten Clients mit dem Wireguard-Server

Melden Sie sich erneut bei Ihrem Wireguard-Server an und öffnen Sie die VPN-Schnittstellenkonfiguration für Ihren zweiten Client:

sudonano/etc/wireguard/wg1.conf

Scrollen Sie zum Abschnitt [Peer] und ersetzen Sie die Variable PublicKey durch den öffentlichen Schlüssel Ihres zweiten Clients.

Ein Terminal, das den öffentlichen Schlüssel des zweiten Clients in der Konfigurationsdatei des Servers wg1 hervorhebt.

Speichern Sie Ihre Konfigurationsdatei und starten Sie die zweite VPN-Schnittstelle mit dem Befehl wg-quick:

sudo wg-quick up wg1

Bestätigen Sie, dass Ihre ersten und zweiten Wireguard-Clients korrekt auf Ihrem Server angezeigt werden, indem Sie wg ausführen.

Ein Terminal, das zeigt, dass die beiden Client-Knoten mit dem Wireguard-Server kommunizieren.

Testen des Wireguard-Netzwerks

Mit sowohl Ihrem Server als auch Ihren Clients im Wireguard-Netzwerk können Sie jetzt die Konnektivität und Latenz zwischen Ihren Knoten testen. Stellen Sie sicher, dass Sie Netzwerkdiagnosetools auf Ihrem System installiert haben:

sudo apt install net-tools curl

In Fedora müssen Sie nur curl installieren, da es bereits mit Netzwerktools direkt aus der Box kommt:

sudo dnf install curl

Für Arch Linux können Sie pacman verwenden, um die Netzwerktools und curl zu installieren:

sudo pacman -S traceroute curl

Beginnen Sie damit, den Pfad eines Pakets zwischen zwei Clients zu verfolgen. Folgendes zeigt, wie ein IP-Paket von “10.0.0.2” nach “10.0.0.3” geht:

traceroute 10.0.0.3

Überprüfen Sie, ob einer Ihrer Knoten auf das öffentliche Internet zugreifen kann, indem Sie eine gängige IP-Adresse anpingen:

ping-c5 8.8.8.8

Ein Terminal, das die Latenz vom Wireguard-Netzwerk zu einer externen Seite zeigt.

Bestätigen Sie schließlich, dass Ihre Knoten die gleiche öffentliche IP-Adresse zu Ihrem Wireguard-Server teilen:

curl ipinfo.io/ip

Ein Terminal, das die ähnliche externe IP-Adresse über drei Wireguard-Knoten hervorhebt.

Das Einrichten eines Wireguard-Netzwerks unter Linux ist der erste Schritt, um die faszinierende Welt der VPNs zu erkunden. Tauchen Sie tief ein und sehen Sie sich unsere Auswahl der besten sicherheitsorientierten VPN-Anbieter an, die Sie heute erhalten können.

Bildnachweis: Kari Shea über Unsplash und Wikimedia Commons. Alle Änderungen und Screenshots von Ramces Red.