扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
IP INPUT:只有要到达本机的封包才会 由 INPUT 函式处理,所以会让来自内部网络的封包无条件放行,来自外部网络的封包则过滤是否为 响应封包,若是则放行。
PREROUTING:需要转送处理的封包由此函式负责处理,此函式用来做目的地 IP 的转译动作(DNAT)。
IP FORWARD:所有转送封包都在这里处理,这部分的过滤规则最复杂。
POSTROUTING:转送封包送出之前,先透过这个函式进行来源 IP 的转译动作(SNAT)。
IP OUTPUT:从本机送出去的封包由这个函式处理,通常会放行所有封包。
iptables 和 ipchains 都可以自行定义规则群组(rule-set),规则群组被称为规则炼(chains),前面所描述的函式,也都有相对应的规则炼(INPUT、 FORWARD、OUTPUT、Prerouting、Postrouting),为了有别于自行定义的规则炼,这些规则炼我们就称为内建规则炼,其运作流程仿真如下图:
从上面两张假想图,学员们不难了解 ipchains 为什么要叫做 chains,因为它是将所有规则串接成一个序列逐一检查过滤,就像一条铁链一样一个环接一个环,在过滤过程中只要符合其中一条规则就会立即进行处理,如果处理动作是跳到某个规则群组,则继续检查群组内之规则设定,但如果处理动作是 ACCEPT、REJECT、DROP、REDIRECT 或 MASQUERADE,则会中断过滤程序,而不再继续检查后面的规则设定,在这样的结构之下,有时候规则顺序的对调会产生完全相反的结果,这一点在设定防火墙时不能不谨慎。
而 iptables 是采用规则堆栈的方式来进行过滤,当一个封包进入网卡,会先检查 Prerouting,然后检查目的 IP 判断是否需要转送出去,接着就会跳到 INPUT 或 Forward 进行过滤,如果封包需转送处理则检查 Postrouting,如果是来自本机封包,则检查 OUTPUT 以及 Postrouting。过程中如果符合某条规则将会进行处理,处理动作除了 ACCEPT、REJECT、DROP、REDIRECT 和 MASQUERADE 以外,还多出 LOG、ULOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、TOS、TTL、MARK 等,其中某些处理动作不会中断过滤程序,某些处理动作则会中断同一规则炼的过滤,并依照前述流程继续进行下一个规则炼的过滤(注意:这一点与 ipchains 不同),一直到堆栈中的规则检查完毕为止。透过这种机制所带来的好处是,我们可以进行复杂、多重的封包过滤,简单的说,iptables 可以进行纵横交错式的过滤(tables)而非炼状过滤(chains)。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。