我有一个脚本,可以在另一台服务器上通过 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 来实现,但我不建议这样做。这样做可能带来的麻烦比解决的麻烦还多。
我的建议是,按照偏好的顺序排列:
如果可以,请摆脱 ftp。它是一种古老且不安全的协议,最好用 sftp(通常使用端口 22/tcp)或至少用 ftps(带 ssl 的 ftp)代替。
在 ftp 服务器上使用标准端口。很少有理由更改服务的默认端口,除非同一台服务器托管多个 ftp 服务器实例。
修改脚本以连接到此特定服务器上的端口 2100。大多数 ftp 客户端允许您指定目标端口。
如果以上方法都不可行,您可以使用如下 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 规则。