Este é o meu entendimento do seu cenário:
- Você tem Máquina A em Sua rede com um servidor FTP e um cliente FTP ;
- Você deseja extrair arquivos da Máquina B que está na Rede do cliente ;
- Existe um firewall em sua rede e possivelmente na rede do cliente ;
- Você usará o cliente FTP para enviar e receber arquivos da Máquina B .
OFTPfuncionaemdoismodos:
-ModoAtivo-
NomodoativoFTP,oclienteconectadeumaportaaleatóriasemprivilégios(N>1023)àportadecomandodoservidorFTP,porta21.Emseguida,oclientecomeçaaescutarportaN+1eenviaocomandoFTPPORTN+1paraoservidorFTP.Oservidoriráseconectardevoltaàportadedadosespecificadadocliente(...)
Exemplo:
- OclienteFTPnamáquina"A" conecta-se ao servidor FTP na máquina "B" na porta 21;
- A máquina "A" envia "ls" para a máquina "B" , mas como é o modo ativo, o resultado de "ls" será entregue na porta N + 1 ( N > 1023) da máquina "A" ;
- Isso falha porque o cliente FTP na máquina "A" solicita que a máquina "B" conecte-se a um IP privado. Mesmo que o IP seja público, as portas N + 1 devem estar abertas no firewall.
- Modo passivo -
No modo passivo FTP, o cliente inicia ambas as conexões com o servidor, resolvendo o problema de firewalls que filtram a conexão da porta de dados de entrada para o cliente do servidor. Ao abrir uma conexão FTP, o cliente abre duas portas aleatórias não privilegiadas localmente (N > 1023 e N + 1). A primeira porta entra em contato com o servidor na porta 21, mas em vez de emitir um comando PORT e permitir que o servidor se conecte novamente à porta de dados, o cliente emitirá o comando PASV. O resultado disso é que o servidor abre uma porta aleatória sem privilégios (P > 1023) e envia P de volta ao cliente em resposta ao comando PASV. O cliente então inicia a conexão da porta N + 1 para a porta P no servidor para transferir dados. (...)
Exemplo:
- O cliente FTP na máquina "A" conecta-se ao servidor FTP na máquina "B" na porta 21;
- A máquina "A" envia "ls" para a máquina "B" ;
- Desta vez, o resultado não será entregue na porta N + 1 da máquina "A" . Em vez disso, a máquina "B" informa à máquina "A" que o resultado está esperando para ser buscado em um determinado IP e porta da máquina "B"
- Isso falha quando esse IP é privado e a porta não está aberta no firewall do cliente. É por isso que o cliente deve configurar seu servidor FTP para usar um IP público e uma porta conhecida ( veja a resposta do Cubiq ).
Estas são as soluções que você tem:
- Usando o Modo Ativo (considerando que a máquina "A" possui o IP 175.41.135.142): Logo após a conexão e autenticação, execute este comando: PORT 175,41,135,142,14,178 Você precisará abrir a porta 3762 no seu firewall. O , 14.178 vem da conversão de octetos em decimal ((14 * 256) + 178).
- Usando o Modo Passivo: Para este método funcionar, o cliente deve ter uma configuração como a resposta do Cubiq. Logo após a conexão e autenticação, execute este comando: passive
Agora você deve poder "ls".
Você pode ler mais sobre como o FTP funciona aqui: link
Esta página também é útil para entender os modos de FTP: link