如何将FTP请求转发到另一个IP?

Thi*_*sMe 7 linux iptables ftp honeypot vmware-workstation

我有一个VMware: 10.10.10.1、一个linux in VMware (Guest): 10.10.10.128和一个honeypot on Guest: 10.10.10.15,还有我的Windows (Host): 192.168.1.11. 我可以直接从我的Hostto发送 FTP 请求honeypot并建立连接。现在我想将 FTP 请求发送Guest到我的honeypot. 我把这些规则iptables放在Guest

iptables -t nat -A PREROUTING -p tcp --dport 21 -j DNAT --to-destination 10.10.10.15:21
iptables -t nat -A POSTROUTING -p tcp -s 10.10.10.15 --sport 21 -j SNAT --to-source 10.10.10.128
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

但我无法得到想要的结果。我能做什么?

注意honeypot运行时,我可以pingHost,但我不能pingGuest,结果是:

Destination Host Unreachable
Run Code Online (Sandbox Code Playgroud)

我的错在哪里?

Max*_*Max 1

如果你想转发 FTP 请求,你不能只转发端口 21。FTP 使用 2 个或更多连接:

  • 1 个连接发送命令,在端口 21 上
  • 由 FTP 服务器确定的可变端口号上的 1 个或多个连接用于传输数据

因此,如果您想要转发 FTP 连接,则需要查看服务器配置以检查 FTP 服务器用于接受客户端连接的端口范围(假设您的客户端以“被动模式”连接到 FTP 服务器)。
因此,您需要转发端口 21 +“被动端口”范围中定义的所有端口。

但这还不够,因为FTP服务器指示FTP客户端联系哪个IP来打开数据传输连接,通常这是服务器IP。
FTP 服务器不知道您用来转发连接的服务器。

所以你还应该告诉你的FTP服务器,他的“公共IP”不是FTP服务器的IP,而是接受(并转发)来自客户端的FTP连接的服务器的IP。