插上网线不等于能上网——802.1X 把交换机端口变成一道门禁。 它在认证通过前不关端口,而是只放行「我要认证」这一种报文。
上一节的 TLS 保护的是「内容」。 这一节保护的是「谁被允许接入」,而且它工作在二层,比 IP 还早。 Demo 把一次完整认证拆成七步,再算一台 48 口交换机一天的账。
一、三个角色,各干一件事
802.1X 把参与者分成三方, 这个分法和 RADIUS 那套是同一个思路:干活的不管判断,判断的不碰流量。
| 角色 | 是谁 | 干什么 |
|---|---|---|
| 请求者 | 你的电脑 | 出示身份 |
| 认证者 | 交换机端口 | 只放行认证报文,通过后放行流量 |
| 认证服务器 | 通常是 RADIUS | 真正做判断 |
第二行是整套机制的枢纽:端口在认证通过前不是「关着」,而是「只放行一种报文」。 所以设备能说话,但只能说「我要认证」这句话。 这比「先开再踢」安全得多——因为「先开」的那一瞬间,攻击已经进去了。 这也解释了为什么它能工作在二层:认证报文走的是 EAPOL,一种二层帧,不需要 IP 地址。 所以一台还没拿到 IP 的电脑也能认证——这个顺序很重要,反过来的话整套机制就没法启动。
二、EAP 的几种方式,好坏差别很大
EAP 只是一个「装认证方法的信封」,里面装什么决定了安全性:
| 方式 | 怎么验 | 安全性 |
|---|---|---|
| EAP-MD5 | 口令的哈希 | 弱,可离线爆破 |
| EAP-TLS | 双方都用证书 | 最强,但要给每台终端发证书 |
| PEAP | 先建 TLS 隧道,再传用户名口令 | 常用,部署成本低 |
第一行的问题和前面讲过的完全一样:它只把口令做了个哈希就发过去,抓到就能离线爆破, 而且没有「服务器证明自己」这一步,所以可以被假 AP 骗走凭证。 它今天基本只出现在教科书里。 第三行是折中的答案:先用服务器的证书建一条 TLS 隧道,再在隧道里传用户名口令。 这样终端只要信任 CA 就行,不用给每台机器发证书, 部署成本立刻从「几千张证书」降到「一个 CA」。
三、按人分流,才是它真正的价值
很多人以为 802.1X 的作用是「拦住外人」,其实它更大的价值在后面一步: RADIUS 的回应里可以带一个 VLAN 号,交换机收到就把这个端口划进那个 VLAN。 于是同一根网线、同一个端口,换个账号登录,网络行为完全不一样。 教工进内网、学生只上外网、打印机只开打印端口、认证失败只能到修复页—— 这张表才是「准入控制」这个词的真实含义。 它和「端口绑定 MAC 地址」的差别在这里:MAC 地址谁都能改,账号改不了。 绑定 MAC 只能防「随手插错口」,防不了「有心人换张网卡」。 所以绑定 MAC 是「防呆」,802.1X 才是「防人」。 最后一个现实问题:认证服务挂了,全网就上不了线。 所以真实部署一定配「认证失败后回落到某个受限 VLAN」, 而不是直接断网——安全措施的第一原则是「自己坏掉时不能拖垮业务」。
四、动手 Demo:802.1X 的三方握手,和一台交换机的账
把一次完整认证拆成七步,数清每步几个报文;再按 48 口、200 台终端算一天的量。
steps = [
("插上网线", "端口未授权", "只有 EAPOL 能过"),
("交换机问身份", "EAP-Req/Id", "1 个报文"),
("终端报用户名", "EAP-Res/Id", "1 个报文"),
("交换机转 RADIUS", "自己不做判断", "1 个报文"),
("RADIUS 与终端", "口令或证书", "2 到 4 个报文"),
("RADIUS 回成功", "EAP-Success", "1 个报文"),
("端口转为已授权", "放行流量", "0 个报文"),
]
low = 1 + 1 + 1 + 2 + 1
for a, b, c in steps:
print(a, b, c)
print("最少", low, "个报文")
print("200 台一天", 200 * low, "个,约", 200 * low * 60 // 1024, "KB")
实跑输出:
--------------------------------------------------------------------
802.1X 的三方握手,和一台交换机的账
--------------------------------------------------------------------
**有线网络里有个尴尬的事实**:**网线一插就能通,谁插的都一样。**
**802.1X 就是给「插上网线」这件事加一道门禁。**
**它把参与者分成三方,各自干一件事。**
角色 是谁 干什么
----------------------------------------------------------------------
**请求者** **你的电脑** **出示身份**
**认证者** **交换机端口** **在通过之前只放行认证报文**
**认证服务器** **通常是 RADIUS** **真正做判断**
**第二行是整套机制的关键**:**端口在认证通过前不是「关着」,而是「只放行一种报文」。**
**所以设备能说话,但只能说「我要认证」这句话。**
**这比「先开再踢」安全得多**——**因为「先开」的那一瞬间,攻击已经进去了。**
步骤 发生了什么 报文
-------------------------------------------------------------------------------
① 插上网线 **端口处于未授权** **只有 EAPOL 能过**
② 交换机发 EAP-Request/Identity **问「你是谁」** **1 个报文**
③ 终端回 EAP-Response/Identity **报上用户名** **1 个报文**
④ 交换机转发给 RADIUS **自己不做判断** **1 个报文**
⑤ RADIUS 与终端来回 **口令或证书校验** **2 到 4 个报文**
⑥ RADIUS 回 EAP-Success **认证通过** **1 个报文**
⑦ 端口转为已授权 **放行正常流量** **0 个报文**
**一次完整认证最少 6 个报文**,**加上 RADIUS 那边来回,实际在六到八个之间。**
**这些报文都在二层,走的是 EAPOL,不带 IP 地址**——
**所以「还没拿到 IP」的设备也能认证,这个顺序很重要。**
**现在算一台交换机的账**:
项目 结果
-------------------------------------
端口数 **48**
每天上线终端 **200 台**
每台认证报文 **6 个**
一天报文总数 **1200 个**
假设每个报文 60 字节 **70 KB**
**数字很小,说明身份认证本身不费带宽。**
**真正费事的是「认证之后给什么权限」**——
**RADIUS 的回应里可以带一个 VLAN 号,交换机收到就把端口划进那个 VLAN。**
身份 分到哪个 VLAN 能干什么
--------------------------------------------------------
**教工账号** **VLAN 10** **能访问内网服务器**
**学生账号** **VLAN 20** **只能上外网**
**打印机** **VLAN 30** **只开打印端口**
**认证失败** **VLAN 99** **只能到修复页**
**这张表说明 802.1X 的价值不在「拦人」,在「按人分流」**:
**同一根网线,换个账号登录,网络行为完全不一样。**
**这也正是它比「端口绑定 MAC 地址」高明的地方**——**MAC 谁都能改,账号改不了。**
七步里最少六个报文,加上 RADIUS 那边的来回,实际在六到八个之间。 这个数字小得出人意料——身份认证本身几乎不占带宽,它占的是「时间」。 注意第 1 步和第 7 步:一步报文都没有,因为它们不是报文,是端口的开关状态。 整套机制真正的动作就发生在这两步,前面五个报文全是为了让这个开关动一下。 最后那点流量算出来只有几十 KB,但它换来的是「按人分流」: RADIUS 返回一个 VLAN 号,端口就换一个身份。 所以 802.1X 的价值从来不在「拦人」,而在「分人」。
30 秒实验
- 算一下:如果每台终端每天重连 5 次,200 台一天多少报文?(6000 个,仍然只是几十万字节)
- 想一下:为什么认证报文要在二层走,而不能等拿到 IP 再说?
- 想一下:认证服务器挂了,网络该怎么表现?
常见误区
- 以为「插上网线就该通」。 802.1X 的存在就是为了推翻这句话,端口在认证前只放行 EAPOL。
- 以为「绑了 MAC 就等于准入控制」。 MAC 谁都能改,那是防呆不是防人。
- 以为「认证越严越好」。 服务器一挂就全网瘫痪,必须留回落通道。
自测三问(点开对答案)
1. 802.1X 的三个角色? —— **请求者、认证者(交换机端口)、认证服务器(RADIUS)**。 2. 认证通过前端口是怎么处理的? —— **不是关闭,而是只放行 EAPOL**,所以设备还能喊「我要认证」。 3. 为什么 PEAP 比 EAP-TLS 部署成本低? —— **终端只要信任 CA**,不用给每台机器单独发客户端证书。全书到此结束。九章下来,从一根网线到一个网页,这条链上的每一环都拆开看过了。最后一句话 :协议之所以长成这样,不是因为设计者聪明,而是因为每一个约束都真实存在过。
- ☐ (全书完)