hook funciton(钩子函数):
    prerouting 进本机未过路由表
    input 进来本机
    output 从本机出去
    forward 转发
    postrouting 路由后从本机出去
规则链:
    每个钩子函数上的规则合集构成链。
    PREROUTING 
    INPUT 
    OUTPUT 
    FORWARD 
    POSTROUTING 
    自定义链:
        只能被调用,有跳转和返回机制。用户可以删除自定义的空链,默认链无法删除。
计数器:
    每个规则都有内置的计数器。
    1.被匹配到的报文个数 
    2.被匹配到的报文大小之和
多个规则链构成表:
    filter(过滤);
        INPUT
        OUTPUT
        FORWARD
    nat(地址转换):
        PREROUTING SNAT
        OUTPUT
        POSTROUTING DNAT
    mangle(拆分修改封装报文首部):
        PREROUTING 
        INPUT
        OUTPUT
        FORWARD
        POSTROUTING
    raw(原始格式):
        PREROUTING
        OUTPUT
规则链中表的优先级:
    优先级从高到底。
    PREROUTING
        raw
        mangle
        nat
    INPUT
        mangle
        filter
    OUTPUT
        raw
        mangle
        nat
        filter
    FORWARD
        mangle
        filter
    POSTROUTING
        mangle
        nat
数据包过滤匹配流程:
    入站数据流 --> PREROUTING --> 路由选择 (FORWARD --> POSTROUTING -->出站数据流)--> INPUT --> 本机应用程序 --> 路由选择 --> OUTPUT -->POSTROUTING -->出站数据流
 
匹配标准:
    通用匹配
        依赖自身。
    扩展匹配
        依赖扩展模块。
        对应的扩展模块为/lib/iptables/libipt_*.so
        1.隐含匹配。
            不用特别指明扩展模块。例如使用了-P {tcp|udp|icmp} 指明协议。
        2.显式扩展。
            必须使用-m指明对应的扩展模块。
iptables 不是服务,但是有服务脚本,所有的规则都应用在内核中。服务脚本的作用是管理保存的规则。装载及移除相关内核模块。使用lsmod可以查看相关的模块
脚本:
    /etc/init.d/iptables
保存和读取规则:
        #service iptables save
            /etc/sysconfig/iptables  配置文件
        
        或
        
        #iptables-save > FILE 保存配置文件
        #iptables-restore < FILE 读取配置文件
配置文件:
    /etc/sysconfig/iptables-config 
ICMP 类型
    TYPE CODE
    0 0 Echo Reply ping应答
    8 0 Echo Request ping请求
#lsmod |grep ip 列出内核模块
ip_conntrack 内核模块,监听并追踪连接状态
    依赖iptable_nat和ip_nat模块
    /proc/net/ip_conntrack 内核文件,保存连接状态信息
    #cat /proc/net/ip_conntrack
    #iptstate [OPTION] 显示并追踪iptables状态信息
        [OPTION]
            -t 显示所有连接的个数
    /proc/sys/net/ipv4/netfilter/*  ip_conntrack的相关设置文件夹
        ip_conntrack_max  最大连接条目,默认32768。超出部分则会被丢弃。
        ip_conntrack_tpc_timeout_established tcp连接超时时间,默认432000秒,即5天。
        ip_conntrack_icmp_timeout icmp连接超时时间,默认30秒
    注意:一旦使用#iptables -t nat -L 命令,将会启用ip_conntrack模块,若设备连接数大,则会造成丢包。
本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1663822
原文:http://ggvylf.blog.51cto.com/784661/1663822