OpenVPN Script für automatischen Reconnect

Status
Für weitere Antworten geschlossen.

notgnixel

Benutzer
Mitglied seit
23. Sep 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo liebe Forumsleser,

ich habe ein Problem mit dem automatischen Reconnect einer OpenVPN Verbindung.

Folgende Konstellation:
Synology #1:
DS1812+
OpenVPN
Portweiterleitung
User/PW
DSM4.3 (neuestes Update)

Synology #2:
DS213
OpenVPN
User/PW/Cert
DSM4.3 (neuestes Update)

Szenario Beschreibung:
Synology #2 baut nun eine Verbindung auf und fängt eine Datensicherung an. Diese Datensicherung läuft natürlich sauber durch, bis zum Zeitpunkt der Zwangstrennung. Nun versucht Synology #2 sofort wieder den OpenVPN Tunnel zu erstellen, schafft es aber nicht beim ersten Mal und bricht nun das automatisch Tunnel aufbauen wieder ab.

Zielbeschreibung:
Eine Lösung schaffen, um die ich mich manuell nicht mehr kümmern muss, die automatisch einen Tunnel aufbaut und eine Datensicherung fährt, so lange bis die Datensicherung nicht mehr abbricht. Gerne kann der Tunnel aufbleiben, dies stört mich nicht. Wenn man weiß wie man danach automatisch den Tunnel schließt und dieser sich erst wieder bei bedarf automatisch aufbaut, auch gerne das, dies ist aber rein optional.

Nun 2 Lösungsmöglichkeiten, die ich beide nicht weiß umzusetzen
1) Ich sage der Synology #2, dass Sie häufiger versuchen soll den Tunnel aufzubauen, als nur 1 Mal. Eventuell mit einer 5 Minütigen Wartepause dazwischen. Sprich als Beispiel bei einem Fehler, 5 Minuten warten, 3 Mal versuchen, 5 Minuten warten ... und so weiter

2) oder ich erstelle ein Script welches automatisch im Hintergrund läuft das folgendes macht:
Check if VPN is connected
if yes -> script beenden
if no -> reconnect OpenVPN
Und dieses Script läuft automatisch alle 15 Minuten

Jetzt muss man sagen, ich bin nicht unbedarft, was Hardware und Netzwerke angeht, aber leider habe ich nur wenig Ahnung vom Scripten. Daher, wenn jemand weiß wie das ganze funktioniert, bitte ein wenig ausführlicher. Vielen vielen Dank im Voraus, falls jemand eine Lösung weiß.

Gerne erkläre ich das Szenario auch nochmal ausführlicher.

Beste Grüße


notgnixel



PS: Natürlich habe ich schon andere Beiträge gelesen und durchforscht, aber leider nichts hilfreiches gefunden.
 
Zuletzt bearbeitet:

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Hallo und willkommen,

PS: Natürlich habe ich schon andere Beiträge gelesen und durchforscht, aber leider nichts hilfreiches gefunden.

auch diesen Thread ? Hier steht eigetlich alles wesentliche zum Verbindungsaufbau per Script.

Aber mal eine andere Lösung. Die OpenVPN-Verbindung wird jedenfalls soviel ich weiß mehrmals versucht wieder herzustellen und bei mir klappt das auch nach einer Zwangstrennung. Hab allerdings von einem anderen Forenteilnehmer gehört das bei ihm am Montag auch mal für eine Stunde getrennt wird. Da hat dann das Verfahren in der DS ohne Scriptunterstützung keine Chance.

Ansonsten hab ich jeweils in den Routern die Zangstrennung wenn möglich auf einen festen Zeitpunkt gelegt und lasse dann 15 Minuten später die Synchronisation täglich laufen. Funktioniert bis jetzt einwandfrei. Es mußte nur am Anfang die Synchronisation mehrmals angestoßen werden, da sie dies innerhalb der knapp 24 Stunden nicht geschafft hat.

Gruß Frank
 

notgnixel

Benutzer
Mitglied seit
23. Sep 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo Frank,

vielen Dank für diese Hilfe. Ich habe nur ein Problem, wenn ich etwas per Script mache, wird an allen Ecken und Enden davor gewarnt, dass die Warranty erlischt. Solange ich weiß was das Script macht (im Detail!), ist das kein Stress. Aber könntest du mir sagen was es genau macht, bzw. mir auch sagen wo ich das eingebe. Weil ein SSH freischalten und dann per Putty drauf zugreifen ist ja kein Stress, aber ich würde gerne wissen, was genau dieses Script macht.

Zum automatischen Aufbau einer VPN-Verbindung beim Start eine ausführbare Datei in dem Ordner /usr/local/etc/rc.d anlegen. Beispielsweise:

Rich (BBCode):
/usr/local/etc/rc.d/vpn_connect.sh

mit folgendem Inhalt

Rich (BBCode):
#!/bin/sh 
# 
case "$1" in 
   start) 
        echo 1 > /usr/syno/etc/synovpnclient/vpnc_connecting
	synovpnc reconnect --protocol=openvpn --name=Profilname
      ;; 
   stop) 
      ;;
esac 
#

Ich habe jetzt folgendes Verstanden, das Script legt eine Datei an, schreibt hier rein wenn das VPN verbunden ist und überprüft dieses dann, wenn nicht dann baut es über Profilname eine neue Verindung auf. Stimmt das soweit?

Wenn ja, wo gebe ich das bitte genau ein? (<- erscheint mir wie eine selten doofe Frage, aber hau ich das sonst einfach in Putty bzw. SSH Connection ein?)

Beste Grüße und schonmal vielen Dank



Leif
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Hallo Leif,

also erst einmal wirst Du keine Garantie verlieren wenn Du Scripte auf der DS anwendest. Ich würde mal soweit gehen das Scripte auf der DS sogar ausdrücklich gewollt sind, warum ansonsten den Aufgabenplaner? Das was Du hier sicherlich verwechselst ist der Umstand das Synology den Support bei Geräten ablehnt wo 3rd-Party Software drauf installiert ist. Auch verständlich da man hier eventuelle Wechselwirkungen nicht ausschliessen kann. Dies ist aber in diesem Fall nicht der Fall. Verwende einfach den Aufgabenplaner und lege deine Scripte nicht in irgendwelche Systemverzeichnisse und schon solltest Du auch keinerlei Probleme bekommen.

Und deine Schilderung des Ablauf vom Script ist fast richtig. Die Datei, in die am Anfang geschrieben wird, wird nur als Schalter für das Connecten genommen und somit vor dem Verbindungaufbau dort eine "1" hineingeschrieben. Danach wird diese Datei von synovpnc verwaltet.

Gruß Frank
 

notgnixel

Benutzer
Mitglied seit
23. Sep 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo Frank,

an dieser Stelle schonmal vielen Dank. Ich rekapituliere noch einmal, nur für das Verständnis.

Control Panel -> Task Scheduler -> User-defined Script

Task: VPN Reconnect
User: root
Status: enabled

Run command
User-defined script:
#!/bin/sh
#
case "$1" in
start)
echo 1 > /usr/syno/etc/synovpnclient/vpnc_connecting
synovpnc reconnect --protocol=openvpn --name=profilname
;;
stop)
;;
esac
#

Schedule:
Hourly

Die Frage ist jetzt, wo schreibe ich diese Datei, die wir vorher erwähnt hatten.
/usr/local/etc/rc.d/vpn_connect.sh

Sorry, ich bin was Unix/Linux angeht, echt nicht auf der Höhe.
Beste Grüße


Leif
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Hallo Leif,

vieleicht solltest Du erst einmal ein paar Schritte auf der Console machen. Aber gut zu deinem Script. Im Aufgabenplaner kommt der Pfad zu deinem Script. Hierzu würde ich erst einmal einen gemneinsamen Ordner erstellen. Nehmen wir mal an Du nennst ihn "scripte" und er liegt auf volume1 dann gehört in den Aufgabenplaner der Pfad /volume1/scripte/deinscript.sh.

Dieses Script muß noch ausführbar gemacht werden. Beispielsweise Filestation / Eigenschaften oder auf der Console per chmod.

Verzeichnisse wie /usr/local/etc/rc.d würde ich erst mal in Ruhe lassen. Hier legen normalerweise 3rd-Party-Programme ihre start/stop-scripte ab. In dem oben verlinkten Thread stand dieses Script in diesem Ordner damit es beim Start der DS ausgeführt wird. Deshalb auch die Auswertung und Verzweigung im Script über den parameter "start".

Und daran denken für die Bearbeitung der Scripte einen Editor zu verwenden der auch Unix-konforme Zeilenumbrüche beherrscht. Vieleicht ist ja WindSCP etwas für Dich. Aber daran denken, wenn Du am System etwas änderst könnte das auch in einem Fiasko enden. Also immer mit Bedacht - besser nur Sachen ändern von denen man auch weis was sie bewirken.

Wenn Du das Script oben komplett (incl. dem Namen) in dem gemeinsamen Ordner übernommen hättest und auch als Ausführbar gekennzeichnet hättest, dann sollte es folgend auf der Console getestet werden können.

Rich (BBCode):
/volume1/scripte/vpn_connect.sh start

Wenn Du alles korrekt gemacht hast würde es dann die Verbindung unter profilname aufbauen.

Gruß Frank
 

notgnixel

Benutzer
Mitglied seit
23. Sep 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo Frank,

entschuldige das ich so lange nicht geantwortet habe, aber ich war geschäftlich unterwegs. Auf jedenfall werde ich heute bzw. spätestens Morgen dies mal ausprobieren und dann Rückmeldung geben.

An dieser Stelle schonmal vielen Dank für die ausführliche Erklärung.

Beste Grüße



Leif
 

notgnixel

Benutzer
Mitglied seit
23. Sep 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo Frank,

also ich habe das jetzt hinbekommen, es läuft sogar. Musste mir kurz unterstützung von einem Linux Menschen holen, dann hat es aber anstandslos funktioniert. Jetzt sichert er ganz brav seine Blöcke durch die Gegend.

Eine Frage habe ich noch, kann ich jetzt hingehen und die bestehende Datensicherung unterstützen und die Daten schnell per USB hin und her kopieren?
Bei einer Site haben wir nur 1Mbit Upload, aber fast 2TB an Daten, diese ändern sich zwar nicht, aber es ist wichtig das die schnell hier landen. Geht das irgendwie?

Sprich hinfahren, USB3 HDD anschließen und die Daten hier einspielen. Und ab hier übernimmt dann die normale Datensicherung und baut auf diesem Datensatz auf?


Beste Grüße


Leif
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
Hallo,

theoretisch würde ich sagen ja. Hab das aber nur immer Initial per Netzwerk für die Ordnernsynchronisation gemacht. Aber wie heißt es so schön. Versuch macht kluch. Aber auf jeden Fall gehört das nicht hier her. Mach doch einfach einen weiteren Thread auf im Bereich Backup auf vieleicht kann das ja jemand schon korrekt beantworten.

Gruß Frank
 

kirdneh

Benutzer
Mitglied seit
24. Nov 2011
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Anzahl der Reconnect-Versuche erhöhen

Hallo,

der Threat ist zwar schon ein paar Wochen alt, aber ich bin jetzt erst auf das Problem gestoßen. Ich mochte hier kurz die für mich praktikabelste Lösung (DSM 4.3-3810) beschreiben:


Die Crux an der Sache ist, das die DS in der Standardeinstellung nur 5 Versuche aller 30 Sekunden zu einem Reconnect macht. Sobald die Verbindung länger als 3 Minuten unterbrochen ist (bei z.B. Dyndns leider keine Seltenheit), bricht die DS mit einer Fehlermeldung ab und versucht es nicht erneut.

Die Anzahl der Versuche bzw. die Frequenz lassen sich in der derzeitigen Version nicht per WEB-Gui einstellen. Die Anzehl der Versuche sind aber in den *.conf - Dateien der Verbindungen enthalten.

Die Angaben zu den VPN-Verbindungen (in dem Fall pptp) liegen hier:

--> /usr/syno/etc/synovpnclient/pptp

darin sind Dateien mit den Verbindungsdaten enthalten. Die *.conf - Dateien enthalten in der letzten Zeile den Wert
"reconnect_times=5"

ich habe den Wert auf 500 gesetzt, so dass die DS jetzt erst nach 500 erfolglosen Versuchen (nach reichlich 4 Stunden) aufgibt.


Die Frequenz der Reconnect-Versuche scheint in der Datei

/usr/syno/etc/synovpnclient/scripts/ip-down

in Zeile 35 enthalten zu sein:

/usr/syno/bin/synovpnc reconnect --protocol=${proto} --name=${conf_name} --retry=${reconnect_times} --interval=30

das Interval anzupassen habe ich jedoch nicht getestet.

Es wär praktisch, wenn Synology das ggf. in einer der nächsten Versionen mit in die GUI einbauen würde.



Gruß Hendrik
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat