Ursprünglich habe ich diese Anleitung für Ubuntu 18.04 geschrieben, seit 20.04 ist der Ablauf kürzer.
Vermutlich wird 18.04 noch bei vielen länger im Einsatz sein, daher lasse ich die Hinweise noch stehen.
Achtung: Für LAN Games ist Wireguard nur dann hilfreich, wenn man direkt im Spiel die Zieladresse/IP angeben kann. Ich vermute, dass aufgrund der Layer 3 Verbindung kein Broadcast übertragen wird.
Ubuntu 20.04 Nutzer können direkt bei Schritt 2 starten.
Inhaltsverzeichnis
Schritt 1: Image und Header – nur für Ubuntu 18.04
#eventuell notwendige Voraussetzungen im Kernel bereitstellen apt install linux-image-virtual apt install linux-headers-$(uname -r) apt install software-properties-common #Wireguard PPA hinzufügen, entfällt spätestens ab Ubuntu 20.04 add-apt-repository ppa:wireguard/wireguard #Reboot nur notwendig, wenn Kernelveränderung durchgeführt wurde reboot
Schritt 2: Wireguard installieren und Schlüssel generieren
#Pakete installieren
##Ubuntu 18.04
apt install wireguard-dkms wireguard-tools
##Ubuntu 20.04
apt install wireguard
#Dateiberechtigungen einstellen
umask 077
#Schlüssel erzeugen
wg genkey | tee privatekey | wg pubkey > publickey
wg genpsk > preshared
#Alternative Schlüsselerzeugung, zunächst wird ein privatekey erstellt
wg genkey > privatekey
#nun aus dem privatekey der publickey
wg pubkey < privatekey > publickey
#Erstellen eines Preshared Keys für zusätzliche Absicherung der Verbindung:
wg genpsk > psk1
wg genpsk > psk2
[...]
Nun existieren die Dateien privatekey mit dem Privaten Schlüssel und die Datei publickey mit dem öffentlichen Schlüssel.
In den Dateien psk1,psk2,psk3 … findet sich der jeweilige Pre-Shared-Key, am Besten für jeden Teilnehmer einen neuen erzeugen.
Schritt 3: Serverkonfiguration erstellen
Gegenüber dem Verbindungspartner identifizieren sich die Teilnehmer mit dem publickey – dem öffentlichen Schlüssel. Daher landet dieser Schlüssel jeweils im Bereich [Peer].
Um die Verbindung zusätzlich abzusichern wird für jeden Peer ein eigener Pre-Shared-Key (PSK) erzeugt (siehe oben)
Es müssen mindestens anstatt der Begriffe „serverprivatekey„, „peerOnepublickey„, „peerOnepresharedkey“ usw. die Werte aus den Dateien eingefügt werden.
Sollte das Interface nicht „eth0“ benannt sein muss auch dieses geändert werden.
Das Beispiel enthält auch die Konfiguration für IPv6, diese Anteile können auch weggelassen werden und dienen nur der Vollständigkeit.
nano /etc/wireguard/wg0.conf [Interface] Address = 192.168.11.1/24 Address = fd86:ea04:1115::1/64 SaveConfig = true PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -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 eth0 -j MASQUERADE ListenPort = 54321 PrivateKey = serverprivatekey #Teilnehmer 1 [Peer] PublicKey = peerOnepublickey PresharedKey = peerOnepresharedkey AllowedIPs = 192.168.11.2/32, fd86:ea04:1115::2/128 #Teilnehmer 2 [Peer] PublicKey = peerTwopublickey PresharedKey = peerTwopresharedkey AllowedIPs = 192.168.11.3/32, fd86:ea04:1115::3/128
Schritt 4: Firewall konfigurieren, falls ssh nicht den Standartport nutzt dieses hier anpassen
ufw allow 54321/udp ufw allow ssh ufw default allow forward ufw enable
Schritt 5: Keys für den Client (Peer) generieren, Config erstellen
wg genkey | tee peeroneprivatekey | wg pubkey > peeronepublickey nano peerone.conf [Interface] Address = 192.168.11.2/24 Privatekey = peerOneprivatekey DNS = 192.168.11.1 #Der Wireguard Server, anstatt einer festen ip kann # auch ein DNS Name angegeben werden ( wireguard.example.com ) [Peer] PublicKey = serverpublickey PresharedKey = peerOnepresharedkey AllowedIPs = 0.0.0.0/0 Endpoint = serverip:54321
Schritt 6 -optional- : QR Code aus der Client Config erzeugen und mit der Wireguard APP auf dem Smartphone scannen
apt install qrencode qrencode -t ansiutf8 < peerone.conf
Das Ganze läuft seit einigen Monaten im Dauer-On Modus auf dem Telefon und frisst ca. 20% mehr Akku über den ganzen Tag, der Wechsel zwischen Mobilfunk und Wlan ist nahtlos und sehr schnell – Ich bin jetzt schon begeistert!
P.s: im Vergleich zu OpenVPN ist der Akkuverbrauch etwas niedriger.
Update 05/2020 – leichte Anpassungen zur Lesbarkeit, kurze Info zu Ubuntu 20.04
Update 12/2020 – Korrektur der apt install Befehle
Update 02/2021 – kleine Verbesserung bei ufw allow (nur udp)
6 Gedanken zu “Wireguard VPN und Ubuntu 20.04”
Privatekey = peeroneprivatekey
PresharedKey = peeroneprivatekey
stimmt das???
Leider nicht,
danke für den Hinweis:
PublicKey = serverpublickey
PresharedKey = peeronepresharedkey
Viel Erfolg beim Einrichten und ausprobieren.
LG
Kleiner typo bei
ufw default allow foreward
Es muss heißen:
ufw default allow forward
Danke für den Hinweis, ich habe es korrigiert.
Warum nicht für den Produktiveinsatz möglich?
Frei von der Website des Projekts: Wireguard ist „work in progress“ kann nicht nur bugs sondern auch Sicherheitslücken aufweisen.
Aus eigener Erfahrung würde ich sagen etwa alle 1-2 Wochen gibt es eine Aktualisierung und die Stabilität im täglichen Einsatz ist gerade bei sehr häufigen Verbindungswechseln -wie vom Telefon- teilweise instabil.