Wireguard reconnect

blub4747

Lt. Junior Grade
Registriert
Juli 2009
Beiträge
401
Hallo Forum,

Ich habe einen extern Server, welcher in einen DS-Lite Netzwerk Steck und sicher per Wireguard in mein Heimnetz auf die FB verbindet und hier eine lokale IP bekommt. Wegen den reconnect von meinen ISP, muß ich allerdings immer über einen anderen Weg an den Server und Wireguard Verbindung mit 'wg-quick' immer neu runter und wieder hoch fahren.

Jetzt bin ich auf der suche nach einer Lösung, um den reconnect zu automatisieren, eine Lösung war von jemanden, ein script zu schreiben und die Befehle, für den reconnect rein zu schreiben. Leider braucht wg-quick, aber sudo beziehungsweise das sudo Passwort. Hat bitte jemand eine andere idee zu den reconnect Problem ?
Thx, blub4747
 
Das ganze als Service einbauen bzw. den Cron als root einplanen ?
 
Oder ein dedizierter User der per sudoers.d nur genau das eine Script mit sudo aufrufen darf
 
Ja, die war der Letzte Schritt den ich am Ende vorhatte, das Script als cron job laufen zu lassen.
Nur bei den
Isolak schrieb:
Oder ein dedizierter User der per sudoers.d nur genau das eine Script mit sudo aufrufen darf
allerdings hänge ich gerade bei der Umsetzung.

Ich habe mal das hier mal
How to Run Shell Scripts with Sudo Command in Linux
mir angeschaut, blicke aber nicht so richtig durch.
 
Zuletzt bearbeitet:
Welcher Anbieter in D macht noch ein ReConnect?
Falls in der FritzBox der Haken drin ist, dass zwischen 3 und 4 die Verbindung getrennt und wieder aufgebaut werden soll: Einfach mal entfernen
 
Ich bin bei 1&1 und eigentlich bis auf diese Tatsache sehr zufrieden mit den Service, habe keine Probleme mit diesen ISP
 
  • Gefällt mir
Reaktionen: Rassnahr
Als erstes probieren:
Persistent Keepalive in die Wireguard-Config auf dem Server im DS-Lite-Netz einbauen.

Wenn das nicht hilft:
Schreib Dir ein Skript auf dem Server, was du als Systemd-Service laufen lässt, wo du alle paar Sekunden/Minuten einen Ping auf die Fritzbox loslässt. Wenn der Ping fehlschlägt, dann mach ein wg-quick stop + start.

Alternativ:
Meist hast du auch eine native IPv6 im DS-Lite-Netz. Die Fritzbox kann bei Wireguard auch mit IPv6 umgehen.
 
  • Gefällt mir
Reaktionen: blub4747
Pummeluff schrieb:
Alternativ:
Meist hast du auch eine native IPv6 im DS-Lite-Netz. Die Fritzbox kann bei Wireguard auch mit IPv6 umgehen.

Leider läuft auf den Server in DS-Lite-Netz kein IPv6, habe auch den ISP angerufen und gefragt, und es gibt auch keine Pläne dafür in der Zukunft :(

Habe eben den wegen den 'PersistentKeepalive ' nachgeschaut, und ich habe schon, einen Eintrag dafür, werde also die 2te Option später mal ausprobieren.
Thx, für den Input
 
Wireguard als Dienst zu aktivieren hast du schon probiert? Z.B.: systemctl enable --now wg-quick@wg0
 
Bei dir müssten im GUI der FritzBox
2 IP Adressen stehen
1x DS Lite ipv4 mit Adresse
1x IPv6 mit Adresse
 
blub4747 schrieb:
Jetzt bin ich auf der suche nach einer Lösung, um den reconnect zu automatisieren, eine Lösung war von jemanden, ein script zu schreiben und die Befehle, für den reconnect rein zu schreiben.
Reconnect ist nicht nötig. Es reicht, die Peer Adressen der laufenden Verbindung zu aktualisieren. In einem der typischen Routerbetriebssysteme gibt es ein Script dafür, ich glaube OpenWRT (oder war es Mikrotik?). Es checkt regelmäßig die DynDNS Adresse der Gegenseite und aktualisiert bei Bedarf die Peer Adresse im lokalen Wireguard. Das Script kann man problemlos auf jedem Linux laufen lassen.
 
In meinen Fall, bekommt der Client die 202 bei hier in meinen HW und wenn ich diese IP Pinge bekomme keine Antwort :(
 
Ich vermute dein Problem wird sein, dass du durch den reconnect eine andere IP bekommst, und die sich nicht mehr finden? Zumindest liest es sich so raus.

Richte auf beiden Seiten mal mit z.B.: NoIp einen Hostnamen ein, dann kannst du die Geräte mit dem Namen im Internet finden.
Auf der NoIp Seite gibts nen Download link für Linux, damit dieser sich regelmäßig aktualisiert. Kann aber auch in manchen Routern eingerichtet werden.

Wiregurad sollte dann die Verbindung selbst wieder herstellen, wenn kurz getrennt. Zumindest funktioniert das so, wenn ich mich manuell mit meinem Raspberry zuhause verbinde und diesen (oder auch den Router) kurz Neustarten muss. Nach ca. 30 Sekunden bin ich wieder reconnected.
Aber finden müssen sie sich im Internet, sonst klappt das nicht.

Leider sind deine Angaben aber etwas dürftig, welches System wo drauf ist. Welchen Router hast du? Vielleicht solltest du deine Konfiguration etwas genauer beschreiben.
 
Ich verwende das MyFritz DynDns, auf der Server Seite, der Server ist meine 7590FB.

Und der Wireguard Client ist auf enabled eingestellt, also startet der Client bei bei einen Neustart automatisch mit wieder hoch.
 
blub4747 schrieb:
Ich verwende das MyFritz DynDns, auf der Server Seite, der Server ist meine 7590FB.

Und der Wireguard Client ist auf enabled eingestellt, also startet der Client bei bei einen Neustart automatisch mit wieder hoch.
Wenn eine Seite eine fixe ip hat reicht es wenn die nicht fixe Seite regelmäßig was schickt, wenn wg ein gültiges Paket von einer "unbekannten" IP bekommt wird der peer entsprechend angepasst.

Built-in Roaming​

The client configuration contains an initial endpoint of its single peer (the server), so that it knows where to send encrypted data before it has received encrypted data. The server configuration doesn't have any initial endpoints of its peers (the clients). This is because the server discovers the endpoint of its peers by examining from where correctly authenticated data originates. If the server itself changes its own endpoint, and sends data to the clients, the clients will discover the new server endpoint and update the configuration just the same. Both client and server send encrypted data to the most recent IP endpoint for which they authentically decrypted data. Thus, there is full IP roaming on both ends.

https://www.wireguard.com/#cryptokey-routing
 
Ich habe das Problem folgendermaßen gelöst.
1. Einen neuen user anlegen.

adduser nosudopass adduser nosudopass sudo
Dann habe ich die 'sudoers' Datei angepasst.

# User privilege specification root ALL=(ALL:ALL) ALL nosudopass ALL=NOPASSWD: ALL

Und ein kleines Script geschrieben.

cat nosudopass/swg-quick.sh #!/bin/bash wg-quick down wg0 wg-quick up wg0

Als letzten Schritt habe ich einen eintrag in die crontab von den User angelegt.
0 * * * * /home/nosudopass/swg-quick.sh

was mich noch als letztes verwirrt ist, wieso 'wg-quick' in normalen /usr/bin Ordner liegt und dann trotzdem nach den sudo Passwort fragt.
Vielleicht weiß ja jemand eine Antwort darauf.

whereis wg-quick wg-quick: /usr/bin/wg-quick /usr/share/man/man8/wg-quick.8.gz
 
blub4747 schrieb:
was mich noch als letztes verwirrt ist, wieso 'wg-quick' in normalen /usr/bin Ordner liegt und dann trotzdem nach den sudo Passwort fragt.
Ob ein Executeable Root Rechte braucht, hängt davon ab, was es macht, und nicht, wo es liegt. Ich hab Tools in meinem Home Verzeichnis, die brauchen Root Rechte beim Ausführen.

blub4747 schrieb:
0 * * * * /home/nosudopass/swg-quick.sh
Du führst jetzt stündlich dieses Script aus, kappst auf Gedeih und Verderb laufende Verbindungen, und das völlig unnötig in mindestens 99% aller Fälle? Auf der anderen Seite sperrst du dich für bis zu 59 Minuten vom VPN komplett aus, weil die Trennung in einem ungünstigen Moment kommt?
Also, da gibt es intelligentere Lösungen.

https://git.openwrt.org/?p=openwrt/...d;hb=20c4819c7baf6f9b91420849caf30e5137bd75d6

Das OpenWRT Script. Kann man minütlich ausführen. Es kappt keine Verbindungen, sondern aktualisiert lediglich die IP des Peers.
 
blub4747 schrieb:
Dann habe ich die 'sudoers' Datei angepasst.
Wenn du nosudopass sowieso Sudo-Rechte auf alles gibst, kannst du auch gleich root nehmen.

Deine "Lösung" ist von hinten durch die Brust ins Auge.
 
Zuletzt bearbeitet:
Zurück
Oben