在防火墙中,用户想要成功进入内网环境,就需要发送请求报文,请求报文要和防火墙设置的各种规则进行匹配和判断,最后执行相应的动作(放行或者拒绝),一个防火墙中通常针对不同的来源设置很多种策略,多个策略形成一个链,其实也可以理解成是分组的概念,在Iptables防火墙中针对不同的链路共分为五种不同的链。
如下图所示,当数据报文进入链之后,首先匹配第一条规则,如果第一条规则通过则访问,如果不匹配,则接着向下匹配,如果链中的所有规则都不匹配,那么就按照链的默认规则处理数据报文的动作。
Iptables有五种不同的链,分别是INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。
请求报文流入本地要经过的链:
请求报文要进入本机的某个应用程序,首先会到达Iptables防火墙的PREROUTING链,然后又PREROUTING链转发到INPUT链,最后转发到所在的应用程序上。
PREROUTING--->INPUT--->PROCESS
请求报文从本机流出要经过的链:
请求报文读取完应用程序要从本机流出,首先要经过Iptables的OUTPUT链,然后转发到POSTROUTING链,最后从本机成功流出。
PROCESS--->OUTPUT--->POSTROUTING
请求报文经过本机向其他主机转发时要经过的链: