iptables教程

内核空间中的五个包处理位置,和五个函数钩子(规则链)

  • PREROUTING 数据包刚进入网络层 , 路由之前
  • INPUT 路由判断,流入用户空间
  • OUTPUT 用户空间发出,后接路由判断出口的网络接口
  • FORWARD 路由判断不进入用户空间,只进行转发
  • POSTROUTING 数据包通过网络接口出去
1
2
3
4
5
6
7
                      应用层
                   -------------
                    ^        |
                    |        v
                  INPUT    OUTPUT
                    |        |
-->PREROUTING-------->FORWARD--->POSTROUTING---> 

这就是五个内置链,可以在链里面添加规则

四个表来定义区分各种不同功能和处理方式

表可以作用在多个链上,同样一个链也可以配置多个表

  • Filter表 一般的数据包过滤
  • Nat表 网络地址转换
  • Mangle表 修改数据包的原数据,一般用于防火墙标记
  • raw表 用于配置免除
chain/table Filter Nat Mangle Raw
PREROUTING false true true true
INPUT true false true false
FORWARD true false true false
OUTPUT true true true true
POSTROUTING false true true false

创建一个自定义链

1
2
3
iptables -t filter -N newchain # 创建链
iptables -t filter -A newchain -s 192.168.75.9 -j DROP # 往链中添加规则
iptables -A INPUT -j newchain # 创建的链在INPUT链中生效,创建的链往哪接

命令结构

1
2
3
4
5
iptables [-t table]  # 指定表名
         command     # 对链操作命令
         [chain]     # 链名
         [rules]     # 规则,包是否匹配该条规则
         [-j target] # 符合规则的数据包采取什么动作

公众号:

sealyun

微信群: