WireGuard (Software) [ThoSch:Wiki]

Benutzer-Werkzeuge

Webseiten-Werkzeuge


thoschwiki:anwendungen:wireguard

WireGuard (Software)

Diese Seite ist noch im Aufbau.

WireGuard ist eine Virtual-Private-Network-Software, welche als Alternative zu bekannten VPN-Lösungen wie OpenVPN und IPsec entwickelt wird. Es soll im Vergleich zu OpenVPN und IPsec einfacher zu konfigurieren sein sowie schneller und effizienter. WireGuard ist für unterschiedlichste Plattformen verfügbar. Im Gegensatz zu den anderen Lösungen basiert es nicht auf der Client-Server-Architektur, sondern auf der Peer-to-Peer-Architektur. (aus Wireguard)

Bei der Implementation in der Peer-to-Peer-Architektur benötigt jeder der Peers eine öffentliche IP-Adresse. Daher wird man in den meisten Fällen auf die Client-Server-Architektur zurückgreifen, bei der nur der Server eine öffentliche IP-Adresse benötigt.

Software
Projekt WireGuard
weitere Informationen
WireGuard (Docker)

Installation

Wireguard ist derzeit (11/2020) nur auf Debian-basierten Linux-Systemen (z.B. Debian, Ubuntu und Derivate, Raspbian/Reaspberry OS lauffähig.

Installation unter Ubuntu

Bei den LTS-Versionen von Ubuntu und dessen Derivaten (ab 16.04) ist das Paket wireguard bereits in den Standard-Paketquellen enthalten. Daher reicht hier ein Aufruf von apt install aus:

sudo apt install wireguard

Installation unter Debian / Raspbian / Raspberry OS

Bei anderen Debian-basierten Linuxen muss derzeit (11/2020) zunächst das Backport-Repository eingebunden werden:

echo "deb http://httpredir.debian.org/debian buster-backports main contrib non-free" | sudo tee --append /etc/apt/sources.list.d/debian-backports.list
wget -O - https://ftp-master.debian.org/keys/archive-key-$(lsb_release -sr).asc | sudo apt-key add -

Anschließend sind die Paketquellen neu zu lesen, das System auf den neuesten Stand zu bringen und die Kernel-Headers zu installieren:

sudo apt update
sudo apt upgrade
sudo apt install raspberrypi-kernel-headers

Anschließend kann WireGuard installiert und das System gebootet werden:

sudo apt install wireguard
sudo reboot

Konfiguration / Troubleshooting

Automatischer Aufbau der Verbindung

WireGuard über die Aktivierung des entsprechenden Systems-Service beim Systemstart automatisch aktiviert werden:

sudo systemctl enable wg-quick@wg0.service

Zur Steuerung stehen die systemctl-Kommandos start, restart, stop und status zur Verfügung.

Sofern der Service nicht mehr benötigt wird, kann er wie folgt entfernt werden:

sudo systemctl stop wg-quick@wg0
sudo systemctl disable wg-quick@wg0.service
sudo rm -i /etc/systemd/system/wg-quick@wg0*
sudo systemctl daemon-reload
sudo systemctl reset-failed

MTU

Bei meinem ersten Setup bin ich auf das Problem gestoßen, dass vom Peer im LAN sowie dem angebundenen Rechnern im LAN Verbidungestests per ping oder traceroute möglich waren, ein Verbindungsaufbau per http(s) oder ssh jedoch nicht erfolgreich war. In der umgekehrten Richtung war von einem Peer im WireGuard-VPN der Verbindungsaufbau zum Peers im LAN und den „hinter“ diesem liegenden Rechnern zunächst noch problemlos möglich, scheiterte dann später1). Eine tiefergehende Analyse des erfolglosen Aufbaus einer ssh-Verbindung brachte dann die Lösung2): Die MTU (Maximum Transmission Unit) musste angepasst werden.

Die MTU wird im [Interface]-Abschnitt der wg.conf gesetzt:

[Interface]
…
MTU = 1380
…

Die in den Beispielen genannte Größe von 1500 war zu groß, weil die gesetzte MTU bereits nur bei 1420 lag. Die im Blogpost von Kerem Erkan genannte MTU von 1412 führte genauso wenig zum erfolg wie der Wert von 1400. Erst mit dem Wert 1380 lief es in diesem Fall3).

QR-Codes

Mobile WireGuard-Clients können über QR-Codes konfiguriert werden. Bei der Nutzung eines Docker-Containers mit dem Linuxserver-Image werden die entsprechenden PNG-Dateien generiert und ggf. auch auch auf der Console ausgegeben, sofern der Container nicht detached gestartet wird.

Aus der vorliegen Konfiguration kann ein QR-Code generiert und in der Konsole als ASCII-Art angezeigt werden:

qrencode -t ansiutf8 < peerXX.conf

Sofern man die Konfiguration eines Peers manuell verändert, sollte man ein neues PNG mit dem QR-Code generieren (ohne Vorgabe des Ausgabetyps mit -t wird ein PNG. generiert):

qrencode -o peer2.png < peer2.conf

Ubuntu-Clients

Unter Ubuntu 18.04 (Bionic) und 20.04 (Focal) führt der Aufruf von wg-quick up zum Fehler, weil der Befehl resolvconf nicht verfügbar ist. Es muss hier das Paket openresolv nachinstalliert werden4).

Quellen

1)
Wahrscheinlich weil die MTU des Peers im LAN vermindert wurde…
2)
Die Suche nach der letzten, von ssh -v <IP> ausgegebenen Debug-Meldung „expecting SSH2_MSG_KEX_DH_GEX_REPLY“ brachte u.a. diesen Treffer bei serverfault
3)
In der Gegenrichtung läuft es Problemlos mit der Defazúlt-MTU von 1420
thoschwiki/anwendungen/wireguard.txt · Zuletzt geändert: 13.03.2021 18:33 von thosch