维基百科上有一个很棒的图表来显示处理顺序。
有关更多详细信息,您还可以查看iptables文档,特别是“ 遍历表和链条”一章。其中还包括流程图。
顺序更改取决于netfilter的使用方式(作为网桥还是网络过滤器,以及它是否与应用程序层交互)。
通常(尽管上面链接的章节中的细节中有更多魔鬼),链条的处理方式如下:
- 看到输入链“来自外部的通信的入站到这台主机”。
- 请参阅FORWARD链作为“使用此主机作为路由器的流量”(源和目标不是此主机)。
- 将输出链视为“ 此主机要发送的流量”。
- PREROUTING / POSTROUTING对每种表类型都有不同的用途(例如,对于nat表,PREROUTING用于入站(路由/转发)SNAT流量,而POSTROUTING用于出站(路由/转发)DNAT流量。有关更多信息,请参阅文档细节。
各个表是:
- Mangle会在遍历时更改数据包(服务类型,生存时间等)。
- Nat是要放入NAT规则。
- Raw将用于标记和连接跟踪。
- 过滤器用于过滤数据包。
因此,对于您的五个方案:
- 如果发送主机的主机带有iptables,则输出
- 和上面一样
- FORWARD链(前提是网关是具有iptables的主机)
- 如果“我”是iptables的主机,则输入
- 看看上面的规则链(这是一般的经验法则)和流程图(这也各不相同的东西,你正在努力实现使用iptables)