iptables TCP 标志

iptables TCP 标志

我是 iptables 和网络方面的初学者,所以请原谅我提出这样的初学者问题。

我在网上找到了过滤畸形数据包的部分:

/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL SYN -m state --state NEW -j RETURN

但据我所知,第一个(新)数据包应该包含 SYN 标志,并且此规则将阻止新连接?还是我误解了这一点?

应用以下规则后还会发生什么?

/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL RST,ACK,PSH
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL RST,ACK,URG
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL RST,ACK,PSH,URG
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL FIN,PSH,ACK,URG
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL ACK,URG
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL ACK,URG,FIN

如果我是对的,那么就没有任何动作?iptables 将检查上述标志并转到下一个规则,对吗?

答案1

第二个例子没有任何动作,所以除了积累统计数据之外它什么也不做。

iptables -xvn -L tcpchk

ALL SYN 匹配已建立的连接,并将已建立的连接踢出 tcpchk 链,并返回到其父链(可能是 INPUT)。-j 返回将数据包返回给父级。

该规则不会导致故障,因为它实际上不会丢弃或拒绝任何东西。

相关内容