Synology: TUN-Modul automatisch laden
Auf manchen Synology-Modellen wird das Kernelmodul tun beim Booten nicht
automatisch geladen, sodass /dev/net/tun fehlt und der GateControl-Gateway-
Container (oder ein anderer TUN-/VPN-Container) nach einem Neustart nicht mehr
startet. Dieses Skript lädt das Modul bei jedem Systemstart über den
DSM-Aufgabenplaner.
Den Hintergrund und die vollständige Diagnose finden Sie im Knowledge-Base-Artikel
„GateControl Gateway startet nicht mehr (/dev/net/tun fehlt)".
Kurze Antworten auf typische Fragen liefert die
FAQ zur /dev/net/tun-Problematik.
Einrichtung (einmalig)
- Systemsteuerung → Aufgabenplaner öffnen.
- Erstellen → Ausgelöste Aufgabe → Benutzerdefiniertes Skript.
- Reiter Allgemein:
- Aufgabe:
TUN beim Boot laden - Benutzer:
root - Ereignis:
Hochfahren
- Aufgabe:
- Reiter Aufgabeneinstellungen → Feld Benutzerdefiniertes Skript: den kompletten Inhalt des Skripts unten einfügen.
- Mit OK speichern (DSM fragt ggf. zur Bestätigung nach Ihrem Passwort — normal für root-Aufgaben).
- Aufgabe markieren und auf Ausführen klicken, um das Modul sofort ohne Neustart zu laden.
Warum kein Paket? DSM 7 lässt unsignierte Pakete nicht als root laufen. Der Aufgabenplaner ist der einzige von Synology vorgesehene Weg, beim Boot einen root-Befehl auszuführen.
Das Skript
#!/bin/sh
# ---------------------------------------------------------------------------
# load-tun.sh
#
# Stellt /dev/net/tun auf Synology DSM 7 bereit, indem das TUN/TAP-Kernel-
# modul beim Systemstart geladen wird. Benötigt für TUN-basierte Docker-
# Container wie den GateControl Gateway, WireGuard oder OpenVPN.
#
# EINRICHTUNG (einmalig):
# Systemsteuerung -> Aufgabenplaner -> Erstellen -> Ausgelöste Aufgabe
# -> Benutzerdefiniertes Skript
# - Ereignis : Hochfahren
# - Benutzer : root
# - Skript : Inhalt dieser Datei einfügen
# Danach die Aufgabe markieren und einmal "Ausführen", um sie sofort
# ohne Neustart zu aktivieren.
#
# Warum kein Paket? DSM 7 lässt unsignierte Pakete nicht als root laufen.
# Der Aufgabenplaner ist der einzige von Synology vorgesehene Weg, beim
# Boot einen root-Befehl auszuführen.
# ---------------------------------------------------------------------------
# 1. TUN-Modul laden. 'modprobe' zuerst (ermittelt den korrekten Modulpfad
# selbst); falls das fehlschlägt, das Modul direkt suchen und laden.
modprobe tun 2>/dev/null \
|| insmod "$(find /lib/modules -name 'tun.ko*' 2>/dev/null | head -1)" 2>/dev/null
# 2. Abbrechen, falls das Modul nicht geladen werden konnte (kein toter
# Geräteknoten, klare Fehlermeldung im Systemprotokoll).
if ! grep -q '^tun ' /proc/modules; then
logger -t load-tun "FEHLER: TUN-Modul konnte nicht geladen werden"
exit 1
fi
# 3. Geräteknoten /dev/net/tun sicherstellen (wird beim Modul-Laden
# normalerweise automatisch angelegt; hier zur Sicherheit erzwungen).
[ -d /dev/net ] || mkdir -p /dev/net
[ -c /dev/net/tun ] || mknod /dev/net/tun c 10 200
chmod 0666 /dev/net/tun
logger -t load-tun "/dev/net/tun ist bereit"
# 4. (OPTIONAL – nur GateControl Gateway) Den Gateway-Container nach dem
# Laden starten. Entfernen Sie das führende '#', wenn diese Aufgabe auch
# den Container starten soll. Containername ggf. anpassen.
# /usr/local/bin/docker start gatecontrol-gateway-gateway-1
exit 0
Ergebnis prüfen
Nach Ausführen der Aufgabe (oder nach dem nächsten Neustart):
ls -l /dev/net/tun
# erwartet: crw-rw-rw- 1 root root 10, 200 ... /dev/net/tun
lsmod | grep -iw tun
# erwartet: eine Zeile, die mit "tun" beginnt
Anschließend den GateControl-Gateway-Container starten — er sollte wieder als „Up / healthy" laufen.
⚠️ Wichtig: Die Aufgabe nicht deaktivieren oder löschen. Sonst fehlt
/dev/net/tunnach dem nächsten Neustart wieder.