В моей компании есть инструмент, использующий собственный FTP-клиент Windows (ftp.exe). Этот FTP-клиент иногда использует порт для передачи данных, который распознается брандмауэром как одноранговый на уровне управления приложениями.

Я хотел бы знать, если у меня есть способ ограничить диапазон портов, используемый клиентом FTP в реестре или где-то еще.

Спасибо за помощь.

Александр

2 ответа2

2

Это невозможно.

Разве вы не можете использовать другой клиент FTP командной строки Windows и пассивный режим? Это решило бы все проблемы с брандмауэром.

Например WinSCP? Есть даже руководство по преобразованию Windows FTP-скрипта в WinSCP-скрипт.

(Я автор WinSCP)

1

Смотрите обновление ниже

Только с активным FTP клиент может решить, какие порты использовать, используя команду PORT :

...
PORT 192,168,0,2,7,123
200 PORT command successful
LIST
...

Серверу предписано подключиться к 192.168.0.2 через порт 7 * 256 + 123 = 1915. Два числа в конце являются старшим и младшим 8-битным номером 16-битного порта.

Однако с активным FTP сервер будет подключаться к клиенту. Это не подходит для клиентов за брандмауэрами или маршрутизаторами NAT. В пассивном FTP все наоборот: клиент открывает дополнительные подключения к серверу. Таким образом, пассивный FTP теперь является стандартом де-факто. Но с пассивным FTP клиент не может решить, какой порт использовать:

...
PASV
227 Entering Passive Mode (192,168,0,3,7,123).
LIST
...

Теперь клиент должен установить соединение с IP-адресом и портом, указанными в ответе сервера (227 Entering ...). Хотя это все еще проблематично с брандмауэрами, потому что это не «известный» порт, он полностью поддерживается на маршрутизаторах NAT без FTP-помощников.

tl; dr: только с активным FTP. Активный FTP не будет работать, хотя.

Обновить

Теперь, когда стало ясно, что этот вопрос касается ftp.exe , приведенное выше объяснение в основном не имеет значения, поскольку ftp.exe поддерживает только активный FTP. Однако поведение ftp.exe нельзя контролировать / изменять. Требуется другой FTP-клиент.

Большинство клиентов не поддерживают настройку или управление диапазоном портов данных. Выдержка из руководства WinSCP:

Поскольку WinSCP не позволяет настраивать диапазон портов, которые он использует для подключений к данным, все порты в диапазоне динамических портов Windows 49152 - 655354) должны быть открыты.

Возможно, вы захотите пересмотреть весь свой подход к передаче файлов. FTP просто устарел. Использование однопортового протокола (SFTP, HTTP, ...) для передачи файла может быть лучшим способом.

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