wiki/运维/操作系统/Linux/笔记/29.防火墙.md
2026-04-08 15:02:24 +08:00

2.8 KiB
Raw Blame History

1、防火墙概览

防火墙的核心作用是:对进出主机或网络边界的数据包按规则进行检查,并根据规则决定允许、拒绝、丢弃、转发等行为。

在 Linux 中,防火墙底层通常依赖 Netfilter 框架。

2、Netfilter 基础

Netfilter 工作在 Linux 内核空间在报文经过内核协议栈时提供多个钩子点hook供防火墙规则介入处理。

常见链路包括:

  • PREROUTING
  • INPUT
  • FORWARD
  • OUTPUT
  • POSTROUTING

2.1 报文常见流向

流入本机

PREROUTING -> INPUT -> 用户空间进程

本机发出

用户空间进程 -> OUTPUT -> POSTROUTING

转发流量

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