五大链

链, 即 Netfilter 在内核中设置的对报文响应的”关卡”

PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING

报文流向

  • 到本机某进程的报文

    PREROUTING -> INPUT

  • 由本地转发的报文

    PREROUTING -> FORWARD -> POSTROUTING

  • 由本机进程发出的报文 (通常为响应报文)

    OUTPUT -> POSTROUTING

四大表

表, 即具有相同功能的规则集合

filter 表: 过滤功能(防火墙); 内核模块: iptables_filter

nat 表: network address traslation, 网络地址转换; 内核模块: iptables_nat

mangle 表: 拆解, 修改报文, 并重新新封装; iptables_mangle

raw 表: 关闭 nat 表上启用的连接追踪机制; iptables_raw

表链关系

  • 直观展示

      raw mangle nat filter
    PREROUTING  
    INPUT   ✓(CentOS 7)
    FORWARD    
    OUTPUT
    POSTROUTING    
  • 维度一: 链中的规则可以存在哪些表中

    PREROUTING 链的规则可存在于: raw, mangle, nat 表中

    INPUT 链的规则可存在于: mangle, nat(CentOS 7 有, CentOS 6 没有), filter 表中

    FORWARD 链的规则可存在于: mangle, filter 表中

    OUTPUT 链的规则可存在于: raw, mangle, nat, filter 表中

    POSTROUTING 链的规则可存在于: mangle, nat 表中

  • 维度二: 表中的规则可以被哪些链使用

    raw 表中的规则可用于链: PREROUTING, OUTPUT

    mangle 表中的规则可用于链: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING

    nat 表中的规则可用于链: PREROUTING, INPUT (CentOS 7 有, CentOS 6 没有), OUTPUT, POSTROUTING

    filter 表中的规则可用于链: INPUT, FORWARD, OUTPUT

表优先级

由高到低: raw -> mangle -> nat -> filter

规则

规则 = 匹配条件 + 处理动作

  • 匹配条件

    • 基本匹配条件: Source IP, Destination IP

    • 扩展匹配条件: Source Port, Destination Port

      是 netfilter 中的一部分, 以模块形式存在, 要使用则要依赖对应扩展模块

  • 处理动作 (target, 也可分为基本与扩展动作,以下为常用动作)

    • ACCEPT

    • DROP

    • REJECT

    • SNAT 源地址转换, 解决内网用户用同一个公网地址上网的问题

    • MASQUERADE 是 SNAT 的一种特殊形式, 适用于动态 IP 上

    • DNAT 目标地址转换

    • REDIRECT 在本机做端口映射

    • LOG 在/var/log/messages文件中记录日志信息

规则查询

查看某张表中的规则

iptables -t raw -nvL

iptables -t mangle -nvL

iptables -t nat -nvL

iptables -t filter -nvL 或者 iptables -nvL

查看某张表中某条链的规则

iptables -t filter -nvL INPUT

-t 表示指定 table
-L 表示列出规则
-n 表示不反解 IP ,直接显示
-v 表示显示详细信息 -x 表示显示精确数值