VPN mit WireGuard-Protokoll auf Linux, WSL oder Synology-NAS WireGuard als Docker-Container installieren

Von Thomas Joos 3 min Lesedauer

Anbieter zum Thema

Die Einrichtung von WireGuard ist auch als Docker-Container auf einem Linux-Host, dem Windows-Subsystem für Linux (WSL) oder einem Synology-NAS-System möglich. Der Beitrag zeigt die Vorgehensweise am Beispiel des Synology-NAS.

Das leistungsfähige VPN-Protokoll WireGuard lässt sich auf Synology-NAS-Systemen, auf einem Linux-Host oder dem Windows-Subsystem für Linux (WSL) auch als Docker-Container bereitstellen.
Das leistungsfähige VPN-Protokoll WireGuard lässt sich auf Synology-NAS-Systemen, auf einem Linux-Host oder dem Windows-Subsystem für Linux (WSL) auch als Docker-Container bereitstellen.
(Bild: Joos - Synology- Jason A. Donenfeld / WireGuard)

Um ein WireGuard-VPN als Docker-Container zu betreiben, reicht ein herkömmlicher Docker-Host aus. Generell kann es sich dabei um einen Linux-Computer handeln, ein Windows-Server mit aktiviertem Windows-Subsystem für Linux (WSL) oder ein Synology-NAS mit installiertem Synology Container Manager. Wir zeigen in diesem Beitrag die Einbindung auf einem Synology-NAS – die Vorgehensweise für Linux-Server oder auf dem WSL ist jedoch fast identisch. Die Einrichtung erfolgt stets mit der Open Source Software WireGuard Easy.

Vorbereitungen für den Betrieb von WireGuard-VPN als Docker-Container

Um WireGuard als Docker-Container zu nutzen, sollte darauf geachtet werden, dass die notwendigen Portfreigaben und dynamischen DNS-Einstellungen konfiguriert sind. In den Systemeinstellungen des Synology-NAS stehen dazu spezielle Einstellungen zur Verfügung. Wenn die Firewall auf dem Synology-NAS aktiv ist, müssen auch hier die Portfreigaben eingetragen sein. Das erfolgt bei Sicherheit -> Firewall. Außerdem muss in der Firewall des Unternehmens eine Weiterleitung der verwendeten WireGuard-Ports zur internen IP-Adresse des Docker-Hosts geschickt werden, in diesem Beispiel also das Synology-NAS.

Bildergalerie
Bildergalerie mit 8 Bildern

Um WireGuard als Docker-Container auf einem Synology-NAS zu betreiben, ist eine Besonderheit notwendig, die bei Linux oder WSL nicht benötigt wird. Hier muss zuvor eine Erweiterung des NAS erfolgen. Dazu ist der Zugriff per SSH auf das NAS notwendig. Dieser wird in der Systemsteuerung über "Terminal & SNMP" über die Option "SSH-Dienst aktivieren" eingeschaltet. Danach kann der Zugriff auf das NAS per SSH erfolgen, zum Beispiel mit dem kostenlosen Tool Putty https://www.putty.org. Die Anmeldung erfolgt mit dem gleichen Admin-Benutzer, wie bei der Anmeldung am Webinterface.

Über sudo -i und der erneuten Eingabe des Kennwortes des Admin-Benutzers öffnet sich eine Root-Shell. In dieser wird ein SPK-File erstellt, das später für WireGuard notwendig ist. Der Befehl dazu sieht folgendermaßen aus, wenn DSM 7.2 im Einsatz ist:

sudo docker run --rm --privileged --env PACKAGE_ARCH=<NAS-Architektur> --env DSM_VER=7.2 -v /volume1/docker/synowirespk72:/result_spk naswireguard/synobuild72

Die NAS-Architektur für das eigene NAS lässt sich auf der Synology-Webseite herausfinden, im Info-Center auf dem NAS zeigt die Weboberfläche die verbaute CPU an.

Die erstellte SPK-Datei lässt sich danach in der Weboberfläche im Paketzentrum über "Manuelle Installation" auswählen und installieren.

Das Paket muss gestartet werden, damit sich WireGuard auf einem Synology-NAS bereitstellen lässt. Der Start sollte aber nicht in der Weboberfläche erfolgen, sondern über den Befehl "sudo /var/packages/WireGuard/scripts/start" per SSH. Entsprechende, fertige Pakete finden sich auch über den YouTube-Channel Digital Aloha. Idealerweise ist es aber immer besser, selbst solche Pakete zu erstellen.

Docker-Container für WireGuard-VPN bereitstellen

Auf herkömmlichen Docker-Hosts sind die vorgenannten, speziellen Synology-NAS-Maßnahmen nicht notwendig. Um WireGuard auf einem Synology-NAS oder auch auf einem anderen Docker-Host bereitzustellen, wird als nächstes unterhalb des Ordners "Docker" (bei Synology) oder in einem anderen Verzeichnis ein Ordner mit der Bezeichnung "wg-easy" erstellt. Über einen einfachen Befehl wird danach im Terminal (auch auf dem Synology-NAS) der entsprechende WireGuard-Container heruntergeladen:

sudo docker run -d \ --name=wg-easy \ -e WG_HOST=YOUR_SERVER_IP \ -e PASSWORD=YOUR_ADMIN_PASSWORD \ -v ~/.wg-easy:/etc/wireguard \ -p 51820:51820/udp \ -p 51821:51821/tcp \ --cap-add=NET_ADMIN \ --cap-add=SYS_MODULE \ --sysctl="net.ipv4.conf.all.src_valid_mark=1" \ --sysctl="net.ipv4.ip_forward=1" \ --restart unless-stopped \ weejewel/wg-easy

Der Befehl ist auf der GitHub-Seite des oben bereits genannten WireGuard Easy-Projektes zu finden Wichtig ist die externe sudo IP-Adresse des Hosts, das Kennwort für den Zugriff und der Pfad zum Container-Verzeichnis, zum Beispiel:

sudo docker run -d \ --name=wg-easy \ -e WG_HOST=10.0.5.77\ -e PASSWORD=mysafepassword \ -v /volume1/docker/wg-easy:/etc/wireguard \ -p 51820:51820/udp \ -p 51821:51821/tcp \ --cap-add=NET_ADMIN \ --cap-add=SYS_MODULE \ --sysctl="net.ipv4.conf.all.src_valid_mark=1" \ --sysctl="net.ipv4.ip_forward=1" \ --restart unless-stopped \ weejewel/wg-easy

WireGuard-Container konfigurieren

Wenn der Container erstellt ist, lässt er sich in der Verwaltung der Docker-Container anzeigen (docker ps), am Beispiel von Synology-NAS im Container-Manager. Sobald der Container gestartet ist, lässt er sich mit einem Webbrowser verwalten. Der Zugriff erfolgt mit: "https://<IP des Docker-Hosts:51821". Danach lassen sich in der Weboberfläche neue Clients für WireGuard über "New Client" einrichten.

Der Zugriff per WireGuard funktioniert aber nur, wenn in der externen Firewall der WireGuard-Port zum Docker-Host weitergeleitet wird, und der WireGuard-Docker-Container auf Anfragen wartet. Die beteiligten Firewalls müssen den verwendeten Port weiterleiten und freigeben, in diesem Beispiel TCP 51820.

Die Konfiguration für die Clients lässt sich dann in der Weboberfläche herunterladen und in beliebigen WireGuard-Clients importieren und nutzen.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

(ID:49773738)