1

Существует программное обеспечение, которое зависит от Windows ftp.exe для передачи файлов. Проблема в том, что компьютер, на котором он работает, находится за очень строгим брандмауэром, он не работает с активным FTP.

Windows FTP работает только в режиме активного FTP.

Я думал об этом решении. Отправка пакета с выбранного порта (например, 1027) на порт 20 адреса сервера. Брандмауэр NAT разрешит входящий доступ с порта 20 на 1027. Затем компьютер отправит команду PORT на сервер, чтобы сообщить, что порт данных клиента 1027. Передача данных начнется.

Это будет работать? Как мне заставить его работать только с программой Windows ftp ?

Примечание. Используемый мной сервер - это FileZilla FTP Server.

1 ответ1

0

Я думал об этом решении. Отправка пакета с выбранного порта (например, 1027) на порт 20 адреса сервера. Брандмауэр NAT разрешит входящий доступ с порта 20 на 1027. Затем компьютер отправит команду PORT на сервер, чтобы сообщить, что порт данных клиента 1027. Передача данных начнется.

Я не думаю, что вы можете сказать ftp.exe использовать порт по вашему выбору. Он посылает в PORT с портом по своему выбору. Вы (заявка) не отправляете сами.

На сервере FileZilla есть опция «Игнорировать не маршрутизируемые IP-адреса в команде PORT». Должен ли я включить ее? Это решит проблему?

Было бы полезно, если бы проблема заключалась в том, что клиент не знает свой внешний IP-адрес (то есть он посылает неверный IP-адрес в команде PORT ). На самом деле (10.10.1.239 - это локальный IP-адрес, которого сервер не может достичь), поэтому вам нужно включить эту опцию. Но вы утверждаете, что проблема также в брандмауэре. Таким образом, хотя опция помогает, она не решает все проблемы, которые у вас есть.


Очевидно, что самым простым решением было бы переконфигурировать ваш брандмауэр, чтобы разрешить активный режим. Это означает, чтобы открыть входящие порты в диапазоне передачи данных.

Смотрите мою статью Конфигурация сети для активного режима.

Вы можете ограничить правила только для IP-адреса сервера. Вы даже можете ограничить их только удаленным портом 20.


Единственная другая идея, которая у меня есть, - разработать поддельный клиент ftp.exe который использует пассивный режим. Это не будет так сложно, если вы используете какую-нибудь клиентскую библиотеку FTP и ограничите функциональность клиента только тем, что приложение действительно использует.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .