WireGuard ist eine sehr leicht verständliche und moderne Lösung zur Erstellung von Virtuellen Privaten Netwzerken (VPN). WireGuard ist Open-Source, einach zu konfigurieren und eignet sich für Unternehmensnetze aber auch für private Netzwerke.
Wie im Beitrag PC-Recycling beschrieben, nutze ich für die Rechnungerstellung und andere Verwaltungsaufgaben das ERP-System odoo. Die Enterprise-Version von odoo besitzt eine App zur Verwendung des Systems auf einem Smartphone. Die Community-Version von odoo, welche ich verwende, hat dieses Feature nicht, kann aber mit einen Browser auf einem Smartphone ebenso gut genutzt werden. Da odoo bei mir im lokalen Netzwerk läuft, benötige ich eine VPN-Verbindung um außerhalb meines Netzwerks auf odoo sicher zuzugreifen.
Um mit VPN auf ein lokales Netzwerk zugreifen zu können, benötigt man:
Hier schematisch dargestellt:
Hier beschreibe ich die Konfiguration des WireGuard-Servers unter Ubuntu 24.04 und den WireGuard-Client unter Android. Als Router verwende ich die FRITZ!Box.
Gleich vorweg: Die hier beschriebene Lösung einer VPN-Verbindung ist die zweitbeste Möglichkeit. In diesem Szenario läuft der WireGuard-Server hinter dem Router und befindet sich damit bereits im lokalen Netzwerk. Verfügt ihr Router über einen eingebauten WireGuard-Server, so verwenden Sie diesen. Haben Sie eine Firewall im Einsatz, dann verwenden Sie den WireGuard-Server der Firewall.
Die Installtion von WireGuard erfolgt in Ubuntu 24.04 mit dem Befehl:
sudo apt install wireguard wireguard-tools resolvconf
Der WireGuard-Server kommuniziert mit den Clients und leitet deren Anfragen an den entsprechenden Server weiter. Dazu muss die sogenannte NAT-Weiterleitung eingeschaltet werden. Ändern Sie dazu in der Datei /etc/sysctl.conf die Zeile von
#net.ipv4.ip_forward=1
nach
net.ipv4.ip_forward=1
Starten Sie dann den Dienst neu:
sudo sysctl -p
Die Kommunikation von WireGuard erfolgt über Schlüssel. Dafür benötigen wir Schlüssel für den Server und den Client.
Führen Sie diese Kommandos aus:
cd /etc/wireguard umask 077; wg genkey | tee server-private-key | wg pubkey > server-public-key
Danach gibt es im Ordner /etc/wireguard zwei Dateien: server-private-key und server-public-key
cd /etc/wireguard umask 077; wg genkey | tee client-private-key | wg pubkey > client-public-key
Danach gibt es im Ordner /etc/wireguard zwei Dateien: client-private-key und client-public-key
Erstellen Sie die Datei /etc/wireguard/wg0.conf mit diesem Inhalt:
[Interface] Address = 10.0.0.1/24 SaveConfig = true ListenPort = 51820 PrivateKey = SERVER-PRIVATE-KEY # Nur Zugriff auf 192.168.10.200:443 erlauben PostUp = iptables -t nat -A PREROUTING -i wg0 -p tcp --dport 443 -j DNAT --to- destination 192.168.10.200:443 ; iptables -t nat -A POSTROUTING -d 192.168.10.200 -p tcp --dport 443 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s3 -j MASQUERADE [Peer] PublicKey = CLIENT-PUBLIC-KEY AllowedIPs = 192.168.10.200/32
Standardäßig verwendet WireGuard den Port 51820. Die Zeile PostUp definiert eine Firewall-Regel. Diese bedeutet, dass alles, was über den Port 51820 ankommt an den Server mit der IP-Adresse 192.168.10.200 und dem Port 443 weitergeleitet wird. Auf dem Server mit der IP-Adresse 192.168.10.200 wird odoo ausgeführt. Die Kommunikation mit odoo läuft über HTTPS (also Port 443). Ersetzen Sie noch SERVER-PRIVATE-KEY und CLIENT-PUBLIC-KEY durch die Inhalte der Dateien /etc/wireguard/server-private-key und /etc/wireguard/client-public-key.
Starten Sie den WireGuard-Server neu:
systemctl restart wg-quick@wg0
Der WireGuard-Client benötigt eine Konfigurationsdatei. Diese Datei wird später auf den WireGuard-Client kopiert. Erstellen Sie die Datei wg0-client.conf:
[Interface] PrivateKey = CLIENT-PRIVATE-KEY Address = 10.0.0.2/32 [Peer] PublicKey = SERVER-PUBLIC-KEY Endpoint = vmfree.selfhost.co:51820 AllowedIPs = 192.168.10.200/32
Ersetzen Sie noch CLIENT-PRIVATE-KEY und SERVER-PUBLIC-KEY durch die Inhalte der Dateien /etc/wireguard/client-private-key. und /etc/wireguard/server-public-key.
Falls Sie über keine feste IP-Adresse verfügen, benötigen Sie DynDNS um auf Ihren WireGuard-Server von außerhalb ihres Heimnetzwerks zuzugreifen. Sie müssen dazu den Port 51820 mit UDP freigeben. Hier finden Sie eine eine Anleitung, wie man die DynDNS mit einer FRITZ!Box konfiguriert.
Den WireGuard-Client gibt es für verschiedene Betriebssysteme. Da ich unterwegs mit dem Smartphone auf den Server zugreifen möchte, verwende ich die App WireGuard für Android.
Kopieren Sie die Datei wg0-client.conf auf das Smartphone. Bedenken Sie, dass jeder der in Besitz dieeser Datei kommt, eine VPN-Verbindung zu Ihrem System herstellen kann. Verwenden Sie daher eine sichere Verbindung um die Datei zu übertragen.
Starten Sie die App und klicken Sie auf das Plus-Zeichen um eine Verbindung zu erstellen:
Klicken Sie auf Aus Datei oder Archiv importieren und suchen Sie nach der Datei wg0-client.conf. Wurde die Datei importiert, so sollte die App das anzeigen:
Eine sichere und einfache Methode, um den WireGuard-Client zu konfigurieren, ist die Verwendungs eines QR-Codes. Sie können dazu eine beliebige Anwendung (z. B. unter Ubuntu QtQR) verwenden, die einen QR-Code erzeugt. Wandeln Sie den Inhalt der Datei wg0-client.conf in einen QR-Code um und wählen Sie in der WireGuard-App zum Hinzufügen einer Client-Konfiguration Von QR-Code scannen.