Haproxy
通過 HAProxy 的 FTP
我有一台機器,它是主機,並且安裝了 HAProxy 並且可以正常工作。然後我有一個 Guest KVM 虛擬機在主機內部執行,帶有一個 IP
192.168.122.152
。我用 VSFTPD 在 Guest 機器上安裝了一個 FTP 伺服器。從主機,如果我嘗試命令
$ ftp -p 192.168.122.152
,完美執行,我可以連接到訪客 FTP。我需要注意的是,這個 FTP 被配置為被動的,但是被動和主動連接都在主機上工作。
/etc/vsftpd.conf
這是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
現在是時候讓它從外部訪問了,所以我這樣配置
/etc/haproxy/haproxy.cfg
: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
但是,如果我嘗試從網際網路上的其他機器連接
$ ftp -p $PUBLICIP
,它只會響應:Connected to <PUBLICIP>
,但不會要求輸入登錄名和密碼。HAProxy 配置中的某些內容一定是錯誤的,因為它是唯一失敗的地方。順便說一句,我嘗試在這個部落格中調整我的配置。
謝謝。
我找到了解決方案。看來我必須使用
pasv_address
帶有系統 IP 的指令。我將再次發布我用來使其工作的設置。假設我們的公共 IP 是,這裡我們在 Guest 中
217.130.100.62
有一個摘錄:/etc/vsftpd.conf
# 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
在這裡,
/etc/haproxy/haproxy.cfg
主機中的簡化指令:listen FTP :21,:10000-10250 mode tcp server ftp01 192.168.122.152 check port 21