Veja a atualização abaixo
Apenas com o FTP Ativo, o cliente pode decidir em quais portas usar, usando o comando PORT
:
...
PORT 192,168,0,2,7,123
200 PORT command successful
LIST
...
O servidor é instruído a conectar-se a 192.168.0.2 na porta 7 * 256 + 123 = 1915 . Os dois números no final são os 8 bits mais altos e mais baixos do número da porta de 16 bits.
No entanto, com o FTP Ativo, o servidor se conectará ao cliente. Isso não é adequado para clientes por trás de firewalls ou roteadores NAT. Com o FTP passivo, é o oposto: o cliente abre conexões adicionais ao servidor. Assim, o FTP passivo é agora o padrão de fato. Mas com o FTP passivo, o cliente não pode decidir em qual porta usar:
...
PASV
227 Entering Passive Mode (192,168,0,3,7,123).
LIST
...
Agora, o cliente precisa iniciar a conexão com o endereço IP e a porta indicados na resposta do servidor ( 227 Entering ...
). Embora ainda seja problemático com firewalls, porque não é uma porta "conhecida", ele é totalmente compatível com roteadores NAT sem os auxiliares de FTP.
tl; dr : somente com FTP ativo. O FTP ativo não funcionará.
Atualizar
Agora que está claro que essa questão é sobre ftp.exe
, a explicação acima é praticamente irrelevante, pois ftp.exe
suporta apenas FTP ativo. No entanto, o comportamento de ftp.exe
não pode ser controlado / modificado. Um cliente FTP diferente é necessário.
A maioria dos clientes não suporta a configuração ou o controle do intervalo de portas de dados. Excerto do manual do WinSCP :
As WinSCP does not allow configuring a range of the ports it uses for data connections, all ports in Windows dynamic port range 49152 - 655354) have to be opened.
Você pode reconsiderar toda a sua abordagem para transferir arquivos. O FTP é simplesmente desatualizado. Usar um protocolo de porta única (SFTP, HTTP, ...) para transferir o arquivo pode ser uma maneira melhor.