![如何使用 iptables 将本地计算机上的一个端口重定向到另一个端口?](https://linux22.com/image/517280/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20iptables%20%E5%B0%86%E6%9C%AC%E5%9C%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8A%E7%9A%84%E4%B8%80%E4%B8%AA%E7%AB%AF%E5%8F%A3%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%AB%AF%E5%8F%A3%EF%BC%9F.png)
我能找到的所有端口转发示例都是针对 NAT 的,这不是我想要的。我们有一个 HTTP 服务器应用程序,它一次只能绑定到 1 个端口。但是,我们需要绑定到其他端口以绕过愚蠢的公司防火墙。例如,如果我的 http 服务器正在监听 1234,我们如何将 4321 也转发到此端口?服务器是 debian,我相信我们可以使用 iptables 来实现这一点。
答案1
嗯,我猜只需编写一条 DNAT 规则即可:
/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 -d xxx.xxx.xxx.xxx
--dport 4321 -j DNAT --to 127.0.0.1:1234
由于它位于预路由链中,因此它应该不会受到路由的干扰。但这似乎是一种非常复杂的解决问题的方法。
相反,为什么不直接告诉 HTTP 服务器绑定到两个端口呢?由于您使用的是 Debian,我假设您使用的是 Apache。然后只需在 httpd.conf 中添加两个 Listen 指令:
Listen 1234
Listen 4321
请注意,在两个端口上提供相同的内容将不起作用,因为您必须根据用户所连接的端口更改所有 URL,否则所有链接都将被破坏......