wiki/运维/Linux/笔记/29.防火墙.md
2026-04-08 19:40:00 +08:00

140 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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`
- 排查防火墙问题时,先判断流量方向,再判断所用工具,再看规则是否命中