In diesem Artikel möchte ich auf ein ganz konkretes Problem / Bedürfnis eingehen wofür es leider im Netz kaum schlaue Lösungen gibt. Es geht darum, dass ich einige Synologys an externen Orten betreibe und diese gerne alle zentral verwalten und Daten sicher austauschen möchte. Dazu eignet sich bestehns die VPN Technologie. Synology bietet dafür einen VPN Server, dieser wird auf der Haupt-Synology bei mir Zuhause installiert. Anschliessend kann ich auf allen Aussenstellen, die mit der Zentrale verbunden werden sollen den internen VPN Client benutzen. Soweit alles mit Bordmitteln möglich und absolut kein Problem zum Einrichten.
Wenn nun die Verbindung unterbrochen wird (Neustart Synology, Netzwerkausfall) dann wird die VPN Verbindung nicht automatisch (beim Starten der Synology) hergestellt. Dies können wir mit einem kleinen Bash-Script bewerkstelligen. In diesem Beispiel für OpenVPN Verbindungen.
1 2 3 4 5 6 7 8 9 |
#!/bin/sh if echo `ifconfig tun0` | grep -q "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00" then echo "VPN up" else echo 1 > /usr/syno/etc/synovpnclient/vpnc_connecting /usr/syno/bin/synovpnc reconnect --protocol=openvpn --name=NAMEVPNPROFIL fi exit 0 |
Update: Mittlerweile gibt es ein überarbeitetes Script für DSM 5 und 6. Dafür benötigt ihr nebst dem VPN Namen noch die Config Nummer oXXXXXXX.Diese lässt sich leider nur via SSH auslesen. Man baut zuerst die VPN Verbindung von Hand auf. Dann loggt man sich ein und gibt den Befehl ps|grep client_o ein. Anschliessend erhält man einen Auszug der laufenden Dienste und sieht die Config ID.
1 2 3 4 5 6 7 8 9 10 11 |
#!/bin/sh if echo `ifconfig tun0` | grep -q "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00" then echo "VPN is running" else echo conf_id=oXXXXXXX > /usr/syno/etc/synovpnclient/vpnc_connecting echo conf_name=NAMEVPNPROFIL >> /usr/syno/etc/synovpnclient/vpnc_connecting echo proto=openvpn >> /usr/syno/etc/synovpnclient/vpnc_connecting /usr/syno/bin/synovpnc reconnect --protocol=openvpn --name=NAMEVPNPROFIL fi exit 0 |
Dabei muss nur der NAMEVPNPROFIL mit der Bezeichnung im Synology VPN Client geändert werden. In unserem Beispiel ist das HomeVPN
Das Script anschliessend in ein Verzeichnis der Synology laden und den Pfad im Aufgabenplaner eintragen und das Script jede Stunde ausführen.
Wird nun die Verbindung unterbrochen, wird spätestens nach einer Stunde die Verbindung wieder hergestellt. Somit hat man jederzeit Zugriff zu seinen Synologys im VPN Betrieb.
Hallo und Danke dafür!
..leider fragen dazu 😉
– Kann ich das script auch in ein unterverzeichnis des admin users legen?
wie muss dann hier der pfad dazu lauten?
– laut deinem letzten screen schreibst du nicht die dateiendung .sh in das feld „befehl ausführen“ weshalb ist das nicht erforderlich?
besten dank!
Hallo Chris
Du kannst das Script an einem beliebigen Ort ablegen, du musst nur den Pfad zum Verzeichnis kennen. Für den Admin User wäre das wohl /volume1/homes/admin/VPNSCRIPT
Ich habe keine Endung gewählt, weil meine Datei auch keine hat. Selbstverständlich kannst du deine Datei auch mit Endung .sh speichern und dann den Pfad entsprechend anpassen.
Ich hoffe ich konnte dir damit helfen.
Hallo, vielen Dank für das Script, das Problem habe ich auch. Kann ich das Script auch für eine PPTP Verbindung nutzen?
Freundliche Grüße
Christoph Neis
Hallo Christoph
PPTP ist nicht mehr sicher und kann mit einfachen Mitteln ausgehebelt werden.
Habe folgendes Script im Netz gefunden, kann dir aber nicht sagen, ob es funktioniert.
if echo
ifconfig ppp0
| grep -q "Link encap:Point-to-Point Protocol"then
echo "VPN up"
else
echo 1 > /usr/syno/etc/synovpnclient/vpnc_connecting
synovpnc reconnect --protocol=pptp --name=Connection
fi
exit 0
In Synology DSM 5 this is broken, so don’t upgrade until you know for sure there’s a new methode!
I did not.. :/
if echo
ifconfig tun0
| grep -q „00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00“then
echo „VPN up“
else
echo conf_id=o1380223815 > /usr/syno/etc/synovpnclient/vpnc_connecting
echo conf_name=NAMEVPNPROFIL >> /usr/syno/etc/synovpnclient/vpnc_connecting
echo proto=openvpn >> /usr/syno/etc/synovpnclient/vpnc_connecting
synovpnc reconnect –protocol=openvpn –name=NAMEVPNPROFIL
fi
exit 0
find the conf_id by issueing (when openvpn is connected):
> ps|grep openvpn
Hallo,
gibt es das auch für VPN Trennen?
Hallo und vielen Dank für den Beitrag. Funktioniert das auch mit DSM 6.0?
Vielen Dank
Hallo Seth
Nimm die Variante von Bart, respektive habe ich den Text angepasst. Damit sollte es auch für DSM 6 funktionieren.
Hallo
Super Anleitung. Leider erzeugt der Befehl ps|grep client_o bei mir am client keine ausgabe in putty was mache ich falsch? Und was von der Ausgabe wäre dan die ID?
Besteht die VPN Verbindung denn? Die muss vorhanden sein und dann siehst du die ID (Teil nach client_o).
Moin,
ich habe das selbe Problem. (O)VPN ist getartet und läuft aber ich bekomme keine Ausgabe auf ps|grep client_o, auch nicht bei ps|grep openvpn.
Hallo,
ich habe die VPN ID herausgefunden über den Step1 auf dieser Website: https://blog.benoitblanchon.fr/synology-auto-connect-vpn-at-startup/
Wenn ich nun alles einrichte und das Skript ausführen will erhalte ich aber die folgende Fehlermeldung. Gibt es eine Idee, wie man das Skript anpassen kann?
tun0: error fetching interface information: Device not found
./connection.sh: line 6: /usr/syno/etc/synovpnclient/vpnc_connecting: Permission denied
./connection.sh: line 7: /usr/syno/etc/synovpnclient/vpnc_connecting: Permission denied
./connection.sh: line 8: /usr/syno/etc/synovpnclient/vpnc_connecting: Permission denied
get arguemnt protocol: openvpn
get arguemnt name: XXX
Reconnect [Connection] … done
als root user erhalte ich:
tun0: error fetching interface information: Device not found
get arguemnt protocol: openvpn
get arguemnt name: Connection
Reconnect [Connection] … done
Hallo,
versuche mich grad an dem Thema. Kriege jedoch leider nicht die ID heraus. Kann mir jemand helfen?
Viele Grüße
Niels
An alle Mitwirkende: Vielen DANK für das Skript! Ohne dem Grundgedanken wäre ich noch nicht am Ziel.
Hier meine Weiterentwicklung, funzt auf DSM 6.2: Die Information für das Reconnect steckt in der Datei ‚vpnc_last_connect‘. Skript mit Variablen:
if echo
ifconfig tun0
| grep -q „00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00“then
echo „VPN is running“
else
my_pfad=“/usr/syno/etc/synovpnclient“
my_conf_id=$( grep ‚conf_id=‘ ${my_pfad}/vpnc_last_connect )
my_conf_name=$( grep ‚conf_name=‘ ${my_pfad}/vpnc_last_connect | cut -d ‚=‘ -f2)
my_proto=$( grep ‚proto=‘ ${my_pfad}/vpnc_last_connect | cut -d ‚=‘ -f2)
echo $my_conf_id > ${my_pfad}/vpnc_connecting # conf_id=oxxxxxxxxxx
echo „conf_name=${my_conf_name}“ >> ${my_pfad}/vpnc_connecting # conf_name=NAMEVPNPROFIL
echo „proto=${my_proto}“ >> ${my_pfad}/vpnc_connecting # proto=openvpn
synovpnc reconnect –protocol=$my_proto –name=$my_conf_name
fi
Dieses Script funktioniert bei mir unter DSM 7:
Das zuvor gepostete Script funktioniert bei mir nicht zuverlässig. Diese Version funktioniert hingegen besser: