美文网首页程序员
iptables学习笔记

iptables学习笔记

作者: 无知者云 | 来源:发表于2018-03-27 09:51 被阅读0次

    iptables需要处理两个维度的信息:

    1. 在什么时候应用配置,这便是iptables中的链(chain),对应于netfilter的hook
    2. 应用什么配置,即iptables中的表(table)

    iptables其实是运行与用户空间的,其本身并不是Linux内核的一部分,真正完成防火墙功能是Linux内核的netfilter模块,iptables通过netfilter所提供的钩子(hook)通知netfilter需要完成哪些功能。

    iptables在默认情况下包含5个链,分别对应netfilter的5个hook:

    Chain 对应的hook 作用时机
    PREROUTING NF_IP_PRE_ROUTING 数据包进入内核网络模块之后,获得路由之前
    INPUT NF_IP_LOCAL_IN 数据包被决定路由到本机之后
    FORWARD NF_IP_FORWARD 数据包被决定路由到其他主机之后
    OUTPUT NF_IP_LOCAL_OUT 离开本机的数据包进入内核网络模块之后
    POSTROUTING NF_IP_POST_ROUTING 对于离开本机或者FORWARD的数据包,当数据包被发送到网络之后

    链执行顺序

    • 对于目的地为本机的数据包:PREROUTING -> INPUT
    • 对于目的地为其他主机的数据包:PREROUTING -> FORWARD -> POSTROUTING
    • 对于本机产生的数据包:OUTPUT -> POSTROUTING

    iptables中的表所表示的是防火墙中某一类配置,有些配置可能对所有的chain都生效(比如mangle表),而有些配置能对某些chain生效(比如filter表)。

    iptables中包含了以下5张表:

    • filter表:估计是iptables里最常用的表了,用于控制到达某个chain的数据包是否可以继续放行。
    • nat表:用于修改数据包的源地址和目的地地址。
    • mangle表:用于修改数据包的IP头信息。
    • raw表:iptables是有状态的,也即iptables对数据包有连接追踪(connection tracking)机制,而raw便是用来去除这种最终机制。
    • security表:在数据包上使用SELinux。

    至于某个表中包含了哪些chain,请参考:


    表与链对应

    连接跟踪

    数据包通常是属于某个连接(connection)的,当数据包经过iptables时,从iptables的连接跟踪机制可以得知当前数据包所对应的连接的状态,主要有以下状态:

    • NEW,请求一个新连接,比如一个全新的HTTP请求
    • ESTABLISHED,数据包已经属于某个连接
    • RELATED,数据包已经属于某个连接,但是又请求一个新连接
    • INVALID,数据包不属于任何连接

    iptables配置例子参考这里

    相关文章

      网友评论

        本文标题:iptables学习笔记

        本文链接:https://www.haomeiwen.com/subject/wahjcftx.html