CallMeTechie
EN Anmelden
Home Produkte Blog Über mich Kontakt

Synology: TUN-Modul automatisch laden

v1.0 · Updated vor 1 Monat

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)

  1. Systemsteuerung → Aufgabenplaner öffnen.
  2. Erstellen → Ausgelöste Aufgabe → Benutzerdefiniertes Skript.
  3. Reiter Allgemein:
    • Aufgabe: TUN beim Boot laden
    • Benutzer: root
    • Ereignis: Hochfahren
  4. Reiter Aufgabeneinstellungen → Feld Benutzerdefiniertes Skript: den kompletten Inhalt des Skripts unten einfügen.
  5. Mit OK speichern (DSM fragt ggf. zur Bestätigung nach Ihrem Passwort — normal für root-Aufgaben).
  6. 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/tun nach dem nächsten Neustart wieder.

Cookie Settings

Wir verwenden Cookies, um Ihre Erfahrung zu verbessern. Essentielle Cookies sind immer aktiv.

Datenschutzerklärung
ESC
↑↓ navigate open esc close