防火墙后端核对
同一台 Linux 主机上可能存在两套防火墙实现:传统的内核模块版本与基于新框架的兼容层。同名命令究竟操作哪一套,由发行版的默认设置和替代项决定。两套后端各自维护规则集,彼此不可见,因此排查放行问题时必须先确认命令的实际后端,统一口径再查看规则全貌。
基本信息
| 适用平台 | Linux 各发行版 |
|---|---|
| 确认方式 | 版本输出中会标注当前后端;也可查看系统替代项配置 |
| 两种视图 | 传统命令看到的规则与新框架命令看到的规则集 |
| 权限要求 | 查看通常需要 root |
| 干扰源 | 容器运行时会自行插入链与规则 |
典型使用场景
- 端口已放行但业务不通,怀疑规则加到了不生效的那一套后端。
- 从旧系统迁移到新发行版后,同样的命令行为发生变化。
- 容器节点上规则来源繁杂,需要区分主机规则与运行时规则。
- 规则持久化服务与手工添加的规则互相覆盖,需要核对全貌。
- 排查规则顺序造成的不生效:先命中拒绝规则后再也走不到放行规则。
确认与查看
确认与查看
iptables -V # 版本字符串中会标注实际后端
update-alternatives --display iptables 2>/dev/null # 查看替代项指向
nft list ruleset | head -40 # 新框架视角的规则集
iptables-save | head -40 # 传统命令视角的规则集
nft list ruleset | grep -n 'hook\|policy' | head # 关注链的挂载点与默认策略
iptables -L INPUT -n -v --line-numbers | head # 带计数与序号的规则视图两套视图的差异
| 查看方式 | 覆盖范围 | 常见误判 |
|---|---|---|
| 传统命令 | 当前命令后端对应的规则集 | 以为看到的就是全部规则 |
| 新框架命令 | 全部规则集,含容器运行时插入的链 | 被大量自动生成规则淹没 |
| 持久化文件 | 重启后会被加载的规则 | 与运行时规则不一致 |
不同后端下看到不同规则集属于正常现象;排查放行问题前先确认是哪一套在生效,否则会在两套视图之间反复绕圈。
在两套工具之间交替修改规则会造成互相不可见的状态:改动看起来生效了,重启后又回到另一套规则,建议统一为一套并明确持久化方式。