我能找到的所有端口转发示例都是针对 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,否则所有链接都将被破坏......