9.5. 我们可以进行过滤的三种方式

考虑一下一台 Unix 机器,或者实际上任何能够进行 IP 路由的机器,是如何处理 IP 数据报的。基本步骤如图 9-2 所示:

图 9-2. IP 数据报处理的阶段

在我们的图中,流程 1→3→5 表示我们的机器在以太网上的主机与通过 PPP 链路可访问的主机之间路由数据。流程 1→2 和 4→5 表示本地主机上运行的网络程序的数据输入和输出流程。流程 4→3→2 表示通过环回连接的数据流。自然地,数据既流入又流出网络设备。图中的问号表示 IP 层做出路由决策的点。

Linux 内核 IP 防火墙能够在流程的各个阶段应用过滤。也就是说,您可以过滤进入您机器的 IP 数据报,过滤正在您的机器上转发的那些数据报,以及过滤准备传输的那些数据报。

ipfwadmipchains 中,输入规则应用于图中的流程 1,转发规则应用于流程 3,输出规则应用于流程 5。稍后当我们讨论 netfilter 时,我们将看到拦截点已更改,因此输入规则应用于流程 2,输出规则应用于流程 4。这对您如何构建规则集具有重要意义,但一般原则适用于所有版本的 Linux 防火墙。

这乍一看可能显得不必要地复杂,但它提供了灵活性,从而可以构建一些非常复杂和强大的配置。