IPTABLES 如何将端口从 21 转发到 2100

IPTABLES 如何将端口从 21 转发到 2100

我有一个脚本,可以在另一台服务器上通过 FTP 发布文件,但是该脚本只允许您使用端口 21。在目标服务器上,唯一的 FTP 端口是 2100。

是否可以在源服务器上使用 IPTABLES 将端口 21 上的输出连接转发到 2100?

这样,在源服务器上运行的脚本将尝试在端口 21 上使用 FTP,IPTABLES 将其转发到端口 2100,目标服务器将接受。

如果可能的话,该规则只适用于特定的目标 IP 吗?

感谢。

答案1

您必须使用 nat 重定向

例子:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

答案2

虽然理论上可以使用 iptables 来实现,但我不建议这样做。这样做可能带来的麻烦比解决的麻烦还多。

我的建议是,按照偏好的顺序排列:

  1. 如果可以,请摆脱 ftp。它是一种古老且不安全的协议,最好用 sftp(通常使用端口 22/tcp)或至少用 ftps(带 ssl 的 ftp)代替。

  2. 在 ftp 服务器上使用标准端口。很少有理由更改服务的默认端口,除非同一台服务器托管多个 ftp 服务器实例。

  3. 修改脚本以连接到此特定服务器上的端口 2100。大多数 ftp 客户端允许您指定目标端口。

  4. 如果以上方法都不可行,您可以使用如下 iptables DNAT 命令(将 1.2.3.4 替换为 FTP 服务器的 IP):

    iptables -t nat -A OUTPUT -d 1.2.3.4 -p tcp -m tcp --dport 21 -j DNAT --to-destination 1.2.3.4:2100

请注意,FTP 被动模式在端口 22/tcp 上使用反向连接,这当然不能只使用此 iptables 规则。

相关内容