阅读一些指南后(例如这个)并进行 Iptables 调优,我发现没有理由将 Iptables 的表命名为表。
我的意思是几乎没有桌子。
例如,“表”nat
中基本上有三个链 - PREROUTING
、OUTPUT
和POSTROUTING
,但该表中的这些链没有交集,并且不直接相互跟随。所以从数据包流的观点强调表格的概念根本没有任何意义。
名称“桌子“ (raw
,filter
,nat
,mangle
,security
, ...) 只是代表优先事项链内的规则组以及一些其他属性(例如,nat
规则组每个连接仅工作一次,filter
每个数据包工作等等)。
因此,它不应该是“表包含多个链”,而是类似“链包含具有特定全局优先级(和一些其他公共属性)的规则组”。不是吗?
或者我误解了什么?
答案1
名称表有历史渊源:
- 曾经有简单的规则。
- 然后,出现了 ipchains——规则可以被链接起来。
- 对所有防火墙系统的重大重写产生了一个过滤器,它保留了所有连接的状态表(以及类似连接的想法,例如更新请求和适当的答案)。这就是“表”名称的由来。并且,数据包穿过其中一条路径的过程的不同部分的规则(例如,我们系统的数据包,将被接收)可以被组织成几个规则表(INPUT、FORWARD、OUTPUT、PREROUTING、POSTROUTING)。
这里快速描述了上面总结的历史:https://netfilter.org/about.html#history。