Netfilter/ iptables简介
Linux的防火墙系统
- Linux内核2.4版本之后的防火墙解决方案
- netfilter是内核空间中实现防火墙的内部架构
- iptables是用户空间中配置防火墙的命令工具
Netfilter/iptables的主要功能
- 包过滤( Packet filtering)
- 连接跟踪( Connection tracking)
- 网络地址转换( Network Address Translation)
- 重整包头(Mangling packet header fields)
Netfilter
Netfilter是一种内核中用于扩展各种网络功能的结构化底层构架
- Netfilter是 内核的网络协议堆栈中的一系列“钩子”( hooks )
- 数据包在流经网络协议堆栈的任意时刻均可被“钩住(hooked )”
- 所谓钩住,即允许特定的内核模块调用函数通过“查表”方法来处理(拒绝/放行/整型等)数据包
- 被钩子钩住的时刻称为“检查点”
四表五链
- Netfilter在内核运行的内存中维护一系列的表
- 内核模块通过查表方法决定包的处理方式
表的结构
- iptables将表抽象为若干链(chain),链对应Netfilter的检查点
- 链由若干决定特定数据包处理方式的规则(rule) 构成
filter表
- 实现包过滤,是默认的表
- Hooks: LOCAL_IN, LOCAL_OUT, FORWARD
- 内置链: INPUT、OUTPUT、FORWARD
nat表
- 实现NAT
- Hooks: LOCAL_OUT,PRE_ROUTING,POST_ROUTING
- 内置链:OUTPUT、PREROUTING、POSTROUTING