iptables
. 我浏览了 Iptables 的手册并了解了一些基本概念,例如链、表、钩子、规则和目标。在 Linux 生态系统中,iptables 是一个广泛使用的防火墙工具,它与内核的 netfilter 包过滤框架接口。route table
. 在 Linux 中,还有另一个表route table
。
我试图弄清楚它们之间的关系并将它们放在一张大图中。
这是一个很好的图表来显示 iptables 的流程,有两个route
阶段。在哪一步,内核会利用“路由表”吗?
参考
- DigitalOcean:深入了解 Iptables 和 Netfilter 架构
- 我读过这个问题“ StackOverflow:iptables vs route 有什么区别? ”,但它没有回答我的问题。
iptables 根据数据包内容或数据包寻址决定如何使用以下一项或多项操作来响应数据包:
如您的图表所示,适当的 iptables(蓝色)可以在每个路由步骤之前和之后参与。
路由表完全根据包头中的地址决定数据包的去向:
转发可能需要更多解释。当一个 linux 机器启用了转发功能时,它就像一个路由器。通常,这意味着它有多个网络接口,它可能会接收到不是发往本地系统的数据包,而是发往与接收它的接口不同的接口上的网络。在以太网中,每个数据包都有一个以太网 (LAN) 地址和一个用于源和目标的 IP 地址。通过将路由器的以太网地址和 WAN IP 地址放入相应的目标地址,您可以将数据包发送到 WAN 地址。然后路由器(可能是另一个 linux 机器)将通过其路由表运行该数据包并确定将其发送到的下一个网络。
在两个“路线”步骤中。一种用于传入数据包,一种用于从本地应用程序创建的数据包。
请注意,iptables 和路由适用于两个完全不同的概念:路由回答“这个数据包应该发送到哪里?”的问题,而 iptables 回答“我需要过滤或以某种方式特别处理这个数据包吗?”的问题。
虽然您可以滥用过滤过程来强制将数据包传送到某个地方,但这不是初衷,但互联网上太多的人认为他们必须以某种方式这样做。(对不起,咆哮,这是我最讨厌的事情之一)。