为了负载平衡的目的,偶尔我们的服务器将请求转发到不同的端口; 我们服务的默认端口是5000端口。
这是使用的代码:iptables -t nat -A PREROUTING -p tcp –dport 5000 -j REDIRECT – 到端口5001
应用此代码后,端口转发对于新的请求非常有用。
端口5000上的新请求通过端口5001转发到我们的服务。但是,现有连接保持连接到端口5000,如netstat所示。
我的问题是,我该如何强制这个iptables规则立即适用于所有连接,无论是新的和现有(build立) – 没有首先丢弃所有连接?
提前致谢
现有的连接保持连接,因为iptables NAT跟踪连接的状态 – 也就是“有状态的”。
iptables工具不会让你修改现有连接的状态。 即使你可以以某种方式修改iptables NAT连接跟踪表中现有的连接,你将如何提醒远程客户端改变他们正在与之通信的端口? 这是蹭 – TCP协议没有function告诉远程客户端“改变到端口号###”。 这不是协议的一部分(因为不是没有理由让iptables让你做你想要的东西)。