FTP-Passiv-Modus auf QNAP NAS mit dynamischer IP korrigieren

Wenn Ihre QNAP-NAS hinter einem Internet-Anschluss mit wechselnder IP-Adresse (dynamische IP) steht, kennen Sie das Problem: Der FTP-Passiv-Modus funktioniert von extern nicht, weil die NAS im passiven Modus ihre interne IP-Adresse (z. B. 192.168.0.16) an den Client sendet.

Die QNAP-Weboberfläche erlaubt leider nur die Eingabe einer statischen IPv4-Adresse für diesen Fall. Mit dieser Anleitung lösen wir das Problem, indem wir ein kleines Skript erstellen, das die aktuelle öffentliche IP-Adresse automatisch in der Konfigurationsdatei der NAS aktualisiert.

Schritt 1: SSH-Zugriff auf die QNAP NAS aktivieren und herstellen

Zuerst benötigen wir Zugriff auf die Konsole der NAS.

  1. Aktivieren Sie SSH: Melden Sie sich in der QNAP-Weboberfläche an und navigieren Sie zu Systemsteuerung > Netzwerk und Dateidienste > Telnet/SSH. Aktivieren Sie hier den SSH-Dienst.
  2. Verbinden Sie sich mit der NAS: Verwenden Sie ein SSH-Tool (wie PuTTY unter Windows oder das Terminal unter macOS/Linux), um eine Verbindung herzustellen. Ersetzen Sie Ihre_NAS_IP durch die lokale IP-Adresse Ihrer NAS.
ssh admin@Ihre_NAS_IP

Schritt 2: Das Skript erstellen

Dieses Skript erledigt die Hauptarbeit: Es holt sich die aktuelle öffentliche IP-Adresse und schreibt sie in die Konfigurationsdatei. Auf der QNAP NAS steht der Editor vi zur Verfügung.

Öffnen Sie den vi-Editor: Geben Sie den folgenden Befehl ein, um eine neue Skript-Datei namens update_ftp.sh zu erstellen.

vi /root/update_ftp.sh

Fügen Sie den Skript-Code ein: Drücken Sie die Taste i, um in den Einfügemodus zu wechseln, und kopieren Sie den folgenden Code in das Terminalfenster.

# Ruft die öffentliche IP-Adresse über einen externen Dienst ab
PUBLIC_IP=$(wget -qO- http://ipv4.icanhazip.com)

# überprüft, ob die IP erfolgreich abgerufen wurde
if [ -z "$PUBLIC_IP" ]; then
    echo "Konnte öffentliche IP nicht abrufen. Beende das Skript."
    exit 1
fi

# Ersetzt die alte IP im Feld WanIp
sed -i "s/WanIp = .*/WanIp = $PUBLIC_IP/" /etc/config/uLinux.conf

# Setzt das Feld EnableUserWanIp auf TRUE
sed -i '/EnableUserWanIp =/s/= .*/= TRUE/' /etc/config/uLinux.conf

# Startet den FTP-Dienst neu, um die änderungen zu übernehmen
/etc/init.d/ftp.sh restart

Speichern und schließen: Drücken Sie Esc, um den Einfügemodus zu verlassen, und geben Sie dann :wq ein, gefolgt von Enter.

Schritt 3: Skript ausführbar machen

Damit die NAS das Skript ausführen kann, müssen Sie es als ausführbar markieren.

chmod +x /root/update_ftp.sh

Schritt 4: Den Cron-Job einrichten

Ein Cron-Job sorgt dafür, dass das Skript regelmäßig automatisch ausgeführt wird (z. B. alle 30 Minuten), um sicherzustellen, dass die IP-Adresse immer aktuell ist.

Öffnen Sie die Cron-Tabelle:

crontab -e

Fügen Sie den Cron-Job hinzu: Drücken Sie i und fügen Sie die folgende Zeile am Ende der Datei ein:

*/30 * * * * /root/update_ftp.sh > /dev/null 2>&1

Speichern und schließen: Drücken Sie Esc, geben Sie :wq ein und drücken Sie Enter.

Wichtiger Hinweis: Port-Weiterleitung im Router

Damit der FTP-Zugriff von extern funktioniert, müssen Sie in Ihrem Router die folgenden Ports an die interne IP-Adresse Ihrer NAS (z. B. 192.168.0.16) weiterleiten:

  • Port 21 (TCP): Dies ist der Steuerkanal für FTP.
  • Portbereich (TCP): Sie benötigen einen Portbereich für den passiven Modus. Eine Spanne von 30 Ports ist empfehlenswert, zum Beispiel 55536-55566 (TCP).

Nach oben scrollen