iptables内核原理
链遍历顺序
假设服务器知道如何路由数据包,并且防火墙规则允许其传输,则以下流表示在不同情况下将遍历的路径:
- 目的地为本地系统的传入数据包:PREROUTING -> INPUT
- 目的地为另一个主机的传入数据包:PREROUTING -> FORWARD-> POSTROUTING
- 本地生成的数据包:OUTPUT -> POSTROUTING
如果我们将上面的信息与前一个表中列出的顺序结合起来,我们可以看到,将首先根据raw、mangle和nat表的PREROUTING链来评估发送到本地系统的传入包。然后,它将遍历mangle、filter、security和nat表的输入链,最后传递到本地套接字。
Filter 内核模型图
当目的主机是本机时:
当目的主机不是本机时:
- 到本机某进程的报文:PREROUTING --> INPUT
- 由本机转发的报文:PREROUTING --> FORWARD --> POSTROUTING
- 由本机的某进程发出报文(通常为响应报文):OUTPUT --> POSTROUTING`