Диспозиция:
========
(провайдер)<->(роутер)<->(ПК с запущенным сервером FileZilla)
FileZilla Server version 0.9.36 beta
Роутер Asus WL520-GU (BusyBox v1.1.3 Linux version 2.4.20)
PC Windows 7 Enterprise (Version 6.1 сборка 7600)
Как оно работает:
============
На Wan-интерфейсе роутера настороено PPTP-соединение, когда роутер его поднимает, Wan получает внешний IP (IP всегда один и тот же, хоть и не статика).
На Lan-интерфейсе поднята сеть вида 192.168.100.0/24 (соответсвенно на карточке у ПК прописан IP 192.168.100.100, роутер имеет IP 192.168.100.1)
Соответсвенно ПК сидит за NATом
Как оно НЕ работает:
==============
Конфиг FilleZill'ы:
Connection settings - Сервак слушает порт 50021
Passive mode settings - use IP (указан внешний(белый) IP роутера)
Use custom port range - 50050 - 50100
Роутер:
форвардинг портов - с внешних портов 20 и 21 перенаправляй на 192.168.100.100 на порт 50021
Что получается:
===========
Лог с со стороны клиента (ftptest.net)
Status: Resolving address of "мой_внешний_IP"
Status: Connecting to "мой_внешний_IP"
Status: Connected, waiting for welcome message
Reply: 220-+++ free4shoot ftp +++ <<< ---- ТО ЕСТЬ ЧЕРЕЗ РОУТЕР МЫ ПРОБИЛИСЬ! Сервак нас поприветсвовал
Reply: 220 FileZilla Server version 0.9.36 beta <<< и представился
Command: CLNT http://ftptest.net on behalf of "мой_внешний_IP"
Reply: 200 Don't care
Command: USER anonymous
Reply: 331 Password required for anonymous
Command: PASS anonymous@"мой_внешний_IP"
Reply: 230 Logged on <<< мы залогинились
Command: SYST
Reply: 215 UNIX emulated by FileZilla
Command: FEAT
Reply: 211-Features:
Reply: MDTM
Reply: REST STREAM
Reply: SIZE
Reply: MLST type*;size*;modify*;
Reply: MLSD
Reply: UTF8
Reply: CLNT
Reply: MFMT
Reply: 211 End
Command: PWD
Reply: 257 "/" is current directory.
Status: Current path is /
Command: TYPE I
Reply: 200 Type set to I
Command: PASV <<< идет предложение работать в режиме passive
Reply: 227 Entering Passive Mode ("мой_внешний_IP",195,161) <<< сервак выдает клиенту IP и порт (50081)
Command: MLSD <<< А НУКА ПОКАЖИ ЧТО У ТЕБЯ ТАМ ЕСТЬ!?
Reply: 425 Can't open data connection. <<< А вот .уй вам!
Disconnected. <<< Ну тогда пока...
То есть что получается, управляющий (котрольный) канал создается. Далее идет предложение работать в режиме passive, сервак соглашается и отсылает клиенту IP(вшешний) + Port(из диапозона 50050 - 50100) , на которые нужно постучаться, чтобы поднять канал передачи данных. Клиент долбится и получает от ворот поворот!
Если клиенту сказать принудительно использовать режим active (то есть теперь ПК отсылает серваку свой IP + порт и сервак на них долбится) то все прекрасно работает.
Что было предпринято:
================
На роутере ставил так же форвардинг портов - с внешних портов 50050 - 50100 перенаправляй на 192.168.100.100 на порт 50021
Как можно догалаться, не помогло, но лог немного поменялся:
....
Command: PASV
Reply: 227 Entering Passive Mode ("мой_внешний_IP",195,161)
Command: MLSD
Listing: 220-+++ free4shoot ftp +++ <<< то есть, эта дура, вместо того чтобы поднять канал передачи данных, поднимает еще одно соединение
Listing: 220 FileZilla Server version 0.9.36 beta
Reply: 425 Can't open data connection. <<< и подыхает
Error: Listing failed
Фаервал на роутере отключен, как и в винде. Порты извне доступны.
===============================================
У кого какие идеи есть?
---------------------------
Поставил Варешарк, заметил странность.
Reply: 227 Entering Passive Mode ("мой_внешний_IP",195,161) <<< То есть, по идее клиент теперь должен долбится на порт 50081
Command: MLSD <<< то есть, вот сейчас с от клиента ftptest.net(IP 62.75.138.232) должен прийти пакет на "внешний IP" на порт 50081
роутер должен форварднуть пакет на IP 192.168.100.100 на порт 50021
Варешарк должен поймать пакет в котором соурс ИП - 62.75.138.232, дест ИП 192.168.100.100, соурс порт 50081, дест порт 50021
Так вот нифига нет пакетов в которых был бы указан порт 50081(как и любой другой из пула, выделенного для passive mode)
Или сорс порт будет не 50081 а тот, что был использован клиентом при отправке пакета изначально?
Чисто теоретические предположения, по оставшимся знаниям, что вопрос в настройках файлзилы, но что конкретно к сожалению не подскажу (сужу по поведению соединения)
С ФТП к сожалению делов особливо много не имел
Возможно стоит воспользоваться не простым PortForwarding, а опцией VirtualServer(или как-то так она называется, там еще кучка пресетов), т.к. FTP не работает через нат без помощи хелпера nf_nat_ftp, следовательно роутер его и не подгружает. Есть вероятность, что при использовании функции VirtualServer(или как она там называется), все будет ок.
Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)