У нас есть FileZilla server 0.9.37, работающий на Windows server 2008 R2
Активный режим работает нормально, брандмауэр Windows на сервере выключен.
Наш маршрутизатор - это DrayTek vigor 2820. В разделе NAT, открытые порты, я открыл следующие порты для локальных IP-адресов серверов.
TCP 20-22, TCP 45100-65535
На сервере FileZilla в настройках пассивного режима (я не могу опубликовать изображение, поэтому ...)
Use the following IP: 213.106.150.123
Don't use external IP from local connections: Checked
Use custom port range: 45100-65535
С удаленного сервера в Германии, к которому я подключился по протоколу RDP, я пытаюсь снова подключиться к серверу FileZilla.
Status: Connecting to 213.106.150.123:21...
Status: Connection established, waiting for welcome message...
Response: 220 --
Command: USER ftp_001471
Response: 331 Password required for ftp_001471
Command: PASS ********
Response: 230 Logged on
Status: Connected
Status: Retrieving directory listing...
Command: CWD /
Response: 250 CWD successful. "/" is current directory.
Command: TYPE I
Response: 200 Type set to I
Command: PASV
Response: 227 Entering Passive Mode (213,106,150,123,238,133)
Command: MLSD
Response: 425 Can't open data connection.
Error: Failed to retrieve directory listing
Окно состояния на сервере FileZilla сообщает следующее:
(not logged in) (87.106.131.22)> Connected, sending welcome message...
(not logged in) (87.106.131.22)> 220 --
(not logged in) (87.106.131.22)> USER ftp_001471
(not logged in) (87.106.131.22)> 331 Password required for ftp_001471
(not logged in) (87.106.131.22)> PASS ********
ftp_001471 (87.106.131.22)> 230 Logged on
ftp_001471 (87.106.131.22)> CWD /
ftp_001471 (87.106.131.22)> 250 CWD successful. "/" is current directory.
ftp_001471 (87.106.131.22)> TYPE I
ftp_001471 (87.106.131.22)> 200 Type set to I
ftp_001471 (87.106.131.22)> PASV
ftp_001471 (87.106.131.22)> 227 Entering Passive Mode (213,106,150,123,195,197)
ftp_001471 (87.106.131.22)> MLSD
ftp_001471 (87.106.131.22)> 425 Can't open data connection.
Если я изменю настройку пассивного режима FileZilla с нашего внешнего IP на Default, я получу следующие данные от клиента в Германии, пытающегося подключиться.
Status: Connecting to 213.106.150.123:21...
Status: Connection established, waiting for welcome message...
Response: 220 --
Command: USER ftp_001471
Response: 331 Password required for ftp_001471
Command: PASS ********
Response: 230 Logged on
Status: Connected
Status: Retrieving directory listing...
Command: CWD /
Response: 250 CWD successful. "/" is current directory.
Command: TYPE I
Response: 200 Type set to I
Command: PASV
Response: 227 Entering Passive Mode (213,106,150,123,196,198)
Command: MLSD
Response: 425 Can't open data connection.
Error: Failed to retrieve directory listing
И подробности на сервере.
(not logged in) (87.106.131.22)> Connected, sending welcome message...
(not logged in) (87.106.131.22)> 220 --
(not logged in) (87.106.131.22)> USER ftp_001471
(not logged in) (87.106.131.22)> 331 Password required for ftp_001471
(not logged in) (87.106.131.22)> PASS ********
ftp_001471 (87.106.131.22)> 230 Logged on
ftp_001471 (87.106.131.22)> CWD /
ftp_001471 (87.106.131.22)> 250 CWD successful. "/" is current directory.
ftp_001471 (87.106.131.22)> TYPE I
ftp_001471 (87.106.131.22)> 200 Type set to I
ftp_001471 (87.106.131.22)> PASV
ftp_001471 (87.106.131.22)> 227 Entering Passive Mode (192,168,1,4,195,198)
ftp_001471 (87.106.131.22)> MLSD
ftp_001471 (87.106.131.22)> 425 Can't open data connection.
Что я делаю не так?
Когда я указываю внешний IP-адрес, клиент и сервер сообщают об одном и том же, но порты портятся, и когда я запускаю по умолчанию, сервер использует свой внутренний IP-адрес, но назначение порта выглядит лучше.
Изменить: больше тестирования и его работы.
Итак, я установил FTP-сервер в IIS 7.5, отключил FileZilla, и он заработал! Затем я попытался повторно включить FileZilla, и это тоже сработало! Все это было из моего домашнего ADSL-соединения.
Затем я попытался снова с нашего удаленного сервера в Германии, и это не удалось, зависает в списке каталогов в пассивном режиме как для IIS FTP, так и для FileZilla.
Думаю, что-то не так с брандмауэром / маршрутизатором в центре обработки данных в Германии. Я действительно не хочу связываться с маршрутизатором удаленного сервера (я даже не уверен, что могу изменить правила брандмауэра, поскольку он размещен). Я беспокоюсь о корпоративных клиентах, которые постигнет та же участь при попытке доступа к нашим FTP-сайтам.
У меня была аналогичная проблема, и я решил ее, выбрав «по умолчанию» в параметре «IP-адрес внешнего сервера для передачи в пассивном режиме» в настройках сервера Filezila. Другими словами, не вводите здесь свой общедоступный IP-адрес, даже если вы используете частный адрес. Причина в том, что в вашем брандмауэре может быть включена «проверка FTP», и он будет преобразовывать частный IP-адрес вашего сервера в его общедоступный IP-адрес. В этом случае включение этого перевода в Filezila вызовет проблемы, и соединение будет потеряно после того, как ваш клиент выдаст команду PASV.
Я понимаю, что это может быть изменение, но новый FTP-сервер в 2008 году очень надежен, и я сам заменил FileZilla им. Вы можете также изучить это.
Я предлагаю вам попробовать локально на сервере, используя FTP Windows или другой установленный клиент. Таким образом вы увидите, проблема ли это в сети / брандмауэре или проблема с конфигурацией FTP-сервера. Также проверьте файлы журнала сервера Filezilla, если command.
Если это зависит от брандмауэра, вот статья TechNet, которая может помочь: Как настроить брандмауэр Windows для FTP-сервера в пассивном режиме. Но вы написали, что брандмауэр Windows отключен, поэтому я полагаю, что это проблема внешнего брандмауэра / маршрутизатора (также проверьте сторону клиента).