被动 ftp 在 nat 后面不起作用

被动 ftp 在 nat 后面不起作用

我有一个大问题。让我解释一下。我配置了两台机器,一台称为“fw”,即防火墙,另一台连接到这台称为“服务器”的机器,两台都是 Debian 10 buster 系统。fw 机器使用 iptables 来伪装 IP。“公共 IP”:88.20.100.2,本地范围:192.168.150.0/24

这是我的 FTP 服务器 vsftpd 的配置,具有被动模式

pasv_enable=Yes
pasv_max_port=2000
pasv_min_port=1000
pasv_address=88.20.100.2

没有什么特别的。如果我在防火墙上启用了这个 iptables,它就可以工作(enp0s9 = internet,enp0s3 = LAN)

iptables -P FORWARD DROP
iptables -A FORWARD -p tcp --dport 21 -i enp0s9 -o enp0s3 -d 192.168.150.98 -j ACCEPT
iptables -A FORWARD -p tcp --sport 21 -i enp0s3 -o enp0s9 -s 192.168.150.98 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1000:2000 -d 192.168.150.98 -i enp0s9 -o enp0s3 -j ACCEPT
iptables -A FORWARD -p tcp --sport 1000:2000 -s 192.168.150.98 -i enp0s3 -o enp0s9 -j ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o enp0s9 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 21 -j DNAT --to-destination 192.168.150.98:21
iptables -t nat -A PREROUTING -p tcp --destination-port 1000:2000 -j DNAT --to-destination 192.168.150.98

我的问题是,我希望仅当连接与 FTP 服务器相关时才能够打开 1000:2000 端口,但并非总是如此。我尝试使用 -m state 和 -m conntrack,但我想我做错了什么。有什么想法吗?谢谢

相关内容