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.
- 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.
- 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.
#!/bin/sh
# 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).