NAT表:
这个表应该只用于不同数据包的NAT(网络地址转换)。换句话说,它只应该用于翻译数据包的源字段或目标字段。
过滤表:
过滤表主要用于过滤数据包。我们可以匹配数据包并以任何方式进行过滤。这是我们实际对数据包采取行动的地方,我们查看它们包含的内容,并根据其内容进行丢弃或接受。当然,我们也可以进行先期过滤;然而,这个特定的表就是为了进行过滤而设计的地方。
在表和链的遍历中,我们可以看到过滤器的FORWARD链仅由转发的数据包(从网络进入并离开网络的数据包)进行遍历,也就是说,您的计算机充当路由器,而nat的PREROUTING链则由既转发的数据包又目的地是本地主机的数据包进行遍历。
您应该仅使用nat的PREROUTING来更改数据包的目的地地址,并且仅使用filter的FORWARD来进行过滤(丢弃/接受数据包)。
如果我们收到的数据包不是发送给本地机器自身的,它将通过FORWARD链进行路由。另一方面,如果数据包的目标IP地址是本地机器正在监听的,则会通过INPUT链发送到本地机器。
数据包可能被发送到本地机器,但目标地址可能在PREROUTING链中通过NAT进行更改。由于这发生在第一个路由决策之前,因此在此更改后将对数据包进行查看。因此,在路由决策完成之前,路由可能会发生变化。请注意,所有数据包都将通过此图像中的其中一条路径进行传输。如果您将数据包DNAT回到与其来自的网络相同的网络上,它仍将通过其他链路继续传输,直到返回网络。
- Eric Carvalho11在您提到的图片中,提到了多个位置的路由决策。我认为这些决策与可能是通过ip route定义的路由相关。能否描述一下这三者之间的区别以及每个阶段激活的路由是什么? - SAMPro