我需要将已建立的 TCP 连接从一个端口重新路由到另一个端口。端口 8080 上的连接需要重新路由到 8180。
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 8180
是否对新连接进行重新路由。但已建立的连接仍停留在端口 8080 上。是否可以即时重新路由?如果不行,我该如何切断连接以强制重新连接到重定向端口?
同样,当删除重定向时,是否可以强制将连接返回到原始端口(8080)?
答案1
不会,它们不会在已建立的连接上被动态重新路由。iptables 中的 NAT 表使用 conntrack 来跟踪已建立的连接,因此它们不需要再次进行 NAT。实际上,连接跟踪使 Linux netfilter 成为“有状态”防火墙。它存储所有连接(源 IP、目标 IP、协议、端口号、连接状态等)。
为了强制已建立的连接重新连接到不同的端口,您可以简单地拒绝DROP
发往旧端口的流量。
连接跟踪是 NAT 的基础,如这一页iptables 文档。