Synology: OpenVPN automatisch verbinden

Das Synology NAS, das bei mir in der Wohnung steht, macht jeden Tag ein Backup auf ein NAS, das in einem anderen Haushalt steht (Offsite-Backup). Damit die Übertragung relativ sicher abläuft und auf dem Ziel-NAS nur ein Port offen sein muss, wird das Backup über OpenVPN gemacht.

Erstmal ist an diesem Setup nichts besonderes. In den Netzwerk-Einstellungen von dem Quell-NAS, legt man eine VPN-Verbindung an. Diese wird nach dem Systemstart automatisch wieder hergestellt, wenn der OpenVPN-Server verfügbar ist. Aber genau da geht das Problem los.

Das Ziel-NAS mit dem OpenVPN-Server läuft nicht durchgehend, sondern schaltet sich erst gegen Mittag ein. Ist der Verbindungsaufbau einmal gescheitert, dann wird nicht mehr versucht eine Verbindung aufzubauen.

In diesem Artikel wird eine Lösung vorgestellt, mit der die Neuverbindung zu einem festgelegten Zeitpunkt erneut versucht wird.

Für diese Lösung solltest du wissen, wie du dich via SSH auf dein Synology-NAS verbindest. Die OpenVPN-Verbindung muss über die grafische Oberfläche eingerichtet sein und verbindet sich erfolgreich zum OpenVPN-Server. (Systemsteuerung > Netzwerk > Netzwerk-Schnittstelle)

Der OpenVPN-Client lässt sich über SSH bedienen, jedoch werden alle Parameter ignoriert und diese müssen zuvor in eine Datei geschrieben werden. Diese Datei wird dann beim Verbinden zum OpenVPN-Server ausgelesen und anschließend gelöscht.

Damit man die VPN-Verbindung über ein Skript aufbauen kann, wird der Name (Profilname) und die ID der Verbindung benötigt. Den Namen hast du beim Anlegen der VPN-Verbindung angegeben.

In dem Ordner /usr/syno/etc/synovpnclient/openvpn/ findest du eine Datei, die ungefähr so aussieht: client_o1547298XXX. Der Teil nach dem Unterstrich, ist die benötigte ID.

In einem kleinen Skript wird alles zusammen geführt, das später über den Aufgabenplaner von Synology ausgeführt wird.

Das folgende Skript habe ich unter home/scripts/vpn.sh abgespeichert.

#!/bin/sh

ID=o1547298XXX
NAME=IronMan
PROTO=openvpn

sh -c "echo conf_id=$ID > /usr/syno/etc/synovpnclient/vpnc_connecting"
sh -c "echo conf_name=$NAME >> /usr/syno/etc/synovpnclient/vpnc_connecting"
sh -c "echo proto=$PROTO >> /usr/syno/etc/synovpnclient/vpnc_connecting"

synovpnc connect --id=$ID

Das Skript kann über das Netzwerk-Laufwerk erstellt und gespeichert werden. Nach dem Speichern nicht vergessen, das Skript über SSH ausführbar zu machen.

chmod +x /var/services/homes/lukas/scripts/vpn.sh

Im Aufgabenplaner wird eine neue Aufgabe angelegt. Das Skript muss als Root ausgeführt werden. In meinem Fall startet das entfernte NAS um 14 Uhr und um 14:15 Uhr wird die VPN-Verbindung vom Client über das Skript hergestellt.

Bei mir läuft das Skript jetzt schon einige Monate und die VPN-Verbindung wurde jeden Tag erfolgreich hergestellt. Über die IP-Adresse aus dem entfernten Netzwerk, kann HyperBackup auf das Ziel-NAS zugreifen und das tägliche Backup erstellen.

Quellen: