Synology VPN Client automatisch verbinden

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.

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.

Dabei muss nur der NAMEVPNPROFIL mit der Bezeichnung im Synology VPN Client geändert werden. In unserem Beispiel ist das HomeVPN

SynoVPNClient_autoconnect

Das Script anschliessend in ein Verzeichnis der Synology laden und den Pfad im Aufgabenplaner eintragen und das Script jede Stunde ausführen.

SynoVPNClient_autoconnect_2

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.

18 Gedanken zu “Synology VPN Client automatisch verbinden

  1. 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.

  2. 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

  3. 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

  4. 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?

  5. 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

  6. 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

  7. Dieses Script funktioniert bei mir unter DSM 7:

    • Das zuvor gepostete Script funktioniert bei mir nicht zuverlässig. Diese Version funktioniert hingegen besser:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert