Wenn man Probleme bei FTP-Verbindungen hat, kommen oft die Begriffe "aktives FTP" und "passives FTP" ins Spiel. Besonders dann, wenn die Verbindung zwar irgendwie schon klappt, aber dann einfach hängen bleibt. Was hat es damit auf sich und was muss man beachten, wenn man einen FTP-Server oder FTP-Client betreibt?

Vorweg sei gesagt, dass für das Verständnis des Artikels grundlegende Kenntnisse bezüglich TCP/IP sehr vorteilhaft sind, obwohl sich der Autor bemüht, das Problem auch allgemein verständlich zu erklären, sofern das möglich ist.

Was das FTP gelegentlich etwas aufwändig macht, ist die Tatsache, dass verschiedene TCP und UDP-Ports benötigt werden. Wer bei "FTP" direkt an "Port 21" denkt, liegt dabei gar nicht so falsch, allerdings reicht dieser allein nicht aus. Wenn also gar nichts funktioniert, obwohl der FTP-Server eigentlich läuft, sollte man hier ansetzen. Zu Problemen kann es immer dann kommen, wenn Firewalls im Spiel sind. Der Unterschied soll an zwei Beispielen gezeigt werden:

Beispiel: Aktives FTP

Der Client baut eine Verbindung zum Server auf Port 21 auf. Über diese Verbindung laufen dann die Steuerkommandos wie "welche Dateien sind auf dem Server" u.ä. Das klappt dann auch sehr gut, bis man anfangen möchte, Daten zu übertragen. Dazu teilt der Server dem Client mit "gib mir mal einen freien IP-Port und lausche darauf", um dann eine Verbindung zum Client-Rechner aufzubauen. Die dortige Firewall sieht eine eingehende Verbindung die neu aufgebaut werden soll und verwirft diese, was grundsätzlich keine schlechte Idee ist. In diesem Fall führt es aber dazu, dass die Verbindung "hängt", weil eine zwischengeschaltete Firewall die Daten verwirft.

Beispiel: Passives FTP

Um dieses Problem (Firewall auf Clientseite) zu lösen, schuf man die Form des passiven FTP, bei der der Client Kontroll- UND Datenverbindung aufbaut, so dass es keine eingehende Verbindung auf den Client mehr gibt. Dazu teilt der Server dem Client mit "ich warte jetzt auf Port xy darauf, dass du eine weitere Verbindung zu mir aufbaust". Dies klappt dann, wenn nicht wieder eine Firewall, diesmal auf Serverseite, zuschlägt, und Verbindungen zu dem Port xy verbietet.

Was bedeutet das?

  • Für den Serverbetreiber: Damit möglichst viele User den Server erreichen können, sollte man grundsätzlich beide Verfahren anbieten. Wenn man also eine serverseitige Firewall hat, achte man darauf, dass Port 21 (Standard für FTP-Daten) und 20 für aktives FTP frei sind. Für passives FTP kann man den Bereich der Ports, die der Server anbietet ("xy") in der Konfiguration des FTP-Servers einschränken, so dass man nur eine bestimmte Menge von Ports (aus Sicherheitsgründen) frei schalten muss. Diese Freischaltung kann manuell oder über entsprechende Firewallmodule (z.B. ip_conntrack_ftp unter iptables) erfolgen.
  • Für den FTP-User: Wenn deine Firewall keine eingehenden Verbindungen zuläßt (z.B. wenn ein NAT/IP-Masquerading genutzt wird), verwende die Einstellung "passives FTP" in deinem FTP-Client.
Hjalp dette svar dig? 54 Kunder som kunne bruge dette svar (249 Stem)