🛡️ 第二章 针对网络的攻击
📄 一句话概括

用地址白名单管准入,看起来是最省事的办法——但它有两个致命伤:地址是明文传的、可以随便伪装;而且从 2020 年前后开始,设备自己就会换地址。

📝 本节和前面几节的关系

上一节(拆分网络)解决的是"分成几片"。这一节解决的是"谁能进到这片网络里来"——也就是准入这一环。

它其实是第一章 权限只交给合适的人 那组词在无线网络上的具体形态:认证(你是谁)+ 授权(你能干什么)。而本节的核心结论是——用"地址"当身份,这件事从根上就不成立。

一、原理很简单:一张白名单

管理网络连接的朴素做法是地址白名单:

  1. 把允许上网的设备的硬件地址(网卡出厂时烧录的那个唯一编号)抄下来;
  2. 在路由器或无线控制器上填进"只允许列表";
  3. 名单之外的设备连不上。

它为什么曾经流行?三个原因:

但它有两个根子上的问题,下面两节分别说。

二、第一个致命伤:地址本身不可信

网卡地址(也就是 MAC 地址)是在数据帧的头部明文携带的——它不加密、不签名、就在那儿摆着。

这意味着:

所以白名单的真实效果是:它挡住的是"不知道怎么改地址的人",挡不住任何一个想知道的人。 一旦有人知道了白名单里某个地址,他把自己的地址改成那个,就进来了。

结论:用地址当身份,本质上是用"一个公开的、可复制的标签"当身份——这不叫认证。

三、第二个致命伤:设备自己会换地址(这是 2026 年的重点)

为了防止被跟踪,主流手机和操作系统从 2018 到 2020 年前后陆续引入了一个隐私功能:连接无线网络时,不使用真实网卡地址,而是为每个网络生成一个随机地址。

各家叫法不同:

默认是开着的。 更麻烦的是,较新的版本还会定时轮换——也就是说,即使是同一个网络,过一段时间地址也会再换一次。

于是白名单出现了三种故障:

  1. 设备被拒之门外——它的随机地址不在名单里,"明明加过"却连不上;
  2. 名单永远追不上——你去把当前的随机地址加进去,过一阵子它又换了;
  3. 访客设备根本没法管——你没法要求客人的手机改设置。

顺带还有两个连带损伤:

四、动手 Demo:六台设备,白名单能匹配上几台

def is_random(mac):
    first = int(mac.split(":")[0], 16)   # 取第一个字节
    return bool((first >> 1) & 1)        # 第二个最低有效位为 1 → 随机地址

devs = [
    ("办公笔记本 A(老系统,未开随机)", "8C:85:90:11:22:33", "关闭"),
    ("同事的 iPhone(默认开私有地址)", "9E:4A:B1:07:31:C2", "启用"),
    ("访客的安卓机(默认开随机)", "6A:3F:2C:88:10:55", "启用"),
    ("平板(Win11 随机硬件地址)", "22:0B:74:9A:3E:D1", "启用"),
    ("公司台式机(有线网卡)", "B4:2E:99:41:6C:08", "不适用"),
    ("同事的备用手机(iOS 定时轮换)", "F2:1C:5D:70:22:AA", "启用(还会轮换)"),
]

实跑输出:

  判据:MAC 第一个字节的第二个最低有效位为 1 → 随机地址(本地管理)
        实操记法:第一个字节第二个十六进制字符是 2、6、A、E 之一

  设备                                  路由器看到的 MAC            随机化     地址类型          能否被白名单匹配
  --------------------------------------------------------------------------------------------------------
  办公笔记本 A(老系统,未开随机)                   8C:85:90:11:22:33     关闭      真实(出厂烧录)      能
  同事的 iPhone(默认开私有地址)                 9E:4A:B1:07:31:C2     启用      随机(本地管理)      不能
  访客的安卓机(默认开随机)                       6A:3F:2C:88:10:55     启用      随机(本地管理)      不能
  平板(Win11 随机硬件地址)                    22:0B:74:9A:3E:D1     启用      随机(本地管理)      不能
  公司台式机(有线网卡)                         B4:2E:99:41:6C:08     不适用     真实(出厂烧录)      能
  同事的备用手机(iOS 定时轮换)                   F2:1C:5D:70:22:AA     启用(还会轮换)随机(本地管理)      不能

  六台设备里,白名单只能可靠匹配 2 台。

  ① 为什么失效:现在的手机和系统默认会【每个网络生成一个随机地址】,
     有的还会定期更换。所以你在白名单里加的那个地址,
     很可能过一阵子设备自己就换掉了。
  ② 就算它不换,MAC 地址本身也是明文传输、可以随便伪装的——
     白名单挡住的是【老实人】,挡不住真的攻击者。
  ③ 顺带的连带损伤:路由器上按 MAC 做的固定地址分配也会失灵,
     访客统计会把一台手机算成十几个【新访客】。
  ④ 正确做法是往上走一层:
     · 员工设备 → 基于证书的身份认证,不认地址认证书;
     · 访客设备 → 单独的网络 + 一次性口令,隔离于内网之外。
  ⑤ 千万别为了保住白名单就【拒绝所有随机地址】——
     那等于把绝大多数现代手机挡在门外。

读这个输出:六台里能匹配的只有两台,而且这两台是因为老系统没开随机或者有线网卡(有线网卡没有这个隐私功能)。也就是说——"能不能匹配上"跟这台设备重不重要、可不可信,完全没有关系。这恰恰说明用地址做准入这条路走不通:它在技术上越来越不管用,在安全上本来就是无效的。

五、正确的方向:往上走一层

既然"地址"不能当身份,那就换成能当身份的东西:

场景 用什么 为什么
员工设备(能管控的) 基于证书的身份认证 证书不受地址随机化影响,而且很难伪造
访客设备(管不了的) 单独的访客网络 + 一次性口令或门户认证 不去识别设备,直接把它隔离在内网之外
不能装认证客户端的老设备(打印机之类) 先登记,再放进单独的一段 承认它弱,把它关起来而不是靠地址认它

一句话记法:不要把注意力放在"这是谁的设备"上,而要放在"这是不是一台被授权过的设备"上——前者靠地址,后者靠证书。

还有一个必须提醒的做法:不要为了保住白名单就去"拒绝所有随机地址"。 有些设备能通过在程序上识别"这是随机地址"来拒绝它——但那会把绝大多数现代手机挡在门外,用户体验崩掉、支持电话打爆,而且依然挡不住会伪装的人。这是一条典型的"代价巨大、收益为零"的路。

六、⚠️ 2026 现状

30 秒实验

拿起手机,三件事:

  1. 看你这个网络的地址是不是随机的:设置 → 无线局域网 → 点你当前网络右边的信息图标,找"私有无线局域网地址"(iPhone)或"隐私/MAC 地址类型"(安卓)。它大概率是开着的——这就是白名单失效的原因。
  2. 看路由器后台的"已连接设备"列表:有没有出现同一个设备名字、但地址不一样的两条记录?那就是轮换过的痕迹。
  3. 想一想:如果有一天你换了新手机,需要找谁帮你把新地址加进白名单?——如果答案是"要找 IT 填个表",那这套流程在 2026 年基本是走不通的。

这一节要带走的一句是:把地址当身份,等于把门禁卡号写在门上——而现在连卡号自己都会变。

常见误区

  1. 错误:设了地址白名单,网络就安全了。——纠正:地址是明文传输的,可以随意伪装。 一旦有人知道了名单里的某个地址,改一下就能进来。白名单挡的是"不会改地址的人"——这在安全上等于没有防护。而且从 2020 年前后开始,设备自己还会换地址,所以它连"能用"都成了问题。

  2. 错误:既然随机地址会捣乱,那就把随机地址全禁掉。——纠正:这是"代价巨大、收益为零"的做法。 禁掉随机地址会把绝大多数现代手机挡在门外(用户体验崩掉、支持成本飙升),而且依然挡不住会伪装地址的人。正确做法是把准入换个依据——员工设备用证书,访客设备进独立网络。这是在解决问题,而不是在和设备功能对抗。

  3. 错误:随机地址是厂商给用户添麻烦的功能。——纠正:它的目的是隐私——防止设备在不同网络间被跟踪。它带来的问题不是"功能设计错了",而是它暴露了"用地址当身份"这个做法从根上就不成立。所以应对的方向不是抱怨厂商,而是把身份和地址解耦。

  4. 错误:访客网络用地址白名单最省事。——纠正:访客设备恰恰是你最没法控制的一批——你没法要求客人的手机改隐私设置,也不知道他们什么时候来。所以对访客网络,主流做法是放弃"识别设备",改用"基于身份的准入":单独的网段 + 门户或一次性口令认证,并确保它访问不到内网。把"管不住"变成"关起来",是更省事的那条路。

自测三问(点开对答案) 1. 用网卡地址做准入控制,为什么在安全上从根上就不成立? —— 因为**地址是明文传输、并且可以随意伪装的**——它只是一个"标签",不是一个"凭证"。任何能看到网络里数据帧的人都能读到别人的地址,而**改自己的地址在系统设置里就能做到**。所以白名单的**实际效果只是挡住不知道怎么改的人**。**用它当"身份",等于用"一个公开且可复制的编号"来证明身份。** 2. 什么是"随机地址"?它为什么会和白名单冲突? —— 随机地址是设备为了**防止自己被跨网络跟踪**而采用的一项隐私功能:连接无线网络时,**不使用真实的出厂地址,而是为每个网络生成一个随机地址**,较新的版本还会**定期轮换**。它和白名单冲突的原因是:**白名单依赖"设备的地址长期稳定"这个前提,而随机地址恰恰在破坏这个前提**——设备用的地址变了,白名单就认不出它了。**这不是配置问题,是前提被推翻了。** 3. 员工设备和访客设备,为什么适合用两套不同的准入方案? —— 因为它们**可控程度不同**。**员工设备**是你能管控的(可以安装证书、推送策略),所以适合**基于证书的身份认证**——证书**不受地址随机化影响**,而且**难以伪造**,能提供长期稳定的标识。**访客设备**(客人自己的手机、平板)你既没法装证书,也不能要求他们改隐私设置,所以正确做法是**不去识别设备,而是把它隔离**——**单独的网络 + 基于用户的门户认证**,并确保它够不着内网。**对能管的用"认证",对不能管的用"隔离"。**

相关笔记