## 1、防火墙概览 防火墙的核心作用是:对进出主机或网络边界的数据包按规则进行检查,并根据规则决定**允许、拒绝、丢弃、转发**等行为。 在 Linux 中,防火墙底层通常依赖 **Netfilter** 框架。 ## 2、Netfilter 基础 Netfilter 工作在 Linux 内核空间,在报文经过内核协议栈时提供多个钩子点(hook),供防火墙规则介入处理。 常见链路包括: - `PREROUTING` - `INPUT` - `FORWARD` - `OUTPUT` - `POSTROUTING` ### 2.1 报文常见流向 #### 流入本机 ```text PREROUTING -> INPUT -> 用户空间进程 ``` #### 本机发出 ```text 用户空间进程 -> OUTPUT -> POSTROUTING ``` #### 转发流量 ```text PREROUTING -> FORWARD -> POSTROUTING ``` ## 3、常见防火墙工具 ### 3.1 `iptables` 传统 Linux 防火墙工具,直接操作 Netfilter 规则。 特点: - 资料多 - 老系统常见 - 规则链和表概念较重要 ### 3.2 `firewalld` 在 CentOS 7 等系统中较常见。 特点: - 底层仍基于 Netfilter - 提供更高层抽象,如 zone、service - 动态修改更方便 ### 3.3 `nftables` 更现代的防火墙方案。 特点: - 设计更统一 - 可逐渐替代 `iptables` - 现代发行版中越来越常见 ## 4、如何理解链和规则 可以把每条链理解成一个“关卡”,数据包经过时,逐条匹配规则: - 匹配到允许规则,就放行 - 匹配到拒绝规则,就拒绝 - 匹配到丢弃规则,就静默丢弃 - 如果都不匹配,则按默认策略处理 ## 5、常见使用建议 ### 5.1 先明确流量方向 排查前先区分: - 是入站流量问题? - 是出站流量问题? - 还是转发流量问题? ### 5.2 先明确工具体系 要先看系统到底主要在用: - `iptables` - `firewalld` - `nftables` 不同工具的管理方式差别很大。 ### 5.3 规则变更要留后门 远程改防火墙时要特别小心: - 优先保留 SSH 放行规则 - 先验证再保存 - 最好有控制台或带外管理入口 ## 6、排障思路 ### 6.1 服务端口明明启动了但访问不到 优先检查: - 端口是否真的在监听 - 防火墙是否放行该端口 - 路由和安全组是否正确 ### 6.2 主机能发不能收,或能收不能发 重点判断: - 是 `INPUT` 问题 - 是 `OUTPUT` 问题 - 还是上游网络策略问题 ### 6.3 路由转发不生效 重点检查: - 是否命中 `FORWARD` 链 - 是否开启了 IP 转发 - NAT / masquerade 是否配置正确 ## 7、小结 - Linux 防火墙底层核心是 Netfilter - 常见链有 `PREROUTING`、`INPUT`、`FORWARD`、`OUTPUT`、`POSTROUTING` - 常见工具有 `iptables`、`firewalld`、`nftables` - 排查防火墙问题时,先判断流量方向,再判断所用工具,再看规则是否命中