Dieser Artikel beschreibt die Schritte zur Einrichtung eines WireGuard VPN-Servers auf einem Linux-basierten System sowie die Konfiguration eines Clients und die einfache Übertragung der Konfiguration auf mobile Endgeräte mithilfe eines QR-Codes. WireGuard ist ein modernes, sicheres und performantes VPN-Protokoll, das sich durch seine Einfachheit und Effizienz auszeichnet.
1. Systemaktualisierung und Installation von WireGuard
Zunächst wird das System aktualisiert und das WireGuard-Paket installiert, um sicherzustellen, dass alle erforderlichen Komponenten verfügbar sind.
sudo apt update
sudo apt install wireguard
2. Erstellen der Schlüsselpaare für den Server
WireGuard nutzt asymmetrische Verschlüsselung, bei der ein Schlüsselpaar (privater und öffentlicher Schlüssel) für jede Verbindung benötigt wird. Die folgenden Befehle generieren die erforderlichen Schlüssel:
cd /etc/wireguard
umask 077
wg genkey | tee server-private.key | wg pubkey > server-public.key
Dieser Schritt erzeugt den privaten Schlüssel (server-private.key
) und den öffentlichen Schlüssel (server-public.key
). Der private Schlüssel wird in der Serverkonfiguration benötigt.
3. Konfiguration des WireGuard-Interfaces
Nun wird die Konfigurationsdatei für das VPN-Interface erstellt. In diesem Beispiel wird das Interface wg0
verwendet. Die Datei wg0.conf
wird mit den entsprechenden Einstellungen bearbeitet:
sudo nano /etc/wireguard/wg0.conf
Der Inhalt der Konfigurationsdatei sieht wie folgt aus:
[Interface]
Address = 10.0.0.1/24, cafe:cafe:cafe::1/64
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
Anstelle von SERVER_PRIVATE_KEY
wird der zuvor generierte private Schlüssel des Servers eingefügt.
4. Aktivieren und Starten des WireGuard-Dienstes
Um sicherzustellen, dass WireGuard automatisch bei jedem Systemstart gestartet wird, führen Sie den folgenden Befehl aus:
sudo systemctl enable wg-quick@wg0
Der Dienst kann anschließend manuell gestartet werden:
sudo systemctl start wg-quick@wg0
5. Aktivierung des IP-Forwardings
Damit der Server als Gateway fungiert und den Datenverkehr durch das VPN weiterleitet, muss das IP-Forwarding aktiviert werden. Dies wird in der Datei /etc/sysctl.conf
konfiguriert:
sudo nano /etc/sysctl.conf
Fügen Sie die folgenden Zeilen hinzu oder kommentieren Sie sie ein:
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
Um die Änderungen zu übernehmen, wird der folgende Befehl ausgeführt:
sudo sysctl -p /etc/sysctl.conf
6. Konfiguration von NAT mit nftables
Damit der VPN-Datenverkehr ins Internet geroutet werden kann, wird nftables
für das Network Address Translation (NAT) verwendet. Zunächst wird nftables
installiert:
sudo apt install nftables
sudo systemctl enable nftables.service
Die NAT-Regeln werden in der Datei /etc/nftables.conf
definiert. Diese Regeln erlauben es, den Datenverkehr vom VPN über das Server-Interface ins Internet zu leiten:
sudo nano /etc/nftables.conf
Fügen Sie die folgenden Regeln für IPv4 und IPv6 hinzu:
table ip nat {
chain postrouting {
type nat hook postrouting priority 100; policy accept;
ip saddr 10.0.0.0/24 oif "ens6" snat to SERVER_IPV4_ADDRESS
}
}
table ip6 nat {
chain postrouting {
type nat hook postrouting priority 100; policy accept;
ip6 saddr cafe:cafe:cafe::/64 oif "ens6" snat to SERVER_IPV6_ADDRESS
}
}
Ersetzen Sie SERVER_IPV4_ADDRESS
und SERVER_IPV6_ADDRESS
durch die externen IP-Adressen des Servers. Nach der Bearbeitung wird die Konfiguration durch den folgenden Befehl aktiviert:
sudo nft -f /etc/nftables.conf
7. Hinzufügen eines VPN-Clients
Zur Verbindung eines Clients mit dem VPN muss der öffentliche Schlüssel des Clients und dessen IP-Adresse in der Serverkonfiguration hinzugefügt werden. Bearbeiten Sie hierfür erneut die Datei wg0.conf
:
sudo nano /etc/wireguard/wg0.conf
Fügen Sie die folgende [Peer]
-Sektion hinzu:
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32, fd8f:d4dc:9de9::2/128
Der PublicKey
des Clients wird durch den zuvor generierten öffentlichen Schlüssel des Clients ersetzt. Die AllowedIPs
geben die IP-Adressen an, die der Client im VPN-Netzwerk erhält.
8. Übertragung der Client-Konfiguration per QR-Code auf mobile Geräte
Um die Client-Konfiguration einfach auf ein Smartphone oder Tablet zu übertragen, können Sie einen QR-Code aus der Konfigurationsdatei generieren. Dazu muss zunächst das Tool qrencode
installiert werden:
sudo apt install qrencode
Mit folgendem Befehl wird die Client-Konfiguration als QR-Code im Terminal angezeigt:
qrencode -t ansiutf8 < wg0.conf
Dieser QR-Code kann mit der WireGuard-App auf mobilen Geräten gescannt werden, um die Konfiguration automatisch zu importieren.
9. Speichern des QR-Codes als Bild
Falls der QR-Code als Bild gespeichert werden soll, um ihn später zu verwenden oder weiterzugeben, kann er mit folgendem Befehl in eine PNG-Datei exportiert werden:
qrencode -o wg0.png < wg0.conf
Die Datei wg0.png
kann dann auf das mobile Gerät übertragen und von dort aus verwendet werden.
Fazit
Mit diesen Schritten lässt sich ein WireGuard VPN-Server effizient einrichten, um sichere Verbindungen zu ermöglichen. Die Übertragung der Konfigurationsdaten auf mobile Geräte über QR-Codes macht den Einrichtungsprozess für Benutzer sehr komfortabel. WireGuard bietet durch seine schlanke Architektur und moderne Verschlüsselung eine performante und sichere VPN-Lösung.
Antworten