iptables表和链是如何遍历的

iptables表和链是如何遍历的

我知道linux有3个内置表,每个表都有自己的链,如下所示:

筛选:预布线、转发、后布线

网络地址转换:预布线、输入、输出、后布线

曼乐:预布线、输入、转发、输出、后布线

但我不明白它们是如何遍历的,按什么顺序,如果有的话。例如,在以下情况下如何遍历它们:

  1. 我向同一本地网络中的电脑发送一个数据包
  2. 当我向不同网络中的电脑发送数据包时
  3. 当网关收到数据包并且必须转发它时
  4. 当我收到寄给我的包裹时
  5. 任何其他情况(如有)

答案1

维基百科有一个很棒的图表显示处理顺序。

有关更多详细信息,您还可以查看 iptables 文档,特别是表链遍历章节。其中还包括一个流程图

顺序的变化取决于 netfilter 的使用方式(作为网桥或网络过滤器以及它是否与应用层交互)。

一般来说(尽管上面链接的章节中有更多细节)链的处理方式如下:

  • 将 INPUT 链视为“从外部入站的流量”这位主持人”。
  • 将 FORWARD 链视为“使用该主机作为路由器的流量”(源和目标是不是本主机)。
  • 将 OUTPUT 链视为“流量主人要发出去”。
  • PREROUTING / POSTROUTING 对于每种表类型都有不同的用途(例如,对于 nat 表,PREROUTING 用于入站(路由/转发)SNAT 流量,POSTROUTING 用于出站(路由/转发)DNAT 流量。有关更多信息,请参阅文档具体细节。

各种表是:

  • Mangle 是在遍历时更改数据包(服务类型、生存时间等)。
  • Nat就是放入NAT规则。
  • Raw 用于标记和连接跟踪。
  • Filter用于过滤数据包。

因此,对于您的五个场景:

  1. 如果发送主机是带有 iptables 的主机,则 OUTPUT
  2. 与上面相同
  3. FORWARD 链(前提是网关是带有 iptables 的主机)
  4. 如果“me”是具有 iptables 的主机,则 INPUT
  5. 查看上面的链式规则(这是一般经验法则)和流程图(这也因情况而异)什么您正在尝试使用 IPTables 来实现)

答案2

Fwiw,我已经适应了菲尔·哈根的流程图(正如 @slm 在之前的回答中提到的)下面的 ASCII 流程图。

network  ->  PREROUTING  ->  routing  ->  INPUT  ------->  process
               raw           decision       mangle
               (conntrack)   |              filter
               mangle        |              security
               nat(*)        |              nat
                             V
                             FORWARD  ----\
                              mangle      |
                              filter      |
                              security    |
                                          V
process  ->  OUTPUT  ------------------>  POSTROUTING  ->  network
               (routing decision??)         mangle
               raw                          nat(*)
               (conntrack)
               mangle
               nat
               (output interface assigned here?)
               filter
               security

(*)  Certain localhost packets skip the PREROUTING and POSTROUTING nat
     chains.  See the post and diagram by Phil Hagen for details.

欢迎评论、建议和更正,因为我当然不是iptablesNetfilter 方面的专家。

相关内容