Смотрите обновление ниже
Только с активным 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, ...) для передачи файла может быть лучшим способом.