Wireguard reconnect

Kritisieren ist nur ein halber Punkt, wenn man aber mit alternativen Vorschlägen ankommt, dann kommt man weiter. Aber keine sorge, auch ich muß viel fluchen :)
Ergänzung ()

Y-Chromosome schrieb:
Wieso nutzt Du nicht den systemd Dienst?
Und wie soll SystemD die super Lösung alternative sein ?
Und was wenn ich sagen würde, das vielleicht Devuan oder MXLinux verwende ?
Zum glück verwende Ich schon diesen Systemd Kram
sudo service wg-quick@wg0 status ● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0 Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; preset: enabled) Active: active (exited) since Wed 2024-01-17 10:24:46 CET; 1 week 4 days ago Docs: man:wg-quick(8) man:wg(8) https://www.wireguard.com/ https://www.wireguard.com/quickstart/ https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8 https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8 Main PID: 708 (code=exited, status=0/SUCCESS) CPU: 174ms Jan 17 10:24:44 pve systemd[1]: Starting wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0... Jan 17 10:24:44 pve wg-quick[708]: [#] ip link add wg0 type wireguard Jan 17 10:24:44 pve wg-quick[708]: [#] wg setconf wg0 /dev/fd/63 Jan 17 10:24:46 pve wg-quick[708]: [#] ip -4 address add 192.168.178.202/24 dev wg0 Jan 17 10:24:46 pve wg-quick[708]: [#] ip link set mtu 1420 up dev wg0 Jan 17 10:24:46 pve wg-quick[947]: [#] resolvconf -a wg0 -m 0 -x Jan 17 10:24:46 pve systemd[1]: Finished wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0.

Wireguard VPN Autostart mit systemd einrichten – Tutorial

Kannst du bitte deinen Vorschläg, bitte voller länge erläutern ?
 
Zuletzt bearbeitet:
blub4747 schrieb:
Kritisieren ist nur ein halber Punkt, wenn man aber mit alternativen Vorschlägen ankommt, dann kommt man weiter.
Ok, dann mal hier meine Config (LAN2LAN), die ich so ähnlich auf meinem V-Server verwende. Generell verwende ich keinen Networkmanager, da mir das Ding in der Vergangenheit schon die verschiedensten Probleme bereitet hat. Stattdessen hab ich alles auf Systemd-Networkd umgestellt. Erscheint mir bisher wesentlich leichtgewichtiger und stabiler.

Auf meinem V-Server wird nur Wireguard über Systemd-Networkd konfiguriert. Eine wg.conf existiert nicht, wg-quick nutz ich da auch nicht. Ist ein LXC-Container. Die restliche Netzwerkconfig wird über den klassischen Debian-Weg realisiert.

/etc/systemd/network/wg0.netdev
Code:
[NetDev]
Name=wg0
Kind=wireguard
Description=Wireguard Tunnel

[WireGuard]
PrivateKey = xxxmeinprivkey=
ListenPort = 55555

[WireGuardPeer]
# meine Gegenstelle
PublicKey = xxxpublickeygegenstelle=
PresharedKey = xxxpresharedkey=
AllowedIPs = 192.168.2.0/24
PersistentKeepalive = 25
Endpoint = gegenstelle.v6.rocks:55566

/etc/systemd/network/wg0.network
Code:
[Match]
Name=wg0

[Network]
Address=192.168.1.0/24

[Route]
Destination=192.168.2.0/24
Scope=link

Wenn du Glück hast, dann reicht diese Config schon, da Systemd auch die Netzwerkverbindung überwacht. Zumindest tauchen in meinem Log ab und zu auch solche Meldungen auf:
Code:
Jan 26 16:00:26 vserver.vsr systemd-networkd[91]: wg0: Failed to resolve host 'gegenstelle.v6.rocks:55566': Temporary failure in name resolution

Falls nicht, würde ich ein Skript schreiben, was per Ping die VPN-Verbindung überwacht. Hier konkret wird jede Minute ein Ping (-c -1) ohne Ausgabe (-w) mit einem Timeout von 30 Sekunden (-w 30) an eine IP der Gegenstelle (192.168.2.1) gesendet. Kommt nichts zurück, kannst du dann den Tunnel beenden und neu aufbauen.

/usr/local/bin/vpntest (ungetest, aus dem Kopf hingeschrieben)
Code:
#!/bin/bash
while true; do
    sleep 1m
       ping -q -c 1 -w 30 192.168.2.1 > /dev/null 2>&1
       retval=$?
       if [ $retval -ne 0 ]; then
               systemctl restart systemd-networkd
               # alternativ
               # wg-quick stop wg0 && wg-quick start wg0
       fi
done

Das Skript lässt du dann über Systemd als Daemon laufen lassen.

/etc/systemd/system/vpntest.service (ungetest, aus dem Kopf hingeschrieben)
Code:
[Unit]
Description=Test is VPN tunnel is still working
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/vpntest
Restart=always

[Install]
WantedBy=multi-user.target

Anschließend alles noch starten und aktivieren
Code:
systemctl daemon-reload
systemctl enable --now systemd-networkd
systemctl enable --now vpntest
 
Zurück
Oben