iptables,-m state 和 -m conntrack 有什么区别?

iptables,-m state 和 -m conntrack 有什么区别?

以下两者之间有何实际区别:

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

哪一个最好用?

谢谢。

答案1

两者底层都使用相同的内核内部结构(连接跟踪子系统)。

xt_conntrack.c的头文件:

xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)

所以我想说 -- 状态模块更简单(可能更不容易出错)。它在内核中也更长。另一方面,Conntrack 有更多选项和功能[1]。

我的建议是,如果您需要它的功能,就使用 conntrack,否则坚持使用状态模块。

关于 netfilter 邮件列表的类似问题。

[1] 非常有用,例如“-m conntrack --ctstate DNAT -j MASQUERADE”路由/DNAT 修复;-)

答案2

这两条规则的结果没有区别。两个匹配扩展都使用相同的数据来匹配连接跟踪状态。state 是“旧”匹配扩展,而 conntrack 较新,并且除了匹配连接跟踪状态之外还有更多选项。

答案3

Iptables 文档

正如文档所说:

conntrack 匹配是状态匹配的扩展版本,它使以更精细的方式匹配数据包成为可能。它让您可以直接查看连接跟踪系统中可用的信息,而无需任何“前端”系统(例如状态匹配)。有关连接跟踪系统的更多信息,请参阅状态机章节。

相关内容