Wireguard

Angelegt Donnerstag 19 Oktober 2023


Es gibt kein VPN - nur Proxy-Server von anderen Leuten.



Ich setze zur Zeit LMDE6 (Linux Mint Debian Edition in Version 6 "Faye" aka "Bookworm") ein. Wir schön wäre es, wenn es für Linux so ein elegantes Werkzeug gäbe wie unter Windows, mit dem sich die von der FritzBox generierten Konfigurationsdateien zum Thema wireguard VPN einlesen lassen. Nach etwas Suche fand ich auf dieser Webseite: https://github.com/UnnoTed/wireguird das Gewünschte. ABER: Siehe Update ganz unten!



Wireguird unter LMDE6


Bei der Installation von wireguird (wireguird_amd64.deb) wurde u.a. "resolvconf" mit installiert, welches scheinbar im Konflikt mit dem NetworkManager steht. Das Ergebnis war, dass die Namensauflösung nicht mehr funktionierte. Ein Blick in /etc/resolv.conf erbrachte eine im Wesentlichen leere Datei. Der zuvor vorhandene Inhalt, welcher auf meine interne DNS (AdGuard Home) verwies, war verschwunden und fand sich unter /etc/resolvconf/resolv.conf.d/original wieder. Diese Datei kopierte ich nach /etc/resolvconf/resolv.conf.d/base und startete das System neu. Im Anschluß funktionierte die Namensauflösung wieder, die resolv.conf Datei hatte das gewohnte aussehen. Vermutlich ist diese "Lösung" eher quick & dirty aber im lokalen Netz funktioniert sie. Mit dem Notebook unterwegs in wechselnden Netzen wäre es schlecht irgendeine statische Konfiguration/DNS wie die in "base" zu verwenden, weil dort die DNS eine andere Adresse haben wird.


Anschließend generierte ich in der Fritzbox eine wireguard Konfigurationsdatei, nannte sie in "wg0.conf" um und lud sie mit "Add Tunnel" in Wireguird (s.o.). der Tunnel ließ sich problemlos "Aktivieren". 😀


In der Taskleiste findet sich das von Windows bekannte Drachensymbol mit dem grün-weißen Haken für den aktiven Tunnel, welches nach dem Deaktivieren des Tunnels den Haken verliert, so daß nur noch das runde Drachensymbol angezeigt wird.


Damit die Wireguird-Anwendung automatisch startet habe ich in den "Systemeinstellungen" unter "Startprogramme" Wireguird als Anwendung hinzugefügt und so konfiguriert, daß eine Startverzögerung von 10 Sekunden eingehalten wird. Bei den "Settings" innerhalb von Wireguird habe ich eingestellt, dass das Programm im "system tray" startet:



Ein Startprogramm für Wireguird einrichten



Einstellen der Settings innerhalb von Wireguird



Bei der Anmeldung wird man aufgefordert sein System-Schlüsselbund-Passwort einzugeben, damit die Aktion authorisiert ist, danach erscheint das wireguard Drachensymbol in der Taskleiste.


Noch ist das bei mir hier recht frisch eingerichtet und ich kennen noch nicht die Untiefen, daher lasse ich das jetzt mal als "Work in progress" stehen und korrigiere es ggf. Ich freue mich über Hinweise, wie man das mit dem resolvconf noch besser lösen kann als mit Dateien kopieren ohne dabei den NetworkManager bei seiner Arbeit zu sehr zu stören.


Literatur:



Memo: Nach der Installation von resolvconf ist /etc/resolv.conf ein symbolischer Link:


>file resolv.conf
resolv.conf: symbolic link to ../run/resolvconf/resolv.conf


Vorher war es eine Datei, die durch den NetzwerkManager erstellt wurde, d.h. resolvconf "kapert" die Datei resolv.conf und verlinkt sie mit einer Datei mit gleichem Namen aber anderen Inhalten.


Update: wireguird baut nach gefühlt 15-30 Sekunden Laufzeit eine Verbindung zu Microsoft auf 🤨 - Hä? Wieso, warum?


wireguird 2429 root 14u IPv4 27998 0t0 TCP weizenbaum:45092->20.175.192.149:https (ESTABLISHED)


NetRange: 20.160.0.0 - 20.175.255.255
CIDR: 20.160.0.0/12
NetName: MSFT
NetHandle: NET-20-160-0-0-1
Parent: NET20 (NET-20-0-0-0-0)
NetType: Direct Allocation
OriginAS:
Organization: Microsoft Corporation (MSFT)


=> Plonk! 🗑


Besser: wg-quick up wg0 und wg-quick down wg0 wenn eine passende wg0.conf in /etc/wireguard/ liegt.


Struktur der wg0.conf:


[Interface]
PrivateKey = ß0gf897df9gd8f7g5ktujht= (Beispieldaten!)
Address = <xxx.yyy.zzz/mm> "VPN IP Adresse für diesen Client, die im Router reserviert ist."
DNS = uuu.vvv.www.ttt, ... (z.B. die IP vom Router im lokalen Netz)
DNS = 9.9.9.9


[Peer]
PublicKey = oifdsuzfs9uzfdvkjfdshdfoiuh= (Beispieldaten)
PresharedKey = isdufzsidufzigofdigudfoiguoiu= (Beispieldaten)
AllowedIPs = 192.168.178.0/24, 0.0.0.0/0 (Netzwerk in das geroutet werden soll)
Endpoint = <öffentliche IP Adresse oder Name des Routers>:<Port> (UDP Port auf dem der Router dieses VPN abhört)
PersistentKeepalive = <nn> (in Sekunden)


Hinweis: Wenn bei "AllowedIPs" der Eintrag 0.0.0.0/0 vorhanden ist, dann werden *alle* Daten in das VPN gesendet (default route ins vpn). Dies verhindert z.b. dass bei aufgebautem Tunnel über einen Netzwerkdrucker im lokalen Netz gedruckt werden kann! Lässt man diesen Eintrag weg, dann kann man gleichzeitig das lokale Netz nutzen und das Ferne via VPN verbundene Netz. Allerdings ist dann auch die Sicherheit geringer. Die Fritzbox erzeugt standardmäßig wireguard-Konfigurationen, welche die Default-Route enthalten.


Zusammenfassung:

  1. Installation resolvconf und wireguard-tools: sudo apt install resolvconf wireguard-tools
  2. Anpassen der resolv.conf bzw. umkopieren der /etc/resolvconf/resolv.conf.d/original Datei nach /etc/resolvconf/resolv.conf.d/base
  3. Erstellen und Herunterladen einer wireguard.conf im Router z.B. in einer FritzBox
  4. Umnennen der wireguard.conf in wg0.conf, wg1.conf, wg... je nachdem wieviele Tunnel vorhanden sind und speichern in /etc/wireguard/..
  5. sudo wg-quick up /etc/wireguard/wg0.conf bzw. sudo wg-quick down /etc/wireguard/wg0.conf, ...