iptables
一、底层基础:Netfilter & iptables
1、Netfilter:Linux 内核内置网络防火墙框架,提供 5 个数据包拦截钩子点(五链),真正处理数据包
2、iptables:用户态命令行工具,用来给 Netfilter 配置规则,只是配置入口
3、三层结构:表 (table) → 链 (chain) → 规则 (rule)
- 表:按功能分类规则集合
- 链:数据包必经的拦截点(钩子)
- 规则:匹配条件 + 执行动作,从上到下逐条匹配,匹配即终止;无匹配走链默认策略
二、五表(优先级 raw > mangle > nat > filter)
1、raw(极少用,连接跟踪豁免)
- 包含链:PREROUTING、OUTPUT
- 作用:标记数据包不开启 conntrack 连接跟踪,高并发网关 / CDN 减少内核开销
- 场景:百万并发流量,关闭连接跟踪省内存
2、mangle(修改数据包包头)
- 包含链:全部 5 条链(PREROUTING/POSTROUTING/INPUT/OUTPUT/FORWARD)
- 作用:修改 TTL、TOS、给数据包打 MARK 标记,用于 QoS、策略路由
- 场景:调整数据包优先级、多线路路由分流
3、nat(地址转换,网关 / 端口转发必备)
- 包含链:PREROUTING、POSTROUTING、OUTPUT
- 核心功能:修改源 / 目的 IP、端口 ,PREROUTING:DNAT(外网访问内网,改目标 IP),POSTROUTING:SNAT/MASQUERADE(内网上网,改源 IP),OUTPUT:本机程序 NAT(极少使用)
- 关键特性:一条连接只经过 nat 表一次,后续报文自动复用转换规则
4、filter(默认表,防火墙过滤,日常 90% 操作)
- 包含链:INPUT、OUTPUT、FORWARD
- 作用:放行 / 丢弃 / 拒绝数据包,主机防火墙核心,INPUT:发给本机的流量,OUTPUT:本机向外发出的流量,FORWARD:经过本机转发的流量(网关)


