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

Bou*_*rne 49 iptables

两者之间的实际区别是什么:

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

最好使用哪一种?

谢谢你。

kup*_*son 26

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

xt_conntrack.c 的标题:

xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)
Run Code Online (Sandbox Code Playgroud)

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

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

netfilter 邮件列表上的类似问题。

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


lsm*_*oth 8

这两个规则的结果没有区别。两个匹配扩展使用相同的数据来匹配连接跟踪状态。state 是“旧的”匹配扩展,而 conntrack 是新的,并且比仅仅匹配连接跟踪状态有更多的选择。