FTP por meio de HAProxy

3

Eu tenho uma máquina, que é o host e tem o HAProxy instalado e funcionando. Então eu tenho uma máquina virtual Guest KVM rodando dentro do Host com um IP 192.168.122.152 . Eu instalei um servidor FTP na máquina Guest com VSFTPD.

Do Host, se eu tentar o comando $ ftp -p 192.168.122.152 , funciona perfeitamente e posso me conectar ao FTP do Guest. Eu preciso observar que este FTP está configurado como passivo, mas ambas as conexões ativas e passivas estão funcionando a partir do Host.

Este é um extrato de parte de /etc/vsftpd.conf no Guest:

# Passive mode
connect_from_port_20=NO
tcp_wrappers=YES
listen_address=192.168.122.152
pasv_enable=YES
pasv_promiscuous=NO
port_enable=YES
port_promiscuous=NO
pasv_max_port=10000
pasv_min_port=10250

Agora é hora de torná-lo acessível de fora, então eu configuro /etc/haproxy/haproxy.cfg assim:

listen FTP_Default *:21
  server ftp01 192.168.122.152 check port 21 inter 10s rise 1 fall 2

listen FTP_Range *:10000-10250
  server ftp01 192.168.122.152 check port 21 inter 10s rise 1 fall 2

Mas se eu tentar conectar-me a partir de outra máquina na Internet $ ftp -p $PUBLICIP , ele só responderá: Connected to <PUBLICIP> , mas não pedirá o login e a senha.

Algo na configuração do HAProxy deve estar errado, porque é o único ponto em que ele falha. A propósito, tentei adaptar minha configuração para neste blog .

Obrigado.

    
por Menda 24.10.2012 / 12:59

2 respostas

2

Eu descobri a solução. Parece que tive que usar uma diretiva pasv_address com o IP do sistema. Vou postar novamente as configurações que usei para que funcione.

Supondo que nosso IP público seja 217.130.100.62 , aqui temos um extrato de /etc/vsftpd.conf no Guest:

# Passive mode
tcp_wrappers=YES
pasv_address=217.130.100.62
pasv_enable=YES
pasv_promiscuous=NO
port_enable=YES
port_promiscuous=NO
pasv_min_port=10000
pasv_max_port=10250

E aqui, uma diretiva simplificada em /etc/haproxy/haproxy.cfg no host:

listen FTP :21,:10000-10250
    mode tcp
    server ftp01 192.168.122.152 check port 21
    
por 29.10.2012 / 16:25
0

A diretiva simplificada na sua configuração haproxy irá resultar em que todas as portas (21, 10000-10250) serão sempre redirecionadas para a porta 21. Isto lhe dará o seguinte erro: "425 Não é possível abrir a conexão de dados para transferência de ..."

Para corrigir isso, se você não definir uma porta, a porta na qual a solicitação será recebida será redirecionada para o back-end.

ouça o ftp-host01    ligar *: 21    bind *: 10000-10099     modo tcp     server ftp-host01 192.168.1.1 verificar

    
por 15.09.2016 / 16:00

Tags