了解netfilter REDIRECT目标

时间:2013-03-14 12:55:01

标签: linux networking iptables nat netfilter

只需使用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中没有提到。

感谢。

1 个答案:

答案 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,则会导致问题,这两个连接变得相同。

所以服务器需要多个冗余端口来避免这个问题。但如果客户端不重用其端口,则不会发生这种情况。