HaProxy 1.5.8 para o servidor FTP

2

Eu estive nisso algumas vezes e fiquei completamente preso ao configurar isso. Atualmente, tenho essa configuração para um servidor FTP:

PC local (Meu MAC) - > AWS EC2 (HaProxy) - > Servidor FTP

Aqui estão algumas coisas que fiz até agora:

  1. As portas confirmadas 20/21 estão abertas nos grupos de segurança
  2. Configurado em SGs que as portas TCP estão abertas (para portas passivas).
  3. Confirmado via netstat que as portas apropriadas estão abertas (como uma verificação de sanidade, recebi o HaProxy para ligar às portas TCP 0-65535 (o mesmo para os SGs).
  4. Executou TCPDump ao tentar se conectar ao servidor FTP por meio do proxy

Aqui está uma cópia do meu haproxy.cfg

listen FTP :21, :10000-10250
        mode tcp
        log 127.0.0.1 local0 debug info warning error
        bind *:21
        bind *:20
        server foo xx.xx.xx.xx:21 check port 21

Quando eu executo o tcpdump, recebo:

10:54:11.695983 IP 10.33.x.x.56374 > ec2-54-234-x-x.compute-1.amazonaws.com.ftp: Flags [P.], seq 45:51, ack 684, win 16384, options [nop,nop,TS val 652929632 ecr 148377527], length 6: FTP: EPSV
10:54:11.726462 IP ec2-54-234-x-x.compute-1.amazonaws.com.ftp > 10.33.x.x.56374: Flags [P.], seq 684:726, ack 51, win 227, options [nop,nop,TS val 148377680 ecr 652929632], length 42: FTP: 229 Extended Passive mode OK (|||12612|)
10:54:11.726513 IP 10.33.x.x.56374 > ec2-54-234-x-x.compute-1.amazonaws.com.ftp: Flags [.], ack 726, win 16378, options [nop,nop,TS val 652929662 ecr 148377680], length 0
10:55:27.134823 IP 10.33.x.x.56374 > ec2-54-234-x-x.compute-1.amazonaws.com.ftp: Flags [P.], seq 51:80, ack 726, win 16384, options [nop,nop,TS val 653004663 ecr 148377680], length 29: FTP: EPRT |1|10.33.x.x|56397|
10:55:27.165241 IP ec2-54-234-x-x.compute-1.amazonaws.com.ftp > 10.33.x.x.56374: Flags [P.], seq 726:798, ack 80, win 227, options [nop,nop,TS val 148396540 ecr 653004663], length 72: FTP: 500 I won't open a connection to 50.232.x.x (only to 54.234.x.x)
10:55:27.165287 IP 10.33.x.x.56374 > ec2-54-234-x-x.compute-1.amazonaws.com.ftp: Flags [.], ack 798, win 16375, options [nop,nop,TS val 653004693 ecr 148396540], length 0
10:55:27.165377 IP 10.33.x.x.56374 > ec2-54-234-x-x.compute-1.amazonaws.com.ftp: Flags [P.], seq 80:106, ack 798, win 16384, options [nop,nop,TS val 653004693 ecr 148396540], length 26: FTP: PORT 10,33,x,x,220,77
10:55:27.194982 IP ec2-54-234-x-x.compute-1.amazonaws.com.ftp > 10.33.x.x.56374: Flags [P.], seq 798:870, ack 106, win 227, options [nop,nop,TS val 148396547 ecr 653004693], length 72: FTP: 500 I won't open a connection to 50.232.x.x (only to 54.234.x.x)
10:55:27.195025 IP 10.33.x.x.56374 > ec2-54-234-x-x.compute-1.amazonaws.com.ftp: Flags [.], ack 870, win 16375, options [nop,nop,TS val 653004722 ecr 148396547], length 0
10:55:27.195304 IP 10.33.x.x.56374 > ec2-54-234-x-x.compute-1.amazonaws.com.ftp: Flags [P.], seq 106:112, ack 870, win 16384, options [nop,nop,TS val 653004722 ecr 148396547], length 6: FTP: LIST
10:55:27.224432 IP ec2-54-234-x-x.compute-1.amazonaws.com.ftp > 10.33.x.x.56374: Flags [P.], seq 870:894, ack 112, win 227, options [nop,nop,TS val 148396555 ecr 653004722], length 24: FTP: 425 No data connection
10:55:27.224464 IP 10.33.x.x.56374 > ec2-54-234-x-x.compute-1.amazonaws.com.ftp: Flags [.], ack 894, win 16381, options [nop,nop,TS val 653004751 ecr 148396555], length 0

Eu configurei o registro em HaProxy e atualmente tenho isso (não tenho certeza se isso é útil):

Jun 12 14:49:25 localhost haproxy[18805]: 50.232.x.x:14857 [12/Jun/2017:14:48:24.811] FTP FTP/media 1/14/60772 792 -- 0/0/0/0/0 0/0
Jun 12 14:49:25 localhost haproxy[18805]: 50.232.x.x:14857 [12/Jun/2017:14:48:24.811] FTP FTP/media 1/14/60772 792 -- 0/0/0/0/0 0/0
Jun 12 14:51:48 localhost haproxy[18805]: 50.232.x.x:56254 [12/Jun/2017:14:49:41.820] FTP FTP/media 1/13/127012 960 -- 0/0/0/0/0 0/0
Jun 12 14:51:48 localhost haproxy[18805]: 50.232.x.x:56254 [12/Jun/2017:14:49:41.820] FTP FTP/media 1/13/127012 960 -- 0/0/0/0/0 0/0
Jun 12 14:52:02 localhost haproxy[18805]: 50.232.x.x:56342 [12/Jun/2017:14:51:54.618] FTP FTP/media 1/14/7670 401 -- 1/1/1/1/0 0/0
Jun 12 14:52:02 localhost haproxy[18805]: 50.232.x.x:56342 [12/Jun/2017:14:51:54.618] FTP FTP/media 1/14/7670 401 -- 1/1/1/1/0 0/0
Jun 12 14:53:36 localhost haproxy[18805]: 50.232.x.x:56345 [12/Jun/2017:14:51:59.386] FTP FTP/media 1/19/97481 1032 -- 0/0/0/0/0 0/0
Jun 12 14:53:36 localhost haproxy[18805]: 50.232.x.x:56345 [12/Jun/2017:14:51:59.386] FTP FTP/media 1/19/97481 1032 -- 0/0/0/0/0 0/0
Jun 12 14:53:59 localhost haproxy[18805]: 50.232.x.x:56373 [12/Jun/2017:14:53:37.880] FTP FTP/media 1/14/21641 333 -- 0/0/0/0/0 0/0
Jun 12 14:53:59 localhost haproxy[18805]: 50.232.x.x:56373 [12/Jun/2017:14:53:37.880] FTP FTP/media 1/14/21641 333 -- 0/0/0/0/0 0/0

Eu posso conectar ao servidor FTP e cd aos diretórios. Eu não posso executar um ls / put / get lá embora. Quando eu tento no modo passivo, fico:

ftp> ls
229 Extended Passive mode OK (|||12612|)
ftp: Can't connect to '54.234.x.x': Operation timed out
500 I won't open a connection to 50.232.x.x (only to 54.234.x.x)
425 No data connection

Execução no modo ativo:

Passive mode: off; fallback to active mode: off.
ftp> ls
500 I won't open a connection to 50.232.x.x (only to 54.234.x.x)
425 No data connection

Eu não acredito que isso seja um problema particularmente com os servidores FTP apenas porque eu posso me conectar a ele por meio do proxy. Mesmo quando me conecto diretamente aos servidores FTP, posso executar comandos no modo ativo e passivo. Minhas perguntas são:

  • O que mais eu posso pesquisar para resolver isso ainda mais?
  • Existe alguma configuração adicional de registro que eu possa fazer para aumentar o registro para qualquer tipo de requisição TCP além do que eu tenho atualmente?
  • Há algo de configuração que estou faltando no HaProxy (eu sei que nativamente HaProxy é um balanceador de carga HTTP, mas eu procurei exemplos suficientes onde eu posso configurá-lo para ser usado como um proxy para servidores FTP e não posso reconfigurar o FTP servidores a serem executados como SFTP)?
por ryekayo 12.06.2017 / 17:11

2 respostas

2

Depois de muita pesquisa e algumas investigações com meu colega sobre isso, foi isso que aconteceu:

  • O HaProxy poderia ter sido uma solução viável. Mas, o servidor FTP está configurado para forçar o modo passivo. O HaProxy pode ser usado para conexões FTP de proxy, mas não há uma maneira real de configurá-lo para reagir de acordo com as conexões passivas. Como resultado, não consegui executar os comandos ls / get / put (e provavelmente ainda mais)!

Minha solução foi ir ao ftp-proxy e configurá-lo. Depois que eu configurei o ftp-proxy para direcionar o tráfego para o servidor FTP (enquanto o configuro para ouvir conexões passivas), o VIOLA! Funcionou !!

    
por 12.06.2017 / 20:30
0

Eu também estou tentando fazer a mesma coisa, mas o comando ls está falhando. Abaixo está o que eu configurei no HA Proxy.                 ouça xmldb 10.204.24.71:2100       servidor xmldb1 10.212.22.31:2100 verificar inter 20s       servidor xmldb2 10.212.22.36:2100 check inter 20s

10.212.22.36 e 10.212.22.31 são o servidor de banco de dados em que o servidor ftp está sendo executado. e eles são acessíveis somente a partir do servidor 10.204.24.71, no qual o proxy HA está sendo executado.

Agora eu conecto a partir de outra máquina linux que não é acessível ao servidor DB, mas pode chegar ao Servidor Proxy HA.

Preciso colocar mais algumas configurações para que funcione.

    
por 28.06.2017 / 07:15

Tags