Backup per VPN: Zugriff über WireGuard
Was ist WireGuard?
WireGuard ist eine Applikation, die ein VPN zwischen Geräten wie Clients oder Firewalls aufbaut. Im Gegensatz zu anderen Protokollen wir IPSec verwendet WireGuard aktuellere kryptografische Verfahren und beschleunigt den Auf- und Abbau einer Verbindung sowie den Netzwerkverkehr zwischen den beiden Peers. Zusätzlich ist das Protokoll nicht proprietär und bereits in vielen Linux-Distributionen integriert.
Seit der Version 7.39
von FritzOS unterstützen gängige FRITZ!Boxen nun auch WireGuard, welches als Alternative zu dem bisherigen IPSec-Tunnel verwendet werden kann.
Somit kann nun eine Verbindung zwischen dem zu sichernden System und der FRITZ!Box mittels WireGuard eingerichtet werden.
Installation und Konfiguration von WireGuard
Um eine Verbindung von dem zu sichernden System zur FRITZ!Box aufzubauen, ist unter Ubuntu
lediglich ein Paket notwendig:
sudo apt install -y wireguard-tools
Mit diesem Paket werden der Client wg
und weitere Hilfsskripte wie wg-quick
installiert, die später zum Einrichten der Verbindung verwendet werden.
Die VPN-Verbindung kann auch direkt über das Tool wg
angelegt werden. Welche Schritte hierfür nötig sind, beschreibt das Projekt in einer Schnellstartanleitung.
Erstellen der WireGuard-Konfiguration auf der FRITZ!Box
Die Konfiguration auf der FRITZ!Box beschränkt sich auf das Erstellen einer Konfiguration bestehend aus Schlüsselpaaren und einer Konfigurationsdatei. Diese kann im Bereich Internet -> Freigaben -> VPN (WireGuard) erstellt werden.
Über den Button Verbindung hinzufügen kann der Dialog zur Einrichtung gestartet werden. Für unseren Anwendungsfall verwenden wir die Option Einzelgerät verbinden, da wir lediglich das zu sichernde System mit dem Heimnetzwerk verbinden wollen. Nach der Eingabe eines Verbindungsnamens kann die Konfigurationsdatei einmalig heruntergeladen werden.
Jede Konfiguration enthält die für die Verschlüsselung notwendigen Schlüssel und die Netzwerkkonfiguration.
Beispiel:
[Interface]
PrivateKey = xxxx
Address = 192.168.178.100/24
DNS = 192.168.178.1
DNS = fritz.box
[Peer]
PublicKey = xxxx
PresharedKey = xxxx
AllowedIPs = 192.168.178.0/24,0.0.0.0/0
Endpoint = <Öffentlicher Hostname der FRITZ!Box>
PersistentKeepalive = 25
Die Konfigurationsdatei kann anschließend auf den Server in den Ordner /etc/wireguard
kopiert werden. Sofern die Erstellung der Datei nicht im Root-Kontext erfolgt ist, sollte die Datei dem Root-User zugewiesen werden
sudo chown root:root /etc/wireguard/wg_config.conf
Da wir lediglich den Netzwerkverkehr in unser Heimnetzwwerk über den VPN-Tunnel routen möchten, muss die Konfigurationdatei noch angepasst werden. Hierzu sollte in der Zeile AllowedIPs das Subnetz 0.0.0.0/0
entfernt werden, da sonst der gesamte Netzwerkverkehr über die FRITZ!Box geroutet wird.
Vorher:
[Peer]
...
AllowedIPs = 192.168.178.0/24,0.0.0.0/0
...
Nachher:
[Peer]
...
AllowedIPs = 192.168.178.0/24
...
Aufbau der Verbindung
Nun kann die Verbindung testweise mithilfe des Skripts wg-quick
aufgebaut werden:
wg-quick up wg_config
Anschließend kann der Status mit dem WireGuard-Client wg
abgerufen werden:
wg
interface: wg_config
public key: xxxx
private key: (hidden)
listening port: 55678
peer: xxxx
preshared key: (hidden)
endpoint: <Öffentliche Adresse der FRITZ!Box>
allowed ips: 192.168.178.0/24
latest handshake: 1 second ago
transfer: 252 B received, 308 B sent
persistent keepalive: every 25 seconds
Sollte es beim Aufbau der Verbindung zur Fehlermeldung
/usr/bin/wg-quick: line 31: resolvconf: command not found
kommen, muss ein symbolischer Link zur resolveconf
-Implementierung von SystemD erstellt werden.
sudo ln -s /usr/bin/resolvectl /usr/local/bin/resolvconf
Spezialfall “IPv6”
WireGuard verwendet beim Verbindungsaufbau das Modul getaddrinfo
, um aus dem Hostnamen des Peers eine IP-Adresse aufzulösen. Sollte es wie bei mir zu Problemen bei der Netzwerkerreichbarkeit per IPv6 kommen, kann das Modul über eine Konfigurationsdatei gezwungen werden, priorisiert IPv4-Adressen aufzulösen.
Hierfür muss in der Datei /etc/gai.conf
folgende Zeichenkette ergänzt werden:
precedence ::ffff:0:0/96 100
Zu beachten ist, dass diese Einstellung das gesamte System betrifft. Es sollte also vorher geprüft werden, ob es bei Applikationen zu Problemen kommt, die gezwungenermaßen eine IPv6-Adresse verwenden und für den Netzwerkverkehr mit einem Partner erwarten.
Anpassen des Backup-Jobs
Der Backup-Job verwendet zwei Skripte zum Aufbauen und Trennen der VPN-Verbindung. Diese müssen nun aktualisiert werden:
- start_vpn.sh
#!/bin/bash
wg-quick up wg_config
- post-job.sh
#!/bin/bash
/root/getVeeamBackupLogs.sh &
wg-quick down wg_config
Nun wird WireGuard verwendet, um ein VPN zwischen dem zu sichernden System und der FRITZ!Box aufzbauen.