Como usar IP específico com vsftpd?

0

Aqui está o cenário:

  • Temos um servidor de servidores AWS Ubuntu
  • Este servidor está funcionando como cliente ftp
  • Agora, quando tentamos nos conectar ao servidor ftp das empresas XYZ usando esse servidor da AWS como cliente, ele está enviando o IP da LAN local enquanto se conecta ao servidor ftp, porque a listagem de diretórios não funciona.
  • O log mostra que estamos conectados ao servidor de FTP, pois estamos autenticados corretamente ... a listagem de portas é bem-sucedida, e apenas a listagem de diretórios falha.
  • podemos fornecer IP específico no FTP usando o filezilla, que ele usará ao sair do gateway.
  • aqui não podemos usar isso porque não tem GUI & amp; vai ser usado por um script php.
  • Esse problema também estava lá no Windows e resolvemos isso dando um IP elástico ao FileZilla. antes da solução que usamos para receber o erro & amp; log mostrou como Este. este ponto é adicionado apenas para lhe dar mais detalhes. & amp; é o mesmo problema com o Ubuntu & amp; queremos dar um IP elástico em algum lugar no ftp para que ele comece a funcionar ... esperamos pelo menos. ;)

Atualizações recentes

  • por favor clique aqui para o arquivo vsftpd.conf.
  • pouco mais de esclarecimento:

    Neste caso, a máquina "A" é o nosso servidor FTP (que é o servidor AWS Ubuntu) para uso interno, devido ao lote de outros processos e dados que são regularmente carregados neste servidor FTP (Máquina "A") & amp; A máquina "B" é o servidor FTP do nosso cliente que eles usam para seus propósitos internos. Agora precisamos extrair alguns dados dos nossos clientes do Servidor FTP (ou seja, a Máquina "B") para o nosso servidor (ou seja, a Máquina "A") e depois processá-los. depois disso, precisamos colocar os dados processados de volta no servidor FTP do cliente (ou seja, na Máquina "B"). é isso que não está funcionando

  • Registra o firewall dos clientes quando tentamos conectar com a máquina "B", conforme mostrado na imagem abaixo.

    
por Hrish 28.05.2013 / 11:43

2 respostas

1

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:

  1. OclienteFTPnamáquina"A" conecta-se ao servidor FTP na máquina "B" na porta 21;
  2. 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" ;
  3. 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:

  1. O cliente FTP na máquina "A" conecta-se ao servidor FTP na máquina "B" na porta 21;
  2. A máquina "A" envia "ls" para a máquina "B" ;
  3. 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"
  4. 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:

  1. 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).
  2. 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

    
por Hugo Vieira 08.10.2013 / 14:58
2

Adicione ao seu vsftpd config (/etc/vsftpd.conf):

pasv_enable=YES
port_enable=YES
pasv_min_port=<port-start>
pasv_max_port=<port-end>
pasv_address=<your-machine-ip>
pasv_addr_resolve=NO

Na configuração de segurança de sua porta de abertura de instância 20-21 para FTP, ative também as portas passivas para o intervalo especificado acima (pasv_min / max_port, por exemplo: 64000-64100).

Reinicie o vsftpd.

Se isso não funcionar, você pode tentar substituir as duas últimas linhas com:

pasv_address=<public-address>
pasv_addr_resolve=YES
    
por Cubiq 22.08.2013 / 14:15