NF_INET_PRE_ROUTING 和 NF_INET_POST_ROUTING 之间的区别

Difference between NF_INET_PRE_ROUTING and NF_INET_POST_ROUTING

我找不到这两个标志的详细解释。我发现的只是一个简短的描述。谁能解释每个标志以及它们之间的区别?如果我使用 NF_INET_PRE_ROUTING 或 NF_INET_POST_ROUTING 注册,我的挂钩函数何时被调用?通过测试,我知道如果我使用一个标志而不是另一个标志,tcphdr 源和目标会翻转。

This image and this documentation 应该有点帮助。

NF_INET_PRE_ROUTING挂钩在数据包被传递到内部路由引擎之前在网络层被调用,内部路由引擎决定是将数据包转发到另一台主机还是在本地传递。相反,NF_INET_POST_ROUTING 挂钩在路由引擎确定数据包发往另​​一台主机后被调用。请注意,POST_ROUTING 挂钩将被调用,用于在一个接口和另一个接口转发的数据包以及从本地计算机到外部主机的数据包。