Strona 1 z 1

vsftpd za NAT-em

: 04 grudnia 2006, 17:53
autor: sparks
Witam.
Mam następujący problem.
Otóż na komputerze w sieci lokalnej mam serwer vsftpd, który ma porty 20 i 21 przekierowane na 8089 i 8090.
Oczywiście potrafię się zalogować lokalnie, ale gdy próbuje wejść zewnątrz występują dziwne problemy. Mianowicie udaje mi się połączyć z serwerem ale gdy daję np. ls nieważne czy w trybie active czy passive wyrzuca "no route to host"
Jakieś sugestie ?

Fragment mojego vsftpd.conf:

Kod: Zaznacz cały

listen=YES

pasv_enable=YES
pasv_promiscuous=YES
port_promiscuous=YES
dirlist_enable=YES
Fragment sesji FTP:

Kod: Zaznacz cały

331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> passive
Passive mode on.
ftp> ls
227 Entering Passive Mode (192,168,0,239,83,242)
ftp: connect: No route to host
ftp> 

: 04 grudnia 2006, 18:04
autor: Grabos

Kod: Zaznacz cały

http://en.wikipedia.org/wiki/Ftp
Przeczytaj sobie overview to ci wszystko wyjaśni, jeśli to ci nie wystarczy mogę napisać więcej :)

: 04 grudnia 2006, 20:28
autor: sparks
No jak to czytam to wynika z tego że w trybie active powinno działać w trybie passive nie ma prawa bo serwer otwiera u siebie losowy port, a to nie przejdzie przez router. Za to na aktywnym powinno działać. Tylko skąd będzie klient wiedzieć na jakim porcie się skomunikować ?
Jeśli się mylę to mnie popraw :)

To dlaczego to widzę w active:

Kod: Zaznacz cały

200 PORT command successful. Consider using PASV.
W passive zawsze wybiera mi losowe porty, czyli do przewidzenia :(

Kod: Zaznacz cały

227 Entering Passive Mode (192,168,0,239,174,196)

: 04 grudnia 2006, 22:14
autor: Grabos
In active mode, the FTP client opens a random port (> 1023), sends the FTP server the random port number on which it is listening over the control stream and waits for a connection from the FTP server. When the FTP server initiates the data connection to the FTP client it binds the source port to port 20 on the FTP server.
Czyli jeśli host z którego się łączysz jest za firewallem też nie pójdzie bo klient wyśle lokalne ip chyba że używasz firewall który zmieni ip i port w pakiecie. No i chyba klient będzie starał dostać połączenie z portu 20 więc nie tędy droga.
In passive mode, the FTP Server opens a random port (> 1023), sends the FTP client the port on which it is listening over the control stream and waits for a connection from the FTP client. In this case the FTP client binds the source port of the connection to a random port greater than 1023.
Otwierasz port 20 i przedział który twój serwer używa do otwierania tego losowego portu z reguły to około 1000 portów pewnie 8001-9000 jak znam życie i to powinno działać.
Ogólnie się nie znam ale mam nadzieje że pomogłem :P

Na dole artykułu z wikipedi jest taki fajny link poczytaj może ci pomoże (mi sie nie chciało :) ) :
P.S.
Nie łatwiej z ssh ;)

: 05 grudnia 2006, 09:57
autor: sparks
[quote="merlinsan"]
Otwierasz port 20 i przedział który twój serwer używa do otwierania tego losowego portu z reguły to około 1000 portów pewnie 8001-9000 jak znam życie i to powinno działać.
Ogólnie się nie znam ale mam nadzieje że pomogłem :P

P.S.
Nie łatwiej z ssh ]

Heh tego się właśnie obawiałem. Niestety otwarcie takiego przedziału portów w moim przypadku nie wchodzi w ogóle w grę... Trzeba będzie pozostać przy ssh i wykorzystać protokół http :)