weil ich gerade etwas Probleme mit OpenVPN hatte, wollte ich interessehalber mal wireguard ausprobieren. Ist ja jetzt eigentlich auch nix mehr besonders Neues. Meine Ausgangssituation war, das ich OpenVPN zur Verbindung in die Firma hatte. Ein paar Routen in private Netze. Der Rest geht normal ins Internet. Blöd war nur, dass das OpenVPN regelmässig abgeschmiert ist. D. h. keine Verbindung ins Internet mehr möglich, obwohl die Default-Route eigentlich davon nicht betroffen sein sollte. Nachdem hochgestelltes Debugging auch keine zusätzlichen Einsichten gebracht hat und auch ein automatisches openvpn-restart-script auch (noch) keine Abhilfe geschafft hat, habe ich dann mal einen kurzes Ausflug zu Wireguard gemacht.
Wireguard
Einrichtung
Wireguard lässt sich ganz einfach einrichten. Es ist in Buster-Backports vorhanden und es ist nur wenig Konfiguration nötig. Es gibt auch eine gute Anleitung für Debian.[1] Bis auf die Tatsache, dass ich vergessen hatte, die Firewall auf dem VPN-Server noch zu konfigurieren ging das alles ganz schnell von der Hand.
Unterschiede zu OpenVPN
Was es im Vergleich zu OpenVPN nicht so kann ist die zentralisierte Verwaltung. Wenn man einen VPN-Server betreibt mit vielen Nutzern, dann man möchte man das eigentlich schon zentral steuern und nicht am Client nachpflegen müssen - evtl. von Leuten die keine Ahnung von Administration haben. Das betrifft
z. B. das pushen von Routen vom Server. Das muss am Client geschehen durch diese Einträge in der Konfiguration:
Code: Alles auswählen
[Peer]
AllowedIPs = 1.2.3.0/24, 192.168.100.0/24
Was auch nicht funktioniert ist, dass am Server Routen für IP-Adressen auf das vormalige GW gesetzt werden können, so dass diese nicht über das VPN geroutet werden. Das ist ganz nützlich für Ausschlüsse aus den Routen, die ansonsten über das VPN-Gateway laufen. Hier habe ich mir ein Script [2] gebastelt, dass ich auf der Client-Seite via Script ausführen lasse:
Code: Alles auswählen
[Interface]
...
PreUp = /usr/local/bin/route_preserve preserve 200.1.4.7 180.20.40.10
PostDown = /usr/local/bin/route_preserve remove 200.1.4.7 180.20.40.10
Aber so insgesamt läuft das super stabil und das ganze in einer 10 Zeilen Konfiguration(client/server) und ich bin sehr begeistert. Insgesamt ist das ganze aber wohl noch sehr frisch, auch wenn's mittlerweile mit einer Version 1.0 in den Kernel aufgenommen wurde.
Das hier sind mal die anonymisierten Beispielconfigs:
Client
Code: Alles auswählen
[Interface]
Address = 192.168.250.10/24
PrivateKey = generierter_private_key_client
PreUp = /usr/local/bin/route_preserve preserve 200.1.4.7 180.20.40.10
PostDown = /usr/local/bin/route_preserve remove 200.1.4.7 180.20.40.10
[Peer]
PublicKey = generierter_public_key_server
Endpoint = vpnserver.dns.name:51820
AllowedIPs = 200.1.4.0/24, 180.20.0.0/16
PersistentKeepalive = 20
Code: Alles auswählen
[Interface]
Address = 192.168.250.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = generierter_private_key_server
[Peer]
PublicKey = generierter_public_key_client
AllowedIPs = 192.168.250.10/32
[1] https://www.cyberciti.biz/faq/debian-10 ... pn-server/
[2] https://codeberg.org/megabert/script-pa ... e_preserve