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:
- As portas confirmadas 20/21 estão abertas nos grupos de segurança
- Configurado em SGs que as portas TCP estão abertas (para portas passivas).
- 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).
- 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)?