Einrichtung eines WireGuard VPN-Servers mit QR-Code-Übertragung auf mobile Geräte

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.

Über Raffael Haberland 52 Artikel
Ich habe Informatik an der Technischen Universität Darmstadt sowie Wirtschaftswissenschaften an der Universität Heidelberg studiert. Derzeit bin ich als Testmanager in der Testautomation und Softwareentwicklung im Telekommunikationssektor tätig. Mein Fokus liegt auf der Bewertung von Prototypen sowie der Qualitätssicherung und Optimierung von Prozessen, insbesondere durch die Entwicklung und Implementierung automatisierter Tests.

Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*