Ftp
HaProxy 1.5.8 到 FTP 伺服器
我已經經歷過幾次,並且完全陷入了配置這個問題。目前,我為 FTP 伺服器設置了這個:
本地 PC(我的 MAC)-> AWS EC2(HaProxy)-> FTP 伺服器
到目前為止,我做了一些事情:
- 已確認埠 20/21 在安全組中打開
- 在 SG 中配置 TCP 埠打開(對於被動埠)。
- 通過 netstat 確認打開了相應的埠(作為健全性檢查,我讓 HaProxy 綁定到 0-65535 TCP 埠(SG 相同)。
- 嘗試通過代理連接到 FTP 伺服器時執行 TCPDump
這是我的 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
當我執行 tcpdump 時,我得到:
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
我在 HaProxy 上配置了日誌記錄,目前有這個(不確定這是否有幫助):
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
我可以連接到 FTP 伺服器並 cd 到目錄。我不能在那裡執行 ls/put/get 。當我嘗試被動模式時,我得到:
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
在活動模式下執行:
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
我不認為這是一個問題,尤其是 FTP 伺服器,因為我可以通過代理連接到它。即使我直接連接到 FTP 伺服器,我也可以在主動和被動模式下執行命令。我的問題是:
- 我還能研究什麼可以進一步解決這個問題?
- 是否有任何進一步的日誌記錄配置可以增強除我目前擁有的任何類型的 TCP 請求的日誌記錄?
- 我在 HaProxy 中是否缺少配置方面的東西(我知道 HaProxy 本身就是一個 HTTP 負載平衡器,但我查找了足夠多的範例,我可以將其配置為用作 FTP 伺服器的代理,但我無法將 FTP 伺服器重新配置為作為 SFTP 執行)?
在與我的同事對此進行了大量研究和調查後,這就是正在發生的事情:
- HaProxy 可能是一個可行的解決方案。但是,FTP 伺服器被配置為強制被動模式。HaProxy 可用於代理 FTP 連接,但沒有真正的方法將其配置為對被動連接做出相應的反應。結果,我無法執行 ls/get/put(甚至可能更多)命令!
我的解決方案是去 ftp-proxy 並配置它。一旦我將 ftp-proxy 配置為將流量路由到 FTP 伺服器(同時將其配置為偵聽被動連接),VIOLA!有效!!