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:经过本机转发的流量(网关)

标签