我有一台机器,它是主机,并且安装了 HAProxy 并且可以工作。然后我有一个来宾 KVM 虚拟机在具有 IP 的主机内运行192.168.122.152
。我使用 VSFTPD 在来宾计算机上安装了 FTP 服务器。
从主机上,如果我尝试该命令$ ftp -p 192.168.122.152
,工作正常,并且我可以连接到来宾 FTP。我需要指出的是,此 FTP 配置为被动,但被动和主动连接都可以从主机进行工作。
/etc/vsftpd.conf
这是来宾中的部分摘录:
# 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
Run Code Online (Sandbox Code Playgroud)
现在是时候让它可以从外部访问了,所以我/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
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试从互联网上的其他计算机进行连接$ 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
Run Code Online (Sandbox Code Playgroud)
这里是/etc/haproxy/haproxy.cfg
主机中的一个简化指令:
listen FTP :21,:10000-10250
mode tcp
server ftp01 192.168.122.152 check port 21
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
30142 次 |
最近记录: |