FTP неверный ответ на команду PASV
Почему некоторые отклики пассивного режима FTP иногда изменяются таким образом, что закрывающая скобка не учитывается.
Я ожидаю, что ответ FTP на команду PASV будет:
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)\r\n
Вместо этого я получаю:
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2\r\n\r\n
Закрывающая скобка опущена, и вместо нее есть дополнительная \r\n
Я пишу программное обеспечение для проприетарной платформы и использую библиотеку FTP, которую не могу изменить. Эта библиотека, очевидно, не работает без закрывающей скобки.
Проблема возникает при доступе к серверу (в NAT) из Интернета. В локальной сети есть закрывающая скобка.
Пример: из локальной сети я получаю:
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)\r\n
куда h1,h2,h3,h4
это частный IP-адрес h1.h2.h3.h4
из Интернета:
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2\r\n\r\n
где h1,h2,h3,h4
это публичный IP-адрес h1.h2.h3.h4
, но обратите внимание на отсутствующую закрывающую скобку и дополнительные \r\n
Пробовал и IIS FTP и Filezilla и результаты одинаковые. Кроме того, IP-адрес и порт являются правильными (я проверил это, открыв другое соединение telnet на тот IP / порт).
К сожалению, у меня нет более подробной информации о сети, в которой находится сервер.
Что может быть причиной такого поведения? Роутер, брандмауэр? Можно ли это решить. Я исключил сам FTP-сервер, потому что ответ при подключении изнутри локальной сети сервера правильный.
Спасибо.