
Como executar um servidor FTP passivo em uma máquina virtual Azure Linux?
Configurar os pontos de extremidade no firewall do Azure e nas portas PASV não é suficiente porque o cliente trava em "Entrando no modo passivo"
Responder1
Atualmente, executar o FTP passivo tão bem quanto você faria em um servidor dedicado não é possível por dois motivos: um é que o Azure atualmente permite que você abra apenas 25 pontos de extremidade (corrija-me se estiver errado) para cada servidor, e a outra é a conexão LAN<->IP virtual que o Azure usa. Vamos analisar os problemas um por um.
Atualmente, o Azure implementa um NAT/firewall/balanceador de carga que encaminha o tráfego de um IP Virtual externo para um endereço de rede interno ( 10.0.0.0/8
classe). Se você rodar ifconfig
na sua máquina virtual você encontrará do que estou falando. Um endpoint está reservado para SSH e não acredito que você realmente queira desativá-lo. Portanto, se outro endpoint estiver reservado para a porta 21, você poderá usar apenas 23 portas PASV (desde que não hospede nenhum outro serviço), limitando estritamente o número de clientes que podem se conectar simultaneamente. Depois de aceitar isso, vamos em frente.
Se você abriu as portas 25003-25006 (uma por uma), você pode usar a seguinte configuração para habilitá-las
pasv_enable=YES
pasv_min_port=25003
pasv_max_port=25006
vsftpd
e qualquer outro servidor FTP emite um PASV
comando que basicamente diz "conecte-se ao XYWZ na porta AA". Qualquer servidor FTP deve ler a configuração da máquina para obter o endereço de rede: é por isso que o vsftp basicamente diz "conecte-se a 10.XYZ na porta 25003" e, então, porque o cliente trava!!!
Use o seguinte para dizer ao vsftpd para usar um endereço externo diferente
pasv_addr_resolve=YES
pasv_address=dom.cloudapp.net
Testado, trabalhado e compartilhado com a comunidade!
Notas: O FTP ativo funciona assim que o cliente não está protegido por um firewall ou Grande Muralha, e o SFTP é a melhor alternativa ao FTP, mas infelizmente muitos aplicativos legados não o suportam.