Synology Remote Backup mit Raspberry Pi und Wireguard

Sind Ihnen schon einmal Daten verlorengegangen, weil Sie kein Backup hatten? Oder hatten Sie zwar ein Backup, konnten dies aber nicht wiederherstellen? Beides sind Situationen, die man im Ernstfall nicht gebrauchen kann. Wir zeigen in diesem Beitrag, wie Sie ein räumlich getrenntes Remote Backup mit Raspberry Pi und einem Wireguard VPN für Ihr Synology NAS einrichten.

Der Artikel ist zwar sehr lang, behandelt dabei aber auch mögliche Fallstricke und deren Lösung.


Ausgangslage und Zielszenario des Remote Backups

Die folgende Ausgangslage soll um ein Remote Backup ergänzt werden:

  • In einem Netz (Heimnetzwerk) werden Daten zentral auf einem Synology NAS gesichert
    • Auf den Clients erfolgt dies für ausgewählte Ordner per Synology Drive automatisch
    • Manuell auf Netzwerkfreigaben, die das Synology NAS den Nutzern zur Verfügung stellt
  • Kritische Daten werden zusätzlich vom Synology NAS täglich auf eine angeschlossene, externe Festplatte gesichert

Im Zielszenario sollen diese kritischen Daten zusätzlich einmal täglich nachts an einem entfernten Standort gesichert werden.

Dabei gelten folgende Anforderungen:

  • Umsetzung einer preisgünstigen Lösung (Raspberry Pi)
  • Nutzung einer externen Festplatte, die im Bedarfsfall schnell in das Heimnetzwerk geholt werden kann
  • Verwendung einer permanenten und sicheren VPN-Verbindung in das Heimnetzwerk (Wireguard)
  • Fire & Forget Lösung, die am entfernten Standort nur an das Internet und Strom angeschlossen wird, beim Start des Raspberry Pi verbindet sich dieser von selbst, es sind keine weiteren Maßnahmen notwendig.
  • SSH-Zugriff auf dem entfernten Rechner zur Administration

Dieses Szenario setzen wir mit dem Synology Remote Backup Raspberry Ansatz in diesem Artikel um.


Voraussetzungen

Um das Szenario abbilden zu können, sind folgende Voraussetzungen in Ihrem Netzwerk notwendig:

  • Vorhandene Backup-Lösung, in diesem Fall ein Synology NAS (DSM)
  • Ein Wireguard-VPN Server in Ihrem Netzwerk (siehe Wireguard unter Proxmox installieren)
  • Ein Raspberry Pi (min. Version 2)
  • Eine USB-Festplatte, auf dem das Remote Backup gehalten wird und die am Raspberry Pi angeschlossen wird
  • Ein Remote-Standort mit Internetzugriff, an dem der Raspberry Pi angeschlossen ist
  • Ein dynamischer DNS Anbieter, sofern keine feste IP-Adresse im Netzwerk existiert

Da das Backup mittels rsync realisiert wird, kann theoretisch jede Backup-Lösung verwendet werden, die mit rsync umgehen kann.


Einrichtung des Raspberry Pi

Nehmen Sie einen Raspberry Pi und setzen Sie diesen am besten neu auf. Laden Sie sich dazu die aktuelle Version des Raspberry Pi OS herunter, verwenden Sie dazu den Raspberry Pi Imager. Wählen Sie die minimale Installation ohne grafische Oberfläche aus.

Wenn Sie das Image auf eine SD Karte geschrieben haben, erstellen Sie in der „boot“-Partition noch eine leere Datei ssh, damit der Raspberry ohne Maus, Keyboard und Monitor per SSH konfiguriert werden kann.

Wenn der Raspberry Pi gebootet ist, können Sie sich per

ssh pi@IP-ADRESSE

mit dem Pi verbinden, das Passwort lautet raspberry.

Starten Sie anschließend das grafische Setup, um die Grundkonfiguration des Raspberry Pi durchzuführen:

sudo raspi-config

Die Grundkonfiguration des Raspberry Pi wird an dieser Stelle nicht weiter beschrieben, da es hierfür unzählige Quellen im Netz gibt (raspi-config Dokumentation).

Root User konfigurieren

An dieser Stelle sollten noch das Passwort für den Root User geändert und die SSH-Konfiguration angepasst werden, damit auch mit root per SSH zugegriffen werden kann.

sudo passwd

Anschließend noch folgende Änderung in der /etc/ssh/sshd_config durchführen

sudo nano /etc/ssh/sshd_config

PermitRootLogin yes

und den Dienst neu starten

sudo systemctl restart ssh

Sie sollten jetzt in der Lage sein, sich per SSH sowohl mit dem User pi als auch mit dem User root anmelden zu können.

Externe Festplatte konfigurieren

Die Festplatte wird mit NTFS formatiert, um größtmögliche Kompatibilität zwischen verschiedenen Betriebssystemen (Windows, Mac OS, Linux) zu gewährleisten. Dafür wird der benötigte Treiber nachinstalliert:

sudo apt install ntfs-3g

Da der Remote Pi möglichst stromsparend arbeiten soll, wird die Festplatte auch schlafen gelegt, wenn diese nicht benötigt wird. Dazu verwenden wir autofs.

sudo apt install autofs

Dann wird ein Mountpoint eingerichtet, unter dem die USB-Festplatte eingehängt wird. Der Mountpoint kann frei gewählt werden, wir verwenden /srv/backuphdd.

mkdir /srv/backuphdd

Damit die USB-Festplatte automatisch beim Start gemounted und nach einer Minute Inaktivität wieder unmounted wird (um Strom zu sparen), wird die Datei /etc/auto.master ergänzt.

nano /etc/auto.master

fügen Sie am Ende der Datei folgende Zeile hinzu

/srv /etc/auto.usb-hdd --timeout=60 --ghost

Da die USB-Festplatte anhand der UUID identifiziert werden muss, lassen wir uns über blkid diese ausgeben

root@remotebackuppi:/# blkid
/dev/mmcblk0p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="5DE4-665C" TYPE="vfat" PARTUUID="4e36d88d-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="7295bbc3-bbc2-4267-9fa0-099e10ef5bf0" TYPE="ext4" PARTUUID="4e36d88d-02"
/dev/mmcblk0: PTUUID="4e36d88d" PTTYPE="dos"
/dev/sda1: LABEL="Daten" UUID="44848E91848E84E0" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="0d6bd992-4ecc-43e1-a6bb-d219799caf4d"

Legen Sie eine neue Datei /etc/auto.usb-hdd an

nano /etc/auto.usb-hdd

und fügen dieser folgenden Eintrag hinzu (wobei die UUID entsprechend der Ausgabe oben ersetzt werden muss)

backuphdd -fstype=ntfs-3g :/dev/disk/by-uuid/44848E91848E84E0

Starten Sie anschließend den Dienst neu

systemctl restart autofs

Die Festplatte wird jetzt bei Bedarf gemounted und nach einer Minuten Inaktivität wieder unmounted.

rsync konfigurieren

Wir nutzen in diesem Artikel rsync für ein Remote Backup mit Raspberry Pi. Rsync ist standardmäßig im Pi OS enthalten. Wir müssen es nur noch aktivieren und für unsere Zwecke konfigurieren. Dazu wird die Datei /etc/default/rsync editiert und folgende Werte gesetzt:

RSYNC_ENABLE=true
RSYNC_NICE='10'

Für rsync existiert eine Beispielkonfiguration, die wir kopieren und anschließend bearbeiten:

cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/

Anschließend wird die Datei /etc/rsyncd.conf um folgende Einträge erweitert:

[Backup]

        comment = Synology Remote Backup
        path = /srv/backuphdd
        lock file = /var/lock/rsyncd
        read only = no
        list = yes
        uid = root
        gid = root
        strict modes = yes
        hosts allow = 192.168.178.145 (Synology NAS IP)
        ignore errors = no
        ignore nonreadable = yes
        transfer logging = no
        timeout = 600
        refuse options = checksum dry-run
        dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

Anschließend muss der Dienst neu gestartet werden:

systemctl restart rsync

Wireguard Client einrichten

In der aktuellen Version des Raspberry Pi OS ist das Wireguard-Paket bereits enthalten und kann einfach nachinstalliert werden:

apt install wireguard

Auf dem Wireguard Server ist eine Konfiguration für den Raspberry Pi zu erstellen. Der Inhalt (Beispiel)

[Interface]
Address = 10.7.0.6/24, fddd:2c4:2c4:2c4::6/64
DNS = 8.8.8.8, 8.8.4.4
PrivateKey = xxxxxxxxxx

[Peer]
PublicKey = xxxxxxxxxx
PresharedKey = xxxxxxxxxx
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = IP DES WIREGUARD-SERVERS bzw. URL DES DYNDNS-DIENSTS:51820
PersistentKeepalive = 25

wird dann per

nano /etc/wireguard/wg0.conf

in die Wireguard Verbindungskonfiguration auf dem Raspberry Pi kopiert.

Ob sich vom Raspberry Pi aus eine Verbindung zum Wireguard-Server herstellen lässt, kann mit folgenden Kommandos geprüft werden.

Verbindung herstellen:

wg-quick up wg0

Verbindung beenden:

wg-quick down wg0

Wenn die Verbindung manuell erfolgreich hergestellt werden konnte, richten wir diese anschließend so ein, dass diese automatisch beim Starten des Raspberry PI hergestellt wird:

systemctl enable wg-quick@wg0

Der Raspberry Pi kann sich jetzt per Wireguard zu unserem Heimnetz verbinden – allerdings können wir aus dem Heimnetz noch nicht auf den Remote Pi zugreifen. Dazu muss im Heimnetz eine statische Route eingerichtet werden.


Verwendung von DynDNS und Zwangstrennung beim Provider

Wenn Sie eine feste IP-Adresse für das Heimnetzwerk und keine Zwangstrennung bei Ihrem Provider haben, dann können Sie diesen Abschnitt überspringen und beim Abschnitt „Statische Route einrichten“ weitermachen.

DynDNS zum Zugriff auf das Heimnetz einrichten

Es existieren verschiedene DynDNS-Anbieter und je nach Router im Heimnetzwerk unterscheidet sich die Einrichtung, weshalb wir an dieser Stelle auf die grundsätzliche Einrichtung des DynDNS-Services nicht eingehen.

Stellen Sie aber sicher, dass Sie eine Portfreigabe im Router auf den Wireguardserver mit dem Port 51820 einrichten.

DynDns Portweiterleitung Wireguard

Zwangstrennung beim Provider berücksichtigen

In diesem Szenario baut der Raspberry Pi eine permanente Wireguard VPN Verbindung zum Heimnetzwerk auf. Wenn Sie bei Ihrem Provider einer Zwangstrennung unterliegen, dann ist bei Wireguard folgendes zu berücksichtigen:

Nachdem Wireguard sich einmal die Zieladresse per DNS aufgelöst hat, wird diese nie wieder geprüft. Das, und die Verwendung von UDP, führt dazu, dass Wireguard bei einer Zwangstrennung (und damit einer neuen IP) im Heimnetzwerk munter weiter an die einmalig aufgelöste IP Adresse sendet. Durch die Verwendung von UDP wird in diesem Fall auch kein Fehler ausgelöst. Aus dem Heinnetzwerk kann der Pi hingegen nicht mehr erreicht werden, da der VPN-Tunnel nicht mehr gültig ist. Um dieses Problem zu lösen existieren zwei Möglichkeiten:

  1. Ein Skript von Wireguard aus den wireguard-tools
  2. Die Nutzung eines Cron-Jobs

Die Lösung aus 1. konnten wir umsetzen, sie ist mit den einzurichtenden Services auch sauber installierbar gewesen – allerdings hat diese im Endeffekt nicht das gewünscht Ergebnis gelierfert, es gab immer noch ein Problem mit der DNS-Auflösung.

Wir haben daher die Umsetzung der Variante 2. gewählt, da diese kinderleicht umzusetzen ist und sauber funktioniert.

Führen Sie als root auf dem Raspberry pi folgenden Befehl aus, um einen Cron-Job zu hinterlegen

crontab -e

Fügen Sie dort folgende Zeile ein

0 * * * * systemctl restart wg-quick@wg0 >/dev/null 2>&1

Damit wird zu jeder vollen Stunde die Wireguard VPN Verbindung vom Client aus neu aufgebaut und damit auch die aktuelle DynDNS-Adresse korrekt aufgelöst.

Hinweis: Ggf. müssen Sie mit der Ausführungszeit etwas experimentieren. In Ihrem Router können Sie das Ereignis der Zwangstrennung sehen, normalerweise findet diese immer im selben Zeitraum statt. Legen Sie die Zeit im Cron-Job so fest, dass sich diese ca. 15 Minuten nach der üblichen Zwangstrennung befindet und richten Sie die Zeit Ihres Backup-Jobs im Synology NAS ebenfalls entsprechend danach ein.

Beispiel: Zwangstrennung erfolgt nachts um xx:45, Cron-Job dann auf xx:00 und Backup-Job im NAS auf xx:15 setzen.


Statische Route einrichten

Da sich der Raspberry Pi durch die Wireguard VPN Verbindung in einem anderen Subnetz befindet als das Heimnetz, müssen wir die beiden Netze verbinden. Um die Kommunikation zwischen den Netzen zu ermöglichen, muss eine statische Route im Router bzw. der Firewall im Heimnetzwerk eingerichtet werden.

Bei einer Fritz!Box werden statische Routen über

Heimnetz > Netzwerk > Netzwerkeinstellungen > Statische Routingtabelle

eingerichtet.

Das Wireguard VPN befindet sich im Netz 10.7.0.0, als Gateway wird der Wireguard-Server im Heimnetz eingetragen.

Statische Route in einer Fritz!Box einrichten

Nach Einrichtung der statischen Route sollte ein Ping aus dem Heimnetzwerk 192.168.178.x auf den per Wireguard angebunden Raspberry Pi, zum Beispiel 10.7.0.6, möglich sein.

PS C:\Users\kaymo> ping 10.7.0.6

Ping wird ausgeführt für 10.7.0.6 mit 32 Bytes Daten:
Antwort von 10.7.0.6: Bytes=32 Zeit=1ms TTL=64
Antwort von 10.7.0.6: Bytes=32 Zeit=1ms TTL=64
Antwort von 10.7.0.6: Bytes=32 Zeit=1ms TTL=64
Antwort von 10.7.0.6: Bytes=32 Zeit=1ms TTL=64

Ping-Statistik für 10.7.0.6:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
    (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 1ms, Maximum = 1ms, Mittelwert = 1ms
PS C:\Users\kaymo>

Einrichtung von Synology Hyper Backup

Wir verwenden ein Synology NAS (DSM), von der wir ein Remote Backup mit dem Raspberry Pi durchführen. Das passende Backuptool Hyper Backup wird von Synology gleich mitgeliefert. Im Vergleich zu den bisherigen Konfigurationen ist die Einrichtung von Hyper Backup auf dem Synology NAS aber kinderleicht.

Starten Sie Hyper Backup und erstellen Sie über das „+“ Zeichen eine neue Datensicherungsaufgabe.

Synology Backup - Einstellungen Datensicherungsziel

Wählen Sie „rsync“ und klicken Sie auf Weiter.

Synology Hyper Backup - Sicherungsaufgabe erstellen

Bei der IP-Adresse tragen Sie die IP-Adresse des Raspberry Pi aus dem Wireguard VPN Netz ein. Hier kommt ein Vorteil von Wireguard zum Tragen, dass nämlich jeder Client seine eigene, feste IP-Adresse im Netz bekommt. Der Benutzername und das Passwort sind die Zugangsdaten des root Nutzers auf dem Raspberry Pi.

Klicken Sie auf Weiter und wählen Sie die zu sichernden Verzeichnisse auf dem Synology NAS aus.

Zu sichernde Daten auswählen

Klicken Sie auf Weiter und wählen Sie aus, ob Sie zusätzlich Anwendungseinstellungen des NAS sichern möchten.

Sicherung von Anwendungen

Klicken Sie auf Weiter und legen Sie die Sicherungseinstellungen entsprechend Ihren Erfordernissen fest.

Hyper Backup - Festlegen der Sicherungseinstellungen

Klicken Sie auf Weiter, um die Sicherungsrotation zu aktivieren. Wir empfehlen einen Rotationszyklus von 30 Tagen, damit fangen Sie alle Änderungen der letzten 30 Tage ab und können diese bei Bedarf Wiederherstellen.

Sicherungsrotation aktivieren

Klicken Sie auf Fertig, um die Einstellungen zur Datensicherungsaufgabe abzuschließen.


Hardware-Empfehlungen

Raspberry Pi 4 Modell B; 4 GB, ARM-Cortex-A72 4 x, 1,50 GHz, 4 GB RAM, WLAN-ac, Bluetooth 5, LAN, 4 x USB, 2 x Micro-HDMI
Raspberry Pi Ersatzteil Pi 4 Model B 8GB Single-Board Computer, W125768684 (Single-Board Computer), 102110421
Raspberry Pi 4B 4GB/magnetisches Gehäuse/Netzteil/32GB SD Card/HDMI Kabel
Raspberry Pi 4 Modell B; 4 GB, ARM-Cortex-A72 4 x, 1,50 GHz, 4 GB RAM, WLAN-ac, Bluetooth 5, LAN, 4 x USB, 2 x Micro-HDMI
Raspberry Pi Ersatzteil Pi 4 Model B 8GB Single-Board Computer, W125768684 (Single-Board Computer), 102110421
Raspberry Pi 4B 4GB/magnetisches Gehäuse/Netzteil/32GB SD Card/HDMI Kabel
144,99 EUR
158,79 EUR
164,88 EUR
Raspberry Pi 4 Modell B; 4 GB, ARM-Cortex-A72 4 x, 1,50 GHz, 4 GB RAM, WLAN-ac, Bluetooth 5, LAN, 4 x USB, 2 x Micro-HDMI
Raspberry Pi 4 Modell B; 4 GB, ARM-Cortex-A72 4 x, 1,50 GHz, 4 GB RAM, WLAN-ac, Bluetooth 5, LAN, 4 x USB, 2 x Micro-HDMI
144,99 EUR
Raspberry Pi Ersatzteil Pi 4 Model B 8GB Single-Board Computer, W125768684 (Single-Board Computer), 102110421
Raspberry Pi Ersatzteil Pi 4 Model B 8GB Single-Board Computer, W125768684 (Single-Board Computer), 102110421
158,79 EUR
Raspberry Pi 4B 4GB/magnetisches Gehäuse/Netzteil/32GB SD Card/HDMI Kabel
Raspberry Pi 4B 4GB/magnetisches Gehäuse/Netzteil/32GB SD Card/HDMI Kabel
164,88 EUR

Fazit

Der hier gezeigte Synology Remote Backup Raspberry Pi Ansatz für eine Synology NAS funktioniert stabil und ist preiswert umzusetzen. Neben den im Artikel behandelten Fallstricken ist die ganze Lösung vom blanken Raspberry Pi bis hin zum laufenden System gut in 20 Minuten umzusetzen. Diese Zeit sollten Ihnen Ihre Daten wert sein.

Feedback, Anregungen und Verbesserungen sind immer gerne gesehen, also nicht zögern, einfach in die Kommentare schreiben oder über das Kontaktformular in Kontakt treten.


Update 30.11.2021: SSH Freeze

Die hier vorgestellte Remote-Backup Lösung funktioniert seit Wochen problemlos, die Backups werden zuverlässig erstellt.

Allerdings habe ich ein Problem mit SSH-Verbindungen über die VPN Verbindung zum Remote-Backup Server bemerkt (zum Beispiel für remote Updates). Man kann sich ganz normal per SSH verbinden und landet im Terminal. Ein ls -la zum Beispiel ist meist noch problemlos möglich, weitere Befehle hängen dann aber, die SSH-Verbindung scheint eingefroren und lässt sich auch nicht abbrechen.

Das Problem ist behoben, Ursache war eine fehlerhafte Wireguard-Konfiguration.

Die Installation von Wireguard wird in einem separaten Artikel gezeigt.

Letzte Aktualisierung am 29.06.2022 / Affiliate Links / Bilder von der Amazon Product Advertising API

3 Gedanken zu „Synology Remote Backup mit Raspberry Pi und Wireguard

  • Pingback: Wireguard unter Proxmox installieren - kayomo GmbH

  • 15. Dezember 2021 um 17:42
    Permalink

    Die dargstellte Lösung könnte mein Remote Syno-NAS ersetzen.
    Jedoch wünsche ich mir in Zeiten von Ransomware, das das Ziel-NAS (Raspi) selbständig und nur lesend auf mein Haupt-NAS zugreifen kann, damit falls das Haupt-NAS kompromitiert wurde, ein Virus die Backups auf dem Ziel-NAS (Raspi) löschen kann.
    Gibt es dafür eine Lösung?
    Dann würde ich mir die Mühe machen und alles umbauen.

    Vielen Dank für Ihren Input und die hier dargestellte Lösung

    Antwort
  • 15. Dezember 2021 um 18:08
    Permalink

    Hallo Ralph,

    vielen Dank für Ihre Antwort!

    Das von Ihnen aufgezeigte Szenario kann bei der vorgestellten Konfiguration nur unter der Voraussetzung auftreten, dass der Angreifer die SSH-Zugangsdaten zum Remote-Pi kennt – dann hätten Sie aber ein ganz anderes Problem 😉

    Es besteht zwar eine permanente Wireguard-Verbindung zwischen den beiden Geräten (bzw. in Ihrem Wireguard-Netzwerk), Ihre lokalen Geräte haben aber keinen pauschalen Zugriff auf den Remote-Pi. In dem Moment, wo Ihr Haupt-NAS ein Backup wegsichern will (push), loggt sich Ihr Haupt-NAS per rsync und SSH auf dem Remote-Pi ein, übermittelt die Daten und loggt sich anschließend wieder aus.

    Viele Grüße
    Kay Molkenthin

    Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.