iptables:理解其表和链背后的原理

iptables:理解其表和链背后的原理

我正在经历iptables 教程目前在第六章 表和链的遍历

我很难理解为什么参见上一章中表 6-1、表 6-2 和表 6-3。

问题:

  1. 有没有更好的书籍或在线资源可以找到更好的解释?

  2. 我是否应该死记硬背/记住这些表格中涵盖的各个步骤?

  3. 上面的教程似乎已经是很多年前的了。iptables里面说的一切都还 100% 有效吗?iptables我的系统上安装的版本是1.4.14

所有这些问题的出现主要是因为我到目前为止“感觉”也许应该iptables做的就是给我们提供一个最低限度一组挂钩点(例如,路由前和路由后挂钩),以及执行以下任务的能力随意的数据包处理(以我们认为合适的任何顺序和任意次数 - 自定义状态机),而不是像上表那样规定详细的步骤顺序。例如,在表 6-3 后面的图中,为什么“过滤输入”步骤应该只在“混淆输入”之后,而不是之前?而且,为什么不在之前和之后都出现?等等。

答案1

有没有更好的书籍或在线资源?

可能吗?很可能?有大量的在线和离线资源可用于学习 Linux 和 iptables。维基百科有一个很好的概述。以下是其他使用和管理指南。这里是其他指南包含与 FrozenTux 相同的信息,但略有改写。

我是否应该死记硬背各个步骤

那要看情况。你学习的目的是什么?

需要为了使用 iptables 而记住所有内容?不。筛选如果您未定义任何其他表,则默认为。如果您想充分利用 iptables,这会有帮助吗?当然。

仍然有效?

是的。

为什么“过滤输入”步骤只能在“混淆输入”之后进行,而不是在之前?为什么不同时在之前和之后进行?

关键是表 6.1 第 8 行和第 9 行中的描述。本质上,您希望在实际过滤数据包之前决定是否改变(又称破坏)数据包。

这就是为什么首先命中 mangle 输入链,然后是 filter 输入链。

同样,步骤的顺序也很重要,因为数据包是传入到机器(即运行 iptables 的机器)。在数据包已被路由并传出后,您无法对数据包做出“输入”或传入决定。

您会注意到,表 6.3 不是表 6.2 的延续,相反,它们在第 7 行(路由决策)之前是相似的,然后第 8 行是不同的路径或分叉。表 6.2 适用于同一网络内的数据包。表 6.3 适用于网络外的数据包。

记住 7 层 OSI 模型很重要。每一位数据都会被打包并重新打包成各种段、数据包和帧。每个网络“跳跃”都是操纵和重写任何特定段、数据包或帧的另一个机会。

iptables 对重新打包提供了非常精细的控制。您可以针对传入数据包、传出数据包、仅适用于您的网络而不适用于其他网络的数据包(反之亦然)、您的设备、不适用于您的设备等编写规则。并且您可以更改所有这些帧的各种标头。**

** 我知道我随意混合了“帧”、“段”和“数据包”。抱歉,我真的不应该。除非我试图说明某个观点或进行特定的网络分析,否则我总是这样做。

相关内容