只需使用netfilter REDIRECT-Target。 我想知道目标端口是如何改变的 当使用“--to-ports”(复数)时。
iptables -I PREROUTING -t nat -i test -p TCP --dport 2800 -j REDIRECT --to-ports 2900-2905
第一场比赛/命中2800 - > 2900?
第二场比赛/命中2800 - > 2901?
第3场比赛/命中2800 - > 2902?
在我的测试中,唯一使用的端口是第一个:2900。 在这种情况下,范围参数“--to-ports”让我感到困惑。 原始端口是否会影响范围内正在使用的端口? 当指定带“--to-ports”的范围时,使用端口 “ - to-port”也有效,但在man-page中没有提到。
感谢。
答案 0 :(得分:1)
netfilter
是无状态的,无法跟踪端口状态,因此无法实现循环法。
此参数旨在解决端口冲突问题,例如检查此规则:
iptables -t nat -A PREROUTING -p tcp --dport 1000:2000 -j REDIRECT --to-ports 2900
如果客户想要建立2个连接
client:3000 <---> server:1000
client:3000 <---> server:1001
这是可能的,因为客户端可以重用其端口。如果服务器将两个连接重定向到端口2900,则会导致问题,这两个连接变得相同。
所以服务器需要多个冗余端口来避免这个问题。但如果客户端不重用其端口,则不会发生这种情况。