私有子网中处于被动模式的 FTP 服务器

私有子网中处于被动模式的 FTP 服务器

我有以下配置:

FTP 客户端 (公共 IP1) => 互联网 => 防火墙 (公共 IP2) => FTP 服务器 ( 10.10.12.171)

我有以下 iptables 规则Firewall

DNAT        tcp  --  0.0.0.0/0      Public_IP2  tcp dpt:21 to:10.10.12.171
MASQUERADE  all  --  10.0.0.0/8     0.0.0.0/0

我也nf_conntrack_ftp加载了Firewall

nf_conntrack_ftp       13057  0 
nf_conntrack           79944  6 nf_conntrack_ftp,nf_conntrack_ipv4,nf_nat,iptable_nat,vzcpt,vzrst

在主动模式下,一切都运行正常。在被动模式下,我遇到了以下错误(在客户端):

ftp> passive
Passive mode on.
ftp> dir
227 Entering Passive Mode (10,10,12,171,86,26)
ftp: connect: No route to host

我猜客户端倾向于连接到我的私有 IP(10.10.12.171)。如何更改它?

答案1

您的 ftp 服务器应该已配置,因为它位于 NAT 后面。您没有说明您使用的是哪种 ftp 服务器软件,因此我将提供 proFTPd 所需的配置指令示例:

# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
MasqueradeAddress       Public_IP2

答案2

存在两种解决方案:

  1. 正如@andrii-kupchanko 所说,您可以更改 ftp 服务器配置。这会强制服务器将外部 IP(Public_IP2)作为被动反向连接的 IP 发送给客户端。缺点是需要将被动连接转发回私有子网驻留 FTP 服务器(通过 iptables)并静态绑定被动连接使用的端口

  2. 您只需要两个模块nf_conntrack_ftpnf_nat_ftp。缺少第二个模块是网关后面的服务器被动连接不起作用的原因。

相关内容