防火墙不是「一个安全软件」,是「串在链路里的一个决策点」。 它做三件事:看包头、查策略、决定放行还是丢——就这三件。
前四章讲的是「怎么把包送到」,从这一章开始讲「该不该让它过」。 这一章讲的全部功能,最后都落在同一个动作上——丢,或者不丢。
一、它和路由器差在哪
路由器看包头是为了「往哪送」,防火墙看包头是为了「让不让过」。 两者用的是同一份信息,问的是不同的问题。
设备 看包头之后 结果
路由器 查路由表 从哪个口发出去 L2 交换机 查 MAC 表 从哪个口发出去 防火墙 查策略表 过,还是丢
所以防火墙必须「串」在路径上:包不经过它,它就什么也做不了。 这就是为什么「装了防火墙但网络没改」等于没装。
而「丢」这个动作比「转发」更简单——不用改包头、不用查出口、不用排队等待。 防火墙的复杂度全部在「判断」上,不在「动作」上。
二、三件事:看、判、动
看:把字节流拆成字段——源地址、目的地址、端口、协议、标志位。 这是一个纯粹的结构解析问题,05.07.02 会亲手做一遍。
判:拿这些字段去比对策略。这一步的难点不在「比」,在「怎么组织」, 因为策略可能有几千条,而每个包都要比完。
动:放行、丢弃、拒绝(回一个 RST 或 ICMP)、记录日志。 「丢弃」与「拒绝」的差别是「让对方知道还是不知道」——对外通常用丢弃(不给探测者任何反馈),对内通常用拒绝(快速失败)。
三件事里最容易出问题的是第二件:策略写错一个顺序,整份策略就失效(第 4 节会算这笔账)。
三、三种部署位置
串接是唯一能「拦」的位置:路由模式(改 IP)与透明模式(桥接)。 旁挂只能「看」:镜像一份流量做分析,不参与转发。
位置 能不能拦 代价
路由模式 能 改地址规划与路由 透明模式 能 排障时多一跳 旁挂镜像 不能 只告警,要另配阻断
三者不是「谁更好」,是「谁适合」:割接期用透明、长期用路由、纯监测用旁挂。 真实网络里三种会同时存在。
串接的代价是可用性相乘: 单台 0.999 的可用性串三台就掉到 0.997,年停机从 8.8 小时涨到 26.3 小时。 所以串得越多,越要上双机热备。
四、动手 Demo:防火墙串在哪里,可用性怎么算
这段先把三种部署位置摆出来,再按 0.999 的单台可用性算「串 1、2、3 台」各自的年停机时间。
for n in (1, 2, 3):
a = 0.999 ** n
down = (1 - a) * 365 * 24 * 60
P(u" 串 %d 台:可用性 %.6f,年停机 %.1f 分钟。" % (n, a, down))
实跑输出:
--------------------------------------------------------------------
防火墙串在哪里,可用性怎么算
--------------------------------------------------------------------
**防火墙只有串在链路上才管用**,**而串上去就多了一个会坏的设备。**
这是「安全」与「可用」之间的第一笔交易。
部署方式 数据怎么过 对现网的影响
---------------------------------------------------
路由模式 改 IP 再转发 要改地址规划
透明模式 二层桥接,不碰 IP 插上就行
旁路监听 复制一份流量 只告警不拦
**前两种是「串接」,最后一种是「旁挂」。**
**串接能拦,旁挂只能看。**
**串接的代价是可用性相乘**(单台可用性按 0.999 计):
串 1 台:可用性 0.999000,年停机 525.6 分钟(8.8 小时)。
串 2 台:可用性 0.998001,年停机 1050.7 分钟(17.5 小时)。
串 3 台:可用性 0.997003,年停机 1575.2 分钟(26.3 小时)。
**串三台就从 8.8 小时变成 26.3 小时**——**所以串联设备越多,越要上双机热备。**
**旁挂不改链路,可用性不掉,但也就没法真正阻断。**
0.999 这个数不是重点,重点是「乘法」这个结构。 串联系统里,任何一个环节的可用性都会把整体拉低,这就是为什么核心链路一定要做冗余。
注意「旁挂」那一行:它不改链路、不掉可用性,但也拦不住任何东西。 很多网络出事后才发现「防火墙一直在旁挂」,就是这一条没想清楚。
再看 D119 里「路由模式要改 500 台主机网关」那段: 这解释了为什么割接时大家都选透明模式——不是透明模式更先进,是它把改动量从 500 条降到 0 条。
30 秒实验
- 画一下你所在网络的出口,标出防火墙是串接还是旁挂。
- 查一下这台设备的可用性指标(规格书里的 MTBF)。
- 想一想:如果它掉电,你的网络会怎样?有没有备机?
常见误区
- 以为装了防火墙就安全了。它只管「让不让过」,不管「过去之后干什么」。
- 以为旁挂也能阻断。旁挂只能看,要阻断必须串接或联动交换机下发 ACL。
- 以为串接没有代价。可用性相乘、时延增加、排障变复杂。
自测三问(点开对答案)
1. 防火墙和路由器看的是同一份信息,问的问题有什么不同? —— 路由器问「往哪送」,防火墙问「让不让过」。 2. 为什么旁挂部署的防火墙拦不住攻击? —— 因为流量不经过它,它只能收到镜像副本,无法参与转发决策。 3. 「丢弃」与「拒绝」的区别是什么? —— 丢弃不给任何回应,拒绝会回 RST 或 ICMP,让对方立刻知道被拒。下一节:这台设备是怎么被发明出来的——从一场蠕虫事件讲起。
- ☐ (本节完,下一节 05.02 防火墙是如何诞生的)