iptables 的结构
iptables 用『表 + 链』组织规则:filter 表负责过滤(INPUT 入站、OUTPUT 出站、FORWARD 转发),nat 表负责地址转换,mangle 表负责改包。报文会依次匹配链上的规则,命中即执行动作(ACCEPT 放行、DROP 丢弃、REJECT 回拒绝、LOG 记录)。许多加固脚本与信创环境仍在用它,因此看清现状比记住语法更重要。
基本信息
| 常用表 | filter 过滤、nat 地址转换、mangle 改包 |
|---|---|
| 常用链 | INPUT 入站、OUTPUT 出站、FORWARD 转发 |
| 查看命令 | iptables -L -n -v --line-numbers、iptables -t nat -L -n |
| 导出与恢复 | iptables-save、iptables-restore |
| 后端说明 | 较新内核由 nftables 承载,iptables 命令是兼容层 |
| 权限要求 | root |
典型使用场景
- 接手老系统或加固脚本时先看清已有规则
- 核查是否残留过时的放行规则
- 排查某端口为什么访问不通时确认是否被 iptables 拦住
- 把现有规则导出留档,作为变更前基线
- 确认 iptables 与 firewalld 是否同时启用造成规则冲突
查看现状
查看现状
iptables -L -n -v --line-numbers # filter 表:数字端口、包计数、行号
iptables -t nat -L -n -v # nat 表:地址转换规则
iptables -L INPUT -n --line-numbers # 只看入站链
nft list ruleset 2>/dev/null | head # 较新内核下看真正承载的规则集
iptables-save | head -40 # 可恢复格式导出,用于备份
iptables -S # 以命令形式输出规则,便于比对与复制补充与核对
补充与核对
systemctl is-active firewalld iptables 2>/dev/null # 确认两套管理工具是否同时启用
ss -tulnp | head -20 # 监听端口清单,与放行规则对照
iptables -Z # 清零计数器,便于观察后续流量
journalctl -k --since '10 min ago' | grep -i -E 'drop|reject' | head # 被拦截记录的线索
cp -a /etc/sysconfig/iptables /root/iptables.bak.$(date +%F) 2>/dev/null # 有持久化文件时先备份表链与动作
| 项目 | 说明 | 注意点 |
|---|---|---|
| filter 表 | 最常用:放行或拒绝流量 | 多数加固规则都在这里 |
| nat 表 | 源/目标地址转换 | 转发场景才需要,规则顺序影响匹配 |
| INPUT 链 | 进入本机的流量 | 服务器端口控制的主战场 |
| FORWARD 链 | 经过本机转发的流量 | 做网关或容器场景时关注 |
| ACCEPT / DROP / REJECT | 放行 / 静默丢弃 / 回拒绝 | DROP 会让对端超时,REJECT 会立即报错 |
| LOG 动作 | 记录匹配的报文 | 本身不改变动作,需另配放行或拒绝 |
openEuler 与较新版本的麒麟中,iptables 命令由 nftables 兼容层实现:用 nft list ruleset 看到与 iptables 列表对应的规则集属正常现象,不要误判为规则被改过。
iptables 手工规则与 firewalld 并存会互相干扰:firewalld reload 时会重建规则,手工加的条目可能消失或与 firewalld 规则叠加产生意外放行,同一环境只保留一种管理方式。