前阵子帮朋友排查一个二层环路,抓包的时候发现交换机上一直在转发一个目标地址为01:00:53:00:00:fb的组播帧。第一次看到这个地址的人基本都会愣一下:它不像 PC 网卡的 MAC,也不是ff:ff:ff:ff:ff:ff广播,到底是谁在发、有什么用、是不是网络故障甚至攻击?
把这个地址搞清楚,其实能顺便解决一大批“MAC 地址怎么查”“怎么通过 MAC 认设备”“为什么有的设备 MAC 一直变”之类的日常问题。这篇文章我就从01:00:53:00:00:fb这个具体地址入手,拆一下它背后的协议逻辑,再把查询、修改、排查 MAC 地址的实操方法一起讲清楚。
1. 先把这串地址拆开:01:00:53:00:00:fb 到底在说什么
1.1 第一个字节就暴露了它不是普通网卡地址
MAC 地址一共 6 个字节,12 个十六进制字符。最重要的判断点不在后面,而在第一个字节。
01转换成二进制是00000001,重点看最低位。MAC 地址第一个字节的最低位是 1 时,代表这是一个组播 MAC 地址;是 0 时,才是单播地址。
00:...:单播,地址唯一对应一块网卡;01:...:组播,代表一个“群组”,网卡可以主动选择接收或丢弃;ff:...:广播,所有网卡都必须接收。
所以看到开头是01,就要立刻意识到:这不是某台电脑、某台手机的真实物理网卡地址,而是某个协议在网络上周期性发送的组播帧。普通网卡不会拿01:...当自己的 MAC 用,否则通信直接乱套。
1.2 OUI 与厂商前缀:00:00:53 的来历
MAC 地址前三个字节叫 OUI,由 IEEE 分配给厂商。比如00:1A:2B、DC:0B:1A这类前缀,很多查询工具能直接告诉你属于谁。
01:00:53这个前缀有点特殊。它去掉组播位之后对应的是00:00:53,这个 OUI 早期是给 Xerox 登记的。要知道 Ethernet 本身就是 Xerox 参与发明的,早期地址池里有很多历史遗留分配。后来整个01:00:53组播地址段被一些网络设备厂商拿去做二层协议专用地址,最典型的就是 Extreme Networks 的 EDP 协议。
这里有个容易踩的坑:用01:00:53去查标准 OUI 数据库,不一定能直接查到结果,因为组播地址不属于“可分配给网卡”的 OUI。你得把它当成协议保留地址来看。
1.3 最后三个字节 00:00:fb:组编号而不是设备序列号
01:00:53:00:00:fb里的后三个字节00:00:fb不是设备序列号,而是协议组编号。
一个厂商拿到组播地址段后,可以在这个段里继续细分用途。fb这个值在 Extreme Networks 的协议体系里,对应的是 EDP,即 Extreme Discovery Protocol。也就是说,凡是发给01:00:53:00:00:fb的帧,基本都是 Extreme 设备用于邻居发现、拓扑探测的二层组播。
可以类比成:01:00:53是“厂商标识”,00:00:fb是“部门编号”。两者合在一起才是一个完整的协议目标地址。
1.4 为什么要强调“别拿它当网卡地址”
日常改 MAC 的时候,很多人为了方便,随手填一个01:...开头的地址,结果网络直接不通。原因很简单:组播地址不是某个网卡的唯一标识,交换机收到目标为组播地址的帧,不会按单播去转发,而是可能泛洪到所有端口,或者只交给那些“订阅”了该组播组的端口。
正确的可本地管理单播 MAC 地址,第一个字节应该满足这样几个条件:
- 最低位为 0,代表单播;
- 第二位为 1,代表本地管理地址,不是全球唯一 OUI;
- 转换成十六进制后,第一位通常是
02、06、0A、0E、12这类值。
比如02:00:00:00:00:01,这个地址就可以安全地用于本地测试网卡,因为它既不会和全球厂商前缀冲突,也不会被当成组播。
2. 它出现的场景:Extreme Networks 的 EDP 协议
2.1 EDP 是什么,解决了什么问题
EDP 的全称是 Extreme Discovery Protocol,是 Extreme Networks 交换机上常用的二层邻居发现协议。
它干的事情和 Cisco 的 CDP 有点类似:交换机启动后,会周期性向01:00:53:00:00:fb这个组播地址发送包含自身信息的报文,比如系统名称、软件版本、接口编号、VLAN 配置等。相邻的 Extreme 交换机收到这些报文后,就能自动建立邻居表,画出整个二层拓扑。
这个协议还有什么实际价值?三个字:防环路。
在传统二层网络里,如果管理员不小心把两根网线同时插在两台交换机上,又没有开生成树协议,广播风暴可能瞬间打垮网络。EDP 有一个作用就是让邻居之间快速交换信息,配合其他机制发现物理环路。另外,在做设备堆叠、链路聚合或者网络自动配置时,EDP 也能帮助设备自动识别对端能力。
我在实际抓包里看到01:00:53:00:00:fb时,基本都会顺手确认一下网络里有没有 Extreme 的老设备,或者某个软件交换机把 EDP 当成了可透传的二层组播。大多数情况下,它只是一个正常协议帧,不代表网络故障。
2.2 怎么在抓包里认它:Wireshark / tcpdump 过滤
如果你在 Wireshark 里看到某个帧的目标地址是01:00:53:00:00:fb,可以用下面的过滤器直接把它挑出来:
eth.addr == 01:00:53:00:00:fb如果是 tcpdump 或者命令行环境,用:
tcpdump -i eth0 -nn -e ether dst 01:00:53:00:00:fb-e参数很关键,它会让 tcpdump 在输出里显示以太网头部的源 MAC 和目标 MAC。否则你只能看到 IP 层信息,容易忽略这种纯二层协议帧。
正常情况下,这类帧的 EtherType 不是 IPv4 也不是 IPv6,而是厂商私有类型。Wireshark 如果带了解析插件,会直接显示成 EDP 协议;如果没识别出来,显示成未知 EtherType,也不要慌,先看目标地址,再查一下厂商协议表就行。
2.3 其他容易搞混的组播 MAC 地址
二层组播地址非常多,刚开始接触的人很容易把01:00:53:00:00:fb和下面这些常见地址搞混:
| 组播 MAC 地址 | 常见用途 | 备注 |
|---|---|---|
01:00:5e:xx:xx:xx | IPv4 组播在以太网上的映射 | 由 IGMP/协议组播产生 |
33:33:xx:xx:xx:xx | IPv6 组播、邻居发现 | 对应 IPv6 组播地址后缀 |
01:80:c2:00:00:00 | STP/RSTP/MSTP 生成树协议 | 标准二层协议 |
01:80:c2:00:00:01 | 802.3x 流控 PAUSE 帧 | 用于流量控制 |
01:80:c2:00:00:02 | LACP 链路聚合控制 | 慢协议之一 |
01:80:c2:00:00:0e | LLDP 链路层发现协议 | 自动发现邻居设备 |
01:00:0c:cc:cc:cc | Cisco CDP/VTP/UDLD 等 | Cisco 私有组播 |
01:00:53:00:00:fb | Extreme EDP 邻居发现 | 本文主角 |
区分方法很简单:先看前缀,再确认 EtherType,最后查协议文档。前三个字节决定大方向,后三个字节决定具体协议。
2.4 家用网络里看到它怎么判断
普通家庭网络里一般不会出现01:00:53:00:00:fb,因为家用路由器、光猫、交换机基本都不跑 EDP。
如果真在抓包里看到了,可能性有几个:
- 局域网里有人用了支持 Extreme 协议的老旧交换机,或者企业级设备;
- 某些软路由、开源网络软件为了兼容性,自动发送了带类似组播地址的探测帧;
- 有人做网络实验,手动配置了组播地址。
我的建议是:先别急着认为被攻击。看它的源 MAC 是什么设备,再顺着端口找物理设备。如果只是周期性出现且帧频率很低,大概率是正常协议探测;如果频率异常高,比如一秒钟几十上百条,再考虑是不是协议配置错误导致的组播风暴。
3. 怎么查 MAC 地址、怎么通过 MAC 认设备
3.1 本机 MAC 地址的查询命令
普通用户最常搜的问题是“mac地址怎么查”,其实不同系统的命令差异很小。
Windows 上,最直接的是打开命令提示符或 PowerShell,执行:
getmac /v /fo list这个命令会把所有网卡的物理地址和连接名列出来。想看得更细,可以用:
ipconfig /all在每个网卡的“物理地址”一栏,就能看到 MAC。
macOS 上,推荐用:
ifconfig en0 | grep ether或者更友好的:
networksetup -getmacaddress en0Linux 下最通用的是:
ip link show也可以直接读文件:
cat /sys/class/net/eth0/address这些命令的返回结果有一个共同点:显示的都是当前网卡实际在用的 MAC 地址,不一定是出厂 MAC。如果系统或网卡驱动开了随机化地址,看到的值会跟包装盒上印的不一样。
3.2 用 OUI 数据库反查厂商和型号
知道了 MAC 以后,很多人想进一步知道“这是什么设备”。第一步永远是查 OUI。
把 MAC 前 6 个字符,比如00:1A:2B,拿到这几个地方查:
- IEEE 官方 OUI 查询页面;
- Wireshark 自带的 OUI Lookup;
- macvendors.com;
- 部分厂商官网的设备自查工具。
查询结果能告诉你前 24 位属于哪个厂商,但注意,它不能直接告诉你型号。
比如查到的 OUI 是 Cisco 的,你只能判断“这是一台 Cisco 设备”,至于它到底是交换机还是 AP,还需要看完整 MAC 的后 24 位,再结合设备厂商的产品线数据库去猜。
3.3 为什么“查型号”经常查不准
网上经常有人问“mac地址查询设备型号网站是什么”,言下之意是想输入一个 MAC 就查出完整设备型号。
现实没那么美好。MAC 地址不像身份证号,没有国家标准规定哪一段对应哪个型号。厂商通常只注册 OUI,后面的 24 位怎么分配完全看自己心情,有些厂商会按产品线分段,有些厂商干脆随机分配。
所以想准确知道型号,更靠谱的做法是组合几个手段:
- 查 OUI 确定厂商;
- 看设备在网络上开了哪些端口和服务,比如用端口扫描做指纹识别;
- 看 DHCP 请求里的 hostname 字段,很多设备会暴露型号信息;
- 用 LLDP/CDP 抓邻居信息,企业级设备往往会在协议报文里自带型号和系统名。
我只把前 6 个字节当作“国家代码”看待,后面的字节当作“内部编码”,一切以实际网络行为为准。
3.4 应用获取 MAC 地址的权限限制
手机 App 要获取 MAC 地址,也是这些年很热门的问题。Android 6 之前,App 用系统接口就能直接拿到 Wi-Fi 网卡的真实 MAC;Android 6 之后,需要定位权限;Android 10 之后,第三方 App 默认只能拿到一个假地址,也就是02:00:00:00:00:00。
iOS 更早开始限制,普通 App 拿不到设备真实 MAC,只能看到类似于随机生成的 Wi-Fi 地址。
底层原因和01:00:53:00:00:fb的组播特性正好形成对比:真实 MAC 本来是单播唯一标识,但如果每个 App 都能随便拿到,用户就没有隐私可言。现在的系统普遍让 App 只能拿到“随机化后的本地地址”,既不能定位到具体设备,也可能每次连接都变化。
4. 改 MAC 地址的实操场景与注意事项
4.1 Windows 11 修改 MAC 的三种方法
Windows 11 修改 MAC 不算难,但需要注意不同网卡驱动支持程度不一样。
第一种,图形界面。打开“设备管理器”,找到网卡,右键“属性”,切到“高级”选项卡。如果列表里有“Network Address”或者“网络地址”,选“值”,填 12 个十六进制字符,比如02AABBCCDD01,确定后重启网卡或电脑。
第二种,PowerShell。用管理员权限执行:
Set-NetAdapter -Name "以太网" -MacAddress "02AABBCCDD01"注意网卡名称要跟Get-NetAdapter里显示的一致。这个命令本质上是调用驱动层的接口,部分老网卡会直接报错。
第三种,改注册表。打开注册表编辑器,定位到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}下面会有多个子键,每个对应一块网卡。找到DriverDesc是你网卡名称的那个子键,在右侧新建一个字符串值,名字叫NetworkAddress,数值填想要设置的 MAC 地址,然后重启。
改完以后记得验证:
ipconfig /all看“物理地址”是否变成你填的值。
4.2 Linux 和 macOS 下的修改
Linux 改 MAC 很方便,一条命令就够:
sudo ip link set dev eth0 down sudo ip link set dev eth0 address 02:00:00:00:00:01 sudo ip link set dev eth0 up缺点是重启后失效。想要持久化,可以把命令写进 systemd 服务,或者在 netplan/yaml 配置里指定:
network: version: 2 ethernets: eth0: macaddress: 02:00:00:00:00:01macOS 改 MAC 稍微麻烦一点,High Sierra 之后的系统对网卡地址写入有限制。老版本可以这样:
sudo ifconfig en0 ether 02:00:00:00:00:01新版本如果提示不支持,可以创建虚拟网络接口来测试,或者在路由器上做 MAC 克隆,而不是硬改电脑网卡。
4.3 光猫桥接改 MAC/SN 的风险与操作顺序
很多人把宽带升级后,都遇到过“光猫拨号正常,但改桥接用路由器拨号就不行”的问题。这背后可能不是账号密码问题,而是宽带运营商把账号和终端 MAC、SN 绑在一起了。
路由器拨号的时候,如果 WAN 口的 MAC 和运营商绑定的 MAC 不一致,认证就会失败。
最常规的解决办法是 MAC 克隆:在新路由器上找到 WAN 口设置,把之前能拨号成功的电脑网卡 MAC 填进去,然后重启光猫和路由器。这样路由器发出去的 MAC 就和原设备一致了。
至于改光猫自身的 SN 和 MAC,风险相对更高。光猫的 SN 相当于设备序列号,MAC 也会在注册和认证流程里被校验。如果你确定光猫是你自己购买或运营商允许维护的设备,再考虑通过超级管理员界面、Telnet 或厂商工具修改。操作前务必完成两件事:
- 保存现有配置,至少记录原始 SN、MAC 和宽带的认证逻辑 ID;
- 确认设备有恢复出厂的方法,手残改挂了还能救。
我不建议为了“让运营商认不出设备”而去动这些参数。正常家庭网络场景下,光猫能正常认证、桥接能通,就完全没必要改 SN。
4.4 H3C 设备查看和修改接口 MAC
企业网络里经常用到华三的交换机或路由器,查看接口 MAC 的命令很基础。
例如查看 GigabitEthernet 1/0/1 的接口信息:
display interface GigabitEthernet 1/0/1输出里会有一行类似Hardware address is 3c-c1-a0-xx-xx-xx的信息,这就是接口当前使用的 MAC。
如果想查整台中继 MAC 表,用:
display mac-address这条命令看到的是设备学习到的 MAC 表,也就是局域网里其他设备的 MAC,不是本机接口 MAC。很多新手会搞混这两个概念。
至于修改接口 MAC,华三部分产品在接口视图下支持这样的命令:
interface GigabitEthernet 1/0/1 mac-address 3c-c1-a0-11-22-33但是要注意,三层接口和二层接口的 MAC 修改规则不同,有些型号只允许修改 VLAN 接口的 MAC,物理口不让改。具体要看你的设备型号和软件版本,最好是查官方命令手册。
4.5 为什么部分芯片(杰理701、蓝牙魔方)的 MAC 会自己变
很多做蓝牙硬件开发的人会碰到一个奇怪现象:同一个蓝牙模块,每次重新上电后 MAC 都不一样,杰理等国产蓝牙芯片尤其常见。
根本原因是:芯片本身没有一个全球唯一的 MAC 地址烧录在里面。蓝牙协议支持好几种地址类型:
- 公共地址:全球唯一,需要厂家向 IEEE 申请;
- 静态随机地址:芯片上电时根据随机数生成,重启后可能保持,也可能改变;
- 私有可解析地址:周期性变化,用来保护隐私;
- 私有不可解析地址:变化更频繁。
很多便宜蓝牙芯片为了省成本,不在出厂时烧录公共地址,而是每次开机从 EEPROM 或 flash 读一个随机种子,生成静态随机地址。如果 flash 没写固定值,或者 seed 变了,MAC 自然就变。
魔方蓝牙、智能灯泡这类设备,MAC 里如果经常变化,不用惊讶。它影响的只是配对记录稳定性,不影响功能性连接。想在 App 里“设置 MAC”,本质上是做不到的,除非固件本身预留了写地址接口。我建议不要折腾底层 MAC,直接在应用层用设备名称或服务 UUID 做识别,这才是消费级蓝牙设备的主流做法。
5. 一个判断“陌生 MAC 地址”的排查框架
5.1 分四步走
抓包或者查 ARP 表时看到陌生 MAC,我一般按四个顺序排查,这个框架可以套用到任何地址上。
第一步:看第一个字节,判断单播还是组播。如果是01、33、ff开头,直接往协议层想,不要去找物理设备。如果是单播,继续下一步。
第二步:查 OUI。去 IEEE 或 macvendors.com 输入前 6 位,确认是哪个厂商。查不到也很正常,可能是本地管理地址或随机地址。
第三步:看源 MAC 是否出现在交换机 MAC 表里。在支持的命令行设备上执行display mac-address,看它从哪个端口学到的。定位到端口,就能顺着网线找到设备。
第四步:抓包看特征。通过 DHCP、mDNS、LLDP 或它发起的连接请求,判断它是什么类型设备。
5.2 一个实际案例
之前遇到过一次网络卡顿,抓包后发现大量目标地址是01:00:53:00:00:fb的帧周期性出现,频率高达每秒几十帧。一开始以为是有设备在发组播风暴,排查后才发现,是一台做实验用的二手 Extreme 交换机被接进了办公网。
它在持续广播 EDP,而办公网里没有其他 Extreme 设备接收,这些组播帧被交换机当普通组播泛洪到了所有端口。虽然帧数量不多,但叠加在其他流量里,就造成了授权网络监控系统疯狂告警。
处理方式不是封掉这个地址,而是在 Extreme 交换机上关闭 EDP 协议发送,或者把实验设备隔离到独立的 VLAN。单纯靠 ACL 过滤组播地址只是治标,因为协议还会继续尝试发送。
这个案例给我的启发是:看到特殊 MAC 地址,第一反应应该是“它属于什么协议”,而不是“谁在发垃圾流量”。绝大多数看起来诡异的地址,背后都有明确的协议逻辑。
5.3 最后一点经验
如果你只是普通家庭用户,记住一个原则就够了:真实网卡的 MAC 一定是单播地址,也就是第一个字节一定是偶数。凡是01、33、ff开头的,都不是某一台设备的“身份”,而是网络协议在互相打招呼。
做网络排查这几年,我抓过不少开局是01:00:53:00:00:fb的报文,也从一开始的“这什么鬼”到现在能够顺手判断出它是 Extreme 设备的邻居发现协议。这种能力没有什么捷径,就是多抓包、多查协议号、多分析设备行为。
下次再有人问你“mac地址怎么查”,你可以先反问他一句:“你查到的那串地址,第一个字节是奇数还是偶数?”这一个问题,就足够筛掉一半的误解。