配置 IPTABLES 通过 NAT 进行被动 FTP 连接(使用第二个以太网卡从一台 PC 转发到另一台 PC)

配置 IPTABLES 通过 NAT 进行被动 FTP 连接(使用第二个以太网卡从一台 PC 转发到另一台 PC)

我正在尝试通过另一台使用两个以太网卡的 PC 创建的 NAT 网络连接到 FTP 服务器。我想通过 FTP 客户端通过第一台 PC 访问第二台 PC 的 FTP 服务器。硬件配置如下: 在此输入图像描述

FTP 服务器可以通过标准端口 21 访问,而我使用 1024-1048 端口范围进行被动连接。在没有NAT的本地网络上,FTP服务器可以完美工作。当我使用 iptables 输入 NAT 规则时,我可以连接到端口 21,但无法获取文件和文件夹列表。我使用的 iptables 配置如下:

*filter   
-A FORWARD -d 145.34.67.230/32 -i enp1s0 -o enp2s0 -p tcp -m tcp --dport 21 -j ACCEPT  
-A FORWARD -d 145.34.67.230/32 -i enp1s0 -o enp2s0 -p tcp -m tcp --dport 1024:1048 -j ACCEPT 
COMMIT  
*nat  
-A PREROUTING -i enp1s0 -p tcp -m tcp --dport 21 -j DNAT --to-destination 145.34.67.230:21  
-A PREROUTING -i enp1s0 -p tcp -m tcp --dport 1024:1048 -j DNAT --to-destination 145.34.67.230:1024-1048  
COMMIT

我在尝试连接时使用wireshark扫描网络,发现FTP服务器发送相对于本地网络的地址和端口,如您所见:

在此输入图像描述

我想弄清楚我需要设置什么来纠正来自 FTP 服务器的数据包,以便我的 FTP 客户端可以通过 NAT 正确连接。

我使用的是常规 Ubuntu 22.04。

谢谢您的帮助

相关内容