参考链接:
    http://www.zsythink.net/archives/1199
    iptables 只是一个命令行工具,虽然有 service iptables start,但实际上 iptables 并没有一个守护进程,只是一个客户端代理,iptables 的实现实际是内核的 Netfilter 模块。
    Netfilter 的功能有:

    1. 网络地址转换(NAT)
    2. 数据包内容修改
    3. 数据包过滤的防火墙功能

    由于TCP/IP层的协议是内置在OS中的,所有的数据经过网卡之后,都会在内核空间处理之后才会传递给用户空间。Netfilter 就是内核空间处理包的一系列规则。
    如下图总共有5条链:
    prerouting、input、forward、postrouting、output
    iptables 详解 - 图1
    在不同场景中,数据包的流向为:

    • 报文发向本机的某个进程:
      prerouting-> input
    • 报文经过本机转发:
      prerouting-> forward-> postrouting
    • 报文由本机的进程发出去
      output-> postrouting

    每一条链都有多个规则,每一个经过一条链的报文,需要把所有的规则都匹配一遍。
    iptables 详解 - 图2
    表是指相同功能的规则结合:总共有4张表:
    filter: 负责过滤,防火墙。iptables_filter
    nat: 网络地址转换。iptable_nat
    mangle: 拆解报文,修改,重新封装。iptable_mangle
    raw: 关闭nat表上企业的链接追踪机制,iptable_raw
    同一个链上有不同的表,同一张表也可以出现在不同的链上。
    iptables 详解 - 图3
    处理动作:在 iptables中称为 target。有基本动作也有扩展动作。
    ACCEPT:
    DROP:
    REJECT:
    SNAT:
    DNAT:
    REDIRECT:
    LOG: