如何更改 haproxy 作为备用代理工作的 ftp 被动模式 ip 地址?

如何更改 haproxy 作为备用代理工作的 ftp 被动模式 ip 地址?

我在局域网中有一个 ftp 服务器,地址是 192.168.1.11 我使用 haproxy 是因为很多其他服务需要它

我把 haproxy 放在我的 192.168.1.1 上,与我们的软路由(ubuntu 14.04)同一台机器上

我的 haproxy 配置是:

frontend ao3-ftp
bind ftp.ao3.com.au:21
bind ftp.ao3.com.au:20
bind ftp.ao3.com.au:5000-5100
default_backend myftp

 backend myftp 
server server1 192.168.1.11

客户端使用ftp服务时发现内部ip地址无法连接的问题:

Status: Connected, waiting for welcome message...
Reply: 220-FileZilla Server version 0.9.41 beta
Reply: 220 Hi welcome to Ao3 ftp Server
Reply: 200 Don't care
Command: USER ingram
Reply: 331 Password required for ingram
Command: PASS ***********
Reply: 230 Logged on
Command: SYST
Reply: 215 UNIX emulated by FileZilla
Command: FEAT
Reply: 211-Features:
Reply: MDTM
Reply: REST STREAM
Reply: SIZE
Reply: MLST type*;size*;modify*
Reply: MLSD
Reply: UTF8
Reply: CLNT
Reply: MFMT
Reply: 211 End
Command: PWD
Reply: 257 "/" is current directory.
Status: Current path is /
Command: TYPE I
Reply: 200 Type set to I
Command: PASV
Reply: 227 Entering Passive Mode (192,168,1,11,19,144) ---here the problem
Error: Server returned unroutable private IP address in PASV reply

您可以看到 IP 地址仍然是我的内部网络 IP 地址,因此外部公司客户端无法传输数据,因为它找不到此 IP 地址。haproxy 是否提供了某种方法来将其内部 IP 地址更改为外部 IP 地址?iptables 可以做到这一点吗?

答案1

只需让 FileZilla FTP 服务器公布 HA-proxy 使用的正确外部 IP 地址即可配置在选项 --> 被动模式设置中

通常,Linux 内核使用辅助模块扫描明文 FTP 命令通道以获取 PASV 响应,以动态地将其更改为正确的 NAT 响应和/或在 iptables 中动态打开相关的网络端口,但我不知道 HA-proxy 是否有这样的 FTP 协议助手。

相关内容