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

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

我有一个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。我可以直接从我的Host向发送 FTP 请求honeypot,并且连接已建立。现在我想向发送 FTP 请求,Guest并将这些请求转发到我的。我在上honeypot设置了这些规则:iptablesGuest

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

但我无法获得期望的结果。我该怎么办?

笔记:当honeypot运行时,我可以ping从 执行它Host,但无法ping从 执行它Guest,结果是:

Destination Host Unreachable

我错在哪儿?

答案1

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

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

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

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

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

相关内容