iptables 新连接与 --syn

iptables 新连接与 --syn

以下两者有何区别:

iptables ... -m state --state NEW

iptables ... --syn

第一个应该选择新连接,但据我所知,新连接是通过发送 TCP syn 标志来建立的。另一个的意思就是 - 带有 syn 标志的数据包。

当上述命令返回不同结果时,您能给出任何实际的例子吗?

答案1

--syn标志对于检查 TCP 流量很有用,但NEW状态可用于其他协议(包括TCP),如UDPICMP。我可以说这比TCP 选项NEW更通用。--syn

从 iptables 手册中,你可以读到:

NEW    meaning that the packet has started a new connection,
       or otherwise associated with a connection which has not seen packets in both directions

举个例子,一个DNS请求会匹配NEW状态,但是它不会匹配带有--syn选项的规则。简单来说,它是一个UDP数据报。

此外,该--syn选项还可用于检查具有不良标志组合的 TCP 数据包并丢弃它们。

另外,您可以同时使用这两个选项来检查NEW没有第一个数据包的 TCP 流--syn并丢弃它们,例如:

$ sudo iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"

bad_tcp_packets在这里,我们将这些类型的数据包添加到名为“被丢弃/记录”等的用户定义链中...

答案2

另外一点。--syn可以在表中使用raw,但--new不能(因为在原始表中对数据包进行分类还为时过早)。

相关内容