FTP-Server hinter Fritzbox 7170

detg

Aktives Mitglied
Mitglied seit
18 Aug 2006
Beiträge
1,498
Punkte für Reaktionen
0
Punkte
0
Hi,

ich möchte hinter meiner Fritzbox 7170 einen FTP-Server betreiben (auf einem Rechner im Intranet), der von außen aus dem Internet erreichbar sein soll.

Da FTP neben Port 21 weitere Ports verwendet, ist mir die Einrichtung des Port-Forwarding in der Fritzbox nicht ganz klar. Andere lokale Server mit statischen Ports habe ich schon eingerichtet, also prinzipiell weiss ich wie's geht - nur eben nicht bei FTP.

Einen lokalen USB-Speicher an der Fritzbox, der über FTP ereicht werden soll, gibt es nicht.

Wer kann mir ein paar Tipps oder am besten eine funktionierende Beispielkonfiguration geben ?
 
Da ftp im Privat-Umfeld meist über passiv-ftp geregelt ist, brauchst Du nur den TCP-Port 21 zum Server weiterleiten.
Dort stellst Du im ftp-Programm (z.B. Filezilla Server) ein, welche Ports für den passiven Verbindungsaufbau genutzt werden dürfen. Als Port-Range suche Dir einen Bereich aus, der def. nicht von anderen Programmen aus Deinem Netz genutzt wird.
Der dahinter liegende Mechanismus ist relativ simpel:
Per TCP-Port 21 nimmt ein PC über das Internet mit dem FTP-Server Kontakt auf.
Dieser antwortet über einen der für passiv definierten Ports, um durch den Router durchzukommen, ohne dass dort weitere Ports freigegeben werden müssen. Der Aufbau geschieht halt von innen heraus.
Einzige Einschränkung: Der ftp-Client des anderen Users muss auch in der Lage sein, ftp-passive-mode zu ermöglichen. Das kann aber fast jeder ftp-Client.
 
Hallo Novize

Das, was Du beschreibst, ist der aktiv-Modus. Der Server wird aktiv, um die Datenverbindung aufzubauen.

Prinzipiell spricht nichts gegen aktives FTP, außer daß dann der Client nicht hinter einem NAT Router sein darf, bzw. daß dann der NAT-Router des Clients sich um die Weiterleitung der Datenverbindung kümmern muß.

Aktives FTP war früher auch der Standard, aber wegen der Probleme mit NAT-Routern wird inzwischen meistens passives FTP verwendet.

Diese Lösung ist also nur dann geeignet, wenn man eine überschaubare Anzahl von Clients hat, bei denen man die Voraussetzungen sicherstellen kann.

Ansonsten ist es mit FTP schwierig, da die Box, soweit mir bekannt, keine Unterstützung für FTP NAT hat.

Die Linux iptables haben Unterstützung für FTP, funktionieren aber angeblich nicht zuverlässig auf einer Fritz Box.
 
Das, was Du beschreibst, ist der aktiv-Modus. Der Server wird aktiv, um die Datenverbindung aufzubauen.
Hmmm, warum wird speziell dafür der Portrange für den passive-Mode angegeben?
Prinzipiell spricht nichts gegen aktives FTP, außer daß dann der Client nicht hinter einem NAT Router sein darf, bzw. daß dann der NAT-Router des Clients sich um die Weiterleitung der Datenverbindung kümmern muß.
...auch das spricht für meine Variante, denn ich komme mit allen PCs (eigentlich alle hinter einem NAT-Router) ohne Probleme auf meinen ftp-Server im passive-Mode. Laut meinen Logs ist es ja auch genau der vorgegebene Portrange, der dann anschließend für den Datentransport genutzt wird. In meiner 7170 habe ich auch nur den Port 21 an den Server weitergeleitet. Wenn es so wäre, wie Du schreibst, dann müsste ich ja den von mir festgelegten Portrange auch im Router definieren und an den Server weiterleiten. :noidea:
Wenn ich aktive-ftp betreibe muss ich imo auch den Port 20 an den Router weiterleiten, was ich aber def. nicht gemacht habe. ;)
Wikipedia schreibt hier:
Zum Senden und Empfangen von Dateien sowie zur Übertragung von Verzeichnislisten (der Standard-Port dafür ist Port 20) wird pro Vorgang jeweils eine separate TCP-Verbindung verwendet. FTP kennt für den Aufbau solcher Verbindungen zwei Modi:
  • Beim aktiven FTP (auch "Active Mode") öffnet der Client einen zufälligen Port und teilt dem Server diesen sowie die eigene IP-Adresse mittels des PORT-Kommandos mit. Dies ist typischerweise ein Port des Clients, der jenseits von 1023 liegt, kann aber auch ein anderer Server sein, der seinerseits in den Passive Mode geschaltet wurde, also auf eine Verbindung wartet (so genanntes FXP). Die Datenübertragung auf Server Seite erfolgt dabei über Port 20.
Die Kommunikation mit Befehlen erfolgt ausschließlich auf dem Control Port. Man spricht auch von der Steuerung „Out of Band“. Somit bleibt es möglich, dass während der Datenübertragung die Partner noch immer miteinander kommunizieren können.
Active Mode (Aktives FTP): Der Client sendet zunächst eine Anfrage auf Port 21, welche der Server bestätigt. Anschließend erfolgt die Datenübertragung über Port 20
  • Beim passiven FTP (auch "Passive Mode") sendet der Client ein PASV-Kommando, der Server öffnet einen Port und übermittelt diesen mitsamt IP-Adresse an den Client. Hier wird auf Client Seite ein Port jenseits 1023 verwendet und auf Server Seite der vorher an den Client übermittelte Port.
Diese Technik wird eingesetzt, wenn der Client für den Server nicht erreichbar ist. Dies ist beispielsweise der Fall, wenn der Client sich hinter einem Router befindet, der die Adresse des Clients mittels NAT umschreibt, oder wenn eine Firewall das Netzwerk des Clients vor Zugriffen von außen abschirmt.
 
Hmmm, warum wird speziell dafür der Portrange für den passive-Mode angegeben?
Vermutlich, damit dieser Bereich auf den FTP Server weitergeleitet werden kann. Anscheinend hat die Box dann doch Unterstützung für einen FTP Server hinter der Box (im passiv Modus). Ich selbst habe einen FTP Server hinter der Box noch nicht verwendet.

Wikipedia schreibt hier:
Das entspricht auch dem, was ich vorhin geschrieben habe.

Beim aktiven FTP (früher der Standard-Fall) gibt der Client seine IP/Port Nummer an und der Server wird aktiv, um die Datenverbindung zu dem vorgegebenen Port zu öffnen. Es ist dabei üblich, daß der Quell-Port des Server Port 20 ist, obwohl das eher Konvention als Notwendigkeit ist.
Einige Firewall-Admins haben eingehende Verbindungen vom Quell-Port 20 grundsätzlich erlaubt, damit FTP funktioniert. Daraufhin wurde für Angriffe gern der Quell-Port 20 verwendet, weil der so schön durch Firewalls durchkam. Ich vermute, daß das heute keiner mehr so macht.
Den Port 20 als Ziel-Port zu verwenden, ist nicht üblich, daher bringt es auch nichts, Verbindungen zu Port 20 weiterzuleiten.

Beim passiven FTP gibt der Server eine IP/Port Nummer an. Der Client baut eine Verbindung zu dieser Adresse auf, der Server wartet passiv auf den Verbindungsaufbau. Für die Clients ist diese Variante einfacher, weil sie hinter einem NAT-Router auch funktioniert.

Per TCP-Port 21 nimmt ein PC über das Internet mit dem FTP-Server Kontakt auf.
Dieser antwortet über einen der für passiv definierten Ports, um durch den Router durchzukommen, ohne dass dort weitere Ports freigegeben werden müssen. Der Aufbau geschieht halt von innen heraus.

Ich vermute mal, daß ich diesen Satz falsch verstanden habe. "Der Aufbau geschieht halt von innen heraus" hatte ich so verstanden, daß der Server eine Verbindung zum Client aufbaut, also aktives FTP.

Du wolltest damit vermutlich sagen, daß der Server auf der Kontroll-Verbindung über Port 21 dem Client einen Port gibt, auf dem dann der Client die Verbindung öffnen soll, also passives FTP. Damit das funktioniert, muß zum einen der Port-Bereich, auf den der FTP-Server konfiguriert ist, mit dem Port-Bereich des NAT-Routers übereinstimmen. Weiterhin muß entweder der NAT-Router die interne IP-Adresse des FTP-Servers, die in der Antwort auf das Passiv-Kommando übertragen wird, auf die öffentliche IP-Adresse des NAT-Routers ändern, oder es wird der erweiterte passive Modus (extended passive mode) verwendet, bei dem der Server nur seine Port-Nummer ohne IP-Adresse überträgt. Dieser Modus wurde speziell für FTP-Server hinter NAT-Routern eingeführt, muß dann aber von Client und Server unterstützt werden.

Konkret sieht das mit dem normalen passiv Modus so aus:
Code:
PASV
227 Entering Passive Mode (192,168,178,20,8,1)
Der Clients sendet "PASV", der Server antwortet mit der IP-Adresse 192.168.178.20 und Port 2049 (8*256+1). Ein NAT-Router muß hier in die Daten der FTP-Kontrollverbindung eingreifen und seine eigene öffentliche IP-Adresse eintragen, damit der Client die Verbindung aufbauen kann. Dadurch kann sogar das Datenpaket sich in der Größe ändern, os daß auch die Offsets aller folgenden Pakete geändert werden müssen.

Erweiterter passiver Modus sieht so aus:
Code:
EPSV
229 Entering Extended Passive Mode (|||2049|)
Hier wird nur noch die Port-Nummer übermittelt, daher muß der NAT-Router keine IP-Adresse mehr ändern.
 
Vermutlich, damit dieser Bereich auf den FTP Server weitergeleitet werden kann. Anscheinend hat die Box dann doch Unterstützung für einen FTP Server hinter der Box (im passiv Modus).
Wie sollte der denn aussehen?
uPnP habe ich aus. Portweiterleitungen vergebe ich einzig und allein per Hand. :noidea:
Du wolltest damit vermutlich sagen, daß der Server auf der Kontroll-Verbindung über Port 21 dem Client einen Port gibt, auf dem dann der Client die Verbindung öffnen soll, also passives FTP. Damit das funktioniert, muß zum einen der Port-Bereich, auf den der FTP-Server konfiguriert ist, mit dem Port-Bereich des NAT-Routers übereinstimmen.
Ja so sollte es eigentlich sein - ich gebe zu, das war ein wenig <räusper> hoperig ausgedrückt...
Nur mi dem Unterscheid, dass ich garantiert keinen Portbereich im Router dafür definiert habe...
Konkret sieht das mit dem normalen passiv Modus so aus:
Code:
PASV
227 Entering Passive Mode (192,168,178,20,8,1)
Der Clients sendet "PASV", der Server antwortet mit der IP-Adresse 192.168.178.20 und Port 2049 (8*256+1). Ein NAT-Router muß hier in die Daten der FTP-Kontrollverbindung eingreifen und seine eigene öffentliche IP-Adresse eintragen, damit der Client die Verbindung aufbauen kann.
Kommt hier nicht nur der normale NAT-Mechanismus zum Tragen und der FTP-Client muss das Ganze (die richtige IP-Adresse) wieder auseinander dröseln, bzw ignoriert diese vollständig und lauscht nur auf die Portadresse, die er nutzen soll (wie Du als "erweiterten passiven Mode" beschrieben hast)?
Auf welchem Port sendet der ftp-Server denn obige Port-Antwort?
Nimmt er abgehend dann auch schon den Port 2049 (in dem Beispiel) oder immer noch den Kontroll-Kanal auf Port 21? Das hätte ja zur Folge, dass damit der Port im NAT-Router vor dem FTP-Server schon für die Datenübertragung und Antwortpakete geöffnet wird und das Client kann seinerseits auf dem gewünschten Port ausgehend senden und schon haben beide Seiten den gewünschten Port innerhalb des Netzes geöffnet - egal was die beiden NAT-Router innerhalb des I-Nets daraus machen.
Hmmm, ich glaube mal, ich muss da mal rumspielen und meine Firewall mitschreiben lassen. ;)
 
Ich hab's inzwischen am Laufen. In sofern erstmal Danke für die Hinweise!

Und die Sache mit dem Aktiv oder Passiv ist wohl einfach eine Frage der Sichtweise. Ich muss im FTP-Client (Total Command) jedenfalls den Aktiv-Modus einschalten, damit es funktioniert. Am Server ist die Option "Use Passive-Ports" deaktiviert, also ist er wohl auch im Aktiv-Modus.

Vom Büro aus funktioniert der Zugriff nicht, denn dort befindet sich der Client wiederum hinter einer Firewall (FTP-Proxy), so dass er nur im Passiv-Modus arbeiten kann. Das war auch der Grund, warum ich selbst erstmal nicht dahinter gekommen bin, wo es klemmt.

Also wenn der Server nur per Port-Forwarding erreichbar ist und der Client hinter einer Firewall sitzt, hat man schlechte Karte.

Aber eine Möglichkeit gibt es noch, die ich noch nicht ausprobiert habe. Ich kann dem Total Commander sagen, dass er im Passiv-Modus nur einen bestimmten Port-Bereich verwenden soll. Denn müsste ich eigentlich in der Fritzbox an der Server weiterleiten können und dann müsste das ganze auch im Passiv-Modus funktionieren.

Aber wie RalfFriedl schon schreibt, muss man dann sicher stellen, dass das mit jedem FTP-Client funktioniert.

FTP ist einfach ein veraltetes Protokoll aus der Zeit, als man noch keine Firewalls, Proxys und NAT-Router kannte. ;-)
 
Zuletzt bearbeitet:
Sorry, dass wir Deinen Thread mit unseren Überlegungen in Beschlag genommen haben...

Zurück zum Thema:
Ich arbeite (z.B. von meinem Notebook aus) meist mit FireFTP (aus dem Firefox heraus) und habe passive-ftp angehakt.
Weiterhin habe ich bei meinem ftp-Server (oben genannter filezilla Server) den Portrange gesetzt.
So komme ich von überall (egal ob hinter NAT-Router oder direkte Internet-Einwahl) auf meinen ftp-Server. Dort ist, wie oben beschrieben nur der Port 21 (tcp) zum ftp-Server weitergeleitet.
Laut Logs werden auch die Verbindungen brav als PASV angemeldet und behandelt.
Jede neue Anmeldung am Server/jeder neue Cannel bekommt dann eine neue Portadresse zugewiesen. Wenn sie oben angekommen sind, fängt das Spielchen wieder unten an... (Dass diese Portadresse auch genommen werden, habe ich einmal zwangsweise feststellen müssen, als der FTP-Server einen Portrange von 2048 bis z.B. 2112 zugewiesen hatte, die Personal-Firewall des PCs jedoch ab 2100 blockte :motz:)
So habe ich 12 fehlerhafte Versuche (mit jedes mal einer Abmeldung) durchlaufen müssen, bis ich dann wieder fehlerfrei auf den Server kam. (Naja, besser als 1000 fehlerhafte Versuche, wenn man gerade nicht an den Server kommt...;))
 
entschuldigung, dass ich jetzt diesen alten thread ausgrabe, aber ich habe das selbe problem.
aufbau:
INET----FritzBox 7170 29.04.63-12397(Labor)-----PC 192.168.178.193

auf dem pc läuft ein ftp server auf port 21, die fritzbox leitet diesen port weiter.
active ftp funktioniert, passive hat bis vor kurzem auch funktioniert.
seit ein paar monaten(ich weiß nicht ob es seit dem neuesten labor ist) schmiert passive immer folgend ab:
Code:
(000002) 06.12.2008 21:13:47 - user (IP)> 230 Logged on
(000002) 06.12.2008 21:13:47 - user (IP)> PWD
(000002) 06.12.2008 21:13:47 - user (IP)> 257 "/" is current directory.
(000002) 06.12.2008 21:13:47 - user (IP)> TYPE I
(000002) 06.12.2008 21:13:47 - user (IP)> 200 Type set to I
(000002) 06.12.2008 21:13:47 - user (IP)> PASV
(000002) 06.12.2008 21:13:47 - user (IP)> 227 Entering Passive Mode (meine,ip,hier,drin,6,110)
(000002) 06.12.2008 21:13:47 - user (IP)> LIST
(000002) 06.12.2008 21:13:58 - user (IP)> 425 Can't open data connection.
(000002) 06.12.2008 21:14:18 - user (IP)> disconnected.

ich frage mich jetzt:
wrum hat es bisher funktioniert, obwohl ich doch keine speziellen ports für passive freigegeben hatte? hat mein(Filezilla) server an die fritzbox tempöräre freigaben gemacht?
könnte es die ausgeschaltete ausgeschaltete " Änderungen der Sicherheitseinstellungen über UPnP" sein? kann filezilla UPnP?
ich habe es ausgeschaltet, damit keine leute oder programme an meinen portweiterleitungen fummeln.

wäre fröhlich über eine antwort.
nixnick
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.