在什么情况下 IPv4 conntrack 会丢弃数据包?

在什么情况下 IPv4 conntrack 会丢弃数据包?

我一直认为 IPv4 连接跟踪(又名conntrack)是一个被动模块,它只读取数据包并跟踪它们,所以后来其他模块可以使用收集到的信息来决定相关数据包(例如属于同一 L4 连接的数据包)的命运。

然而,最近我偶然发现了这条评论conntrack评论源代码

“连接跟踪可能会丢弃数据包,但永远不会改变它们,因此请将其作为第一个钩子。”

..这表明它conntrack不仅仅是一个被动的观察者,而且它实际上可以丢弃数据包!

什么情况下会出现这种情况?

答案1

考虑操作顺序。Conntrack 无论如何都需要相对较早。如果它不修改数据包,那就更好了;假设原始数据包必须简化一些事情。

如果连接跟踪失败,除了丢弃未跟踪的数据包,还能做什么呢?自动允许对您的流做出响应的防火墙策略不再起作用。

netfilter FAQ 提到了一些失败的原因,因为 NAT 也可能出现这种情况。我认为对于某些特定工作负载来说,这会很烦人,因为conntrack 不再扩展

相关内容