"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PASV FTP hinter NAT 100% gelöst. Interessiert vielleicht wen?

GrandAdmiralThrawn 17.05.2006 - 19:17 809 0
Posts

GrandAdmiralThrawn

XP Nazi
Avatar
Registered: Aug 2000
Location: BRUCK!
Posts: 3689
Neulich wurde ich mit dem Problem konfrontiert, einen PASV FTP Server hinter ein NAT zu stellen, ohne so recht eine Vorstellung von der wirklichen Funktionsweise eines PASV FTPs zu haben. Aktive Verbindungen waren unerwünscht, da auch Clients connecten können sollten, die selbst hinter NAT stecken.

Server: Serv-U 6 Win32, Implicit-SSL auf dem Doom Port (666).
Router: Irgendein DLink Graffl, "DMZ" Setting unerwünscht, also einfach Mal nur Port 666 auf die LAN Maschine mapped. So gings mal nicht wirklich...

PASV FTP im privaten LAN: FTP lauscht auf Port 666. Client connected, FTP liefert dem Client die LAN IP Adresse (Fehler #1) und einen Random Listen Port, auf den der Client dann connecten soll (Fehler #2) um Daten zu transferieren.

Also muß die IP rewrited werden, quasi noch ein NAT direkt am FTP Server, und die PASV Portrange muß statisch sein.

Lösung: FTP Server nehmen, der rewriten der IP Adresse seiner Antwortpakete und das Einstellen einer fixen PASV Portrange unterstützt. Serv-U 6 kann das (Jeder bessere Linux FTPD sicher auch?).

=> Als IP für PASV die externe/öffentliche IP des Routers am FTP einstellen, damit der Server die korrekte IP des Geräts zurückschickt, auf dem NAT rennt und auf dem das INet angeschlossen ist.

Am FTP Server z.B. die Ports 65000 - 65050 für PASV Listen fixieren, und diese Ports zusätzlich zum 666er vom Router auf die LAN Maschine mappen, auf der der FTP Server läuft. Der FTP Server liefert dann z.B. <externe IP>:65001 an den Client anstatt etwas, das wie 192.168.0.2:32456 aussieht. So findet der Client auch immer zum Server zurück, wenn der Router auch korrekt alle Ports weiterleitet.

Fazit: Jeder Client, auch solche hinter Firewalls/NAT Routern können zu diesem Server connecten, auch wenn beide Seiten hinter NAT stecken. Active Connections nicht nötig!

Dachte mir, das könnte eventuell jemanden interessieren, da grade PASV FTP eher ein "Hund" ist, wenn man ihn hinter NAT setzen will... Eine Serv-U spezifische Anleitung spar ich mir, da ich denke, daß nur das Funktionsprinzip wichtig ist.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz