我在几个iptables
示例中看到了用于匹配新连接的类似技术:
-A INPUT -p tcp -m tcp --dport 443 --syn -m conntrack --ctstate NEW -j SSH
如上所示,tcp
除了模块之外--ctstate NEW
,conntrack
模块还根据 TCP 标志(SYN 必须为 1 和 RST、ACK 和 FIN 0)检查 TCP 连接。它是否提供了任何优势:
-A INPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW -j SSH
我的假设是它确实如此,因为匹配模块是按照它们在规则中指定的顺序进行评估的,如果没有--syn
,所有到端口 443 的 TCP 数据包都将在tcp
模块之间传递conntrack
。换句话说,--syn
应该提供这种快速失败的范例。
差不多就是这样。在实践中,它是短路的扩展机制;手册页说
在上述情况下,该规则使用两个扩展:处理的
tcp
扩展和处理--dport
的扩展--syn
,其后是conntrack
处理的扩展--ctstate
。如果tcp
扩展名不匹配,conntrack
则将完全跳过扩展名。