PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ftp auf port 20021 hinter nat


noid
2004-04-08, 11:05:29
hi,

also auf dem port 21 läuft der ftpserver hinter ner nat problemlos. nur wenn ich port 20021 benutze, dann will er nicht mehr.

ist ne debiankiste
kernelversion 2.4.x
iptables v1.2.8 + shorewall 1.4.7

wenn ich in der /etc/services jetzt den port 20021 als ftp deklariere, reicht das - muss ich noch nen reboot machen?
oder wie bring ich dem system bei, dass es sich bei dem port um nen ftp handelt?
selbst wenn ich ein DNAT von extern 20021 auf intern 21 mache erkennt er nicht den ftp.

jemand ne idee?

Exxtreme
2004-04-08, 11:08:00
Portforwarding für den Port 20021 auf die lokale IP-Adresse am Router eingestellt?

noid
2004-04-08, 11:25:13
sollte doch mit DNAT gehen, oder?
also wenn ich ein als quelle net:20021 und ziel lc:21 hab?

Exxtreme
2004-04-08, 12:08:53
Original geschrieben von noid
sollte doch mit DNAT gehen, oder?
also wenn ich ein als quelle net:20021 und ziel lc:21 hab?
Mach lieber Quelle net:20021 und Ziel <IP-Adresse des FTP-Servers>

noid
2004-04-08, 12:24:09
#/etc/shorwall/rules

DNAT net loc:192.168.0.1 tcp 21 20021

zusätzlich:
insmod ip_nat_ftp ports=21,20021
insmod ip_conntrack_ftp ports=21,20021

damit müsste das doch wenigstens mal ne verbindung erlauben?
auf port21 ist das ganze kein thema, auch wenn der andere ebenfalls hinter einem router mit nat sitzt.

Exxtreme
2004-04-08, 12:52:57
Hmm, hast du diese einstellungen am Router oder am FTP-Server gemacht?

noid
2004-04-08, 12:57:17
am router, der ftp läuft unter windows. wie gesagt, mit port21 läuft alles wunderprima.

Exxtreme
2004-04-08, 13:16:30
Leider kenne ich mich mit IP-Tables nicht aus. ;( Ich kann nur allgemeine Tipps geben. Normalerweise muss man den Port 20021 auf die lokale Adresse des FTP-Server forwarden, sprich alle Verbindungen, die der Router per Port 20021 bekommt müssen an den FTP-Server weitergeleitet werden. Vielleicht kann der Windows-FTP-Server keine Verbindung am Port 20021 aufbauen? Schon mal alles lokal getestet?

noid
2004-04-08, 13:31:30
lokal hab ich schon alles mögliche getestet ;) der server läuft auch unter port 20021, 21 - was du willst. nur das mapping von port 20021 auf den internen port21 funktioniert nicht so recht.

danke aber für deine mühe.

man/google ist im moment auch recht ratlos.

nachtrag: wenn ich den server intern auf 20021 laufen lasse, dann geht es.
der map von 20021->21 will nicht recht. das müsste aber kein problem sein, oder doch?

Exxtreme
2004-04-08, 13:45:42
Original geschrieben von noid
nur das mapping von port 20021 auf den internen port21 funktioniert nicht so recht.

Hast du die Möglichkeit den Port auf dem FTP-Server von 21 auf 20021 zu setzen?

amunirr
2004-04-08, 15:35:49
Original geschrieben von noid
nachtrag: wenn ich den server intern auf 20021 laufen lasse, dann geht es.
der map von 20021->21 will nicht recht. das müsste aber kein problem sein, oder doch?

IMO muss dein FTP-Server schon auf 20021 "lauschen" wenn es denn der Port sein soll. Glaub nicht das Du so einfach vom 20021 auf 21 weiterleiten kannst. Was sollte das auch bringen, die IP's sind ja schon maskiert. :kratz2:

ai

noid
2004-04-08, 17:28:00
warum kann der router die pakete von 20021 extern nicht auf den port 21 des ftp weiterleiten? das sollte doch kein wirkliches problem sein.

(ja, auf port 20021 läuft der ftp auch von außen - aber dann muss man ja immer expliziet intern die portnr angeben)

amunirr
2004-04-08, 19:00:32
>warum kann der router die pakete von 20021 extern nicht auf den port 21 des ftp weiterleiten?

genau weiß ich es auch nicht. Mir ist nix dergleichen bekannt.

>ja, auf port 20021 läuft der ftp auch von außen - aber dann muss man ja immer expliziet intern die portnr angeben

So ist es.

Lauscht der Server nun auf 20021 muss dem Clienten das natürlich auch mitgeteilt werden, das er den Server auf 20021 findet und nicht auf 21. Also ftp://IP:20021 anstatt nur ftp://IP. Der Client kann ja nicht wissen das er auf 20021 connecten soll.

ai

noid
2004-04-08, 23:17:07
und wo ist das problem? ich kann mich erinnern sowas auch schon mal hinbekommen zu haben. der client von außen verbindet auf die 20021 und der server lauscht auf die 21 und bekommt vom router von dort seine pakete.

amunirr
2004-04-08, 23:30:52
War wohl ein Mißverständniss. Ich hab kein Problem hier. Dann erinnere Dich und leite die Pakete doch so wie Du sie brauchst oder frag doch am besten in news://de.comp.security.firewall nach. *eg*

ai

imagine
2004-04-09, 11:29:08
Mal ne ganz grundsätzliche Frage: Du hast in deinem internen Netz einen Debian-PC auf dem der FTPd auf Port 20021 läuft. Du kannst aus dem internen Netz auf diesen FTP auf problemlos zugreifen, von außen aus dem Internet allerdings nicht? Wie testest du denn den Zugriff von außen?

noid
2004-04-09, 13:30:26
nicht ganz...

intern läuft ein ftp auf einer windowskiste. wahlweise port 21 oder 20021. als gateway dient eine debianksite mit iptables und shorewall.
exteren zugriffe erledieg ich durch dritte im chat, sprich: "duuuu, geh mal auf ftp://...."

wenn derjenige selbst hinter ner nat sitzt, dann kann ich den versuch als erfolg oder fehlschlag verbuchen. eine externe shell zum rumspielen wäre mir allerdings lieber.

weiterhin klappt der zugriff wenn ich intern und extern gleiche ports verwende. eine lösung für das dnat mit verschd ports werde ich aber heute abend testen.

imagine
2004-04-09, 15:53:31
FTP nutzt immer zwei Verbindungen. Eine für die Kommandos und eine für die Daten. Nur den Port 21 für die Kommandos weiterzuleiten bringt nix. Hatte das mal versucht in nem Flash zu veranschaulichen -> http://home.arcor.de/noxestnoster/ftp.swf
Und ja ich weiß dass das Scheiße aussieht, ich mag Flash eben nicht.

Bei deinem FTP Servers sollte sich einstellen lassen welche Ports er für die Daten verwendet. Diese musst du dann neben Port 21 oder 20021 auch noch weiterleiten.

Dass es auf Port 21 klappt, kann evtl daran liegen, dass dein Router ein FTP-Masquerading Modul verwendet, dass auf Port 21 lauscht und bei Bedarf dynamisch die entsprechenden Ports weiterleitet.

noid
2004-04-09, 16:29:04
ich möchte jetzt keinem zu nahe treten, aber wenn ich erstmal ne verbindung mit 2 _unterschiedlichen_ ports hinbekommen, dann ist aktiver oder passiver datentranfer ein witz. und den verkehr mit identischem interenen und exteren port hab ich ja schon hinbekommen. mit daten. und der ftp-server benutzt immer den um einen niedrigeren port zum datentransfer. die passive range kann man einstellen.

(und oben steht ja dass sämtlich module für ftps hinter nat mit den richtigen ports geladen sind)

es geht also nicht ums generell laufen, sondern ums spezielle anpassen.

beschreib ich mein problem undeutlich? :(

edit: ich will damit wirklich niemanden zunahe treten, aber dies ist eben keine frage des grundverständnisses des ftp-protokolls.

amunirr
2004-04-09, 17:54:14
hallo,

hab mich mal versucht schlau zu machen. Für aktives FTP sollte


iptables -t nat -A PREROUTING -p tcp --dport 20021 -i eth1 -j DNAT --to x.x.x.x:21


funktionieren (x=Variable).

ai

imagine
2004-04-09, 20:56:44
Wenn dir das alles schon vorher klar war macht das ja nix. Lieber etwas einmal zu viel hinschreiben als zu wenig...

noid
2004-04-09, 23:12:07
prima es geht :freak:

nachdem ich erstmal es mit 1:1 hinbekommen hatte, hab ich vorm rumspielen die zeile in der rules-datei kopiert und die kopie auskommentiert.
dann wieder editiert, aber in einer #-zeile. beim eintippen in der shell gings, ist mir dummerweise erst aufgefallen als ich den internen ftp-server im port verändert hab und es dann ging.
da brauch ich mich nicht wundern warum es nicht so will wie es soll ;)

wenn die zeile nicht auskommentiert gewesen wäre, dann hätte dies viel arbeit erspart. der fehler war diesmal zwischen den ohren.