在 iptables 上下文中,要匹配新的 TCP 连接,可以使用:
-A INPUT -p tcp --syn -m conntrack --ctstate NEW -j ACCEPT
但是,--ctstate NEW
只要--syn
flag已经存在,还有必要吗?换句话说,--syn
根据定义,数据包不是总是新的吗?因此,状态检查是多余的,或者这样做有什么好处吗?数据包可以--syn
不是新的吗?
我读过很多例子,有时,状态检查被删除,但在其他(大多数)文本中它仍然存在。另外,我发现了这些相关问题,但无法找出我的具体问题的准确答案:
https://serverfault.com/q/338553
多谢。
答案1
我总是发现--syn
和--ctstate NEW
都是多余的,因为我将-m state --state INVALID -j DROP
所有相关链作为第一条规则。
想法是也许您想成为一个纯粹主义者并严格遵循 TCP/IP 堆栈,这意味着必须只有一个新连接--syn
,即您不能在已建立的连接内发送 SYN 数据包,因为要终止它您必须使用FIN
。