MAC 地址
约 5 分钟阅读
最后更新: 2026-09-02
什么是 MAC 地址
MAC 地址 (Media Access Control Address) 是在数据链路层标识网络设备的 48 位地址,通常写成 00:1A:2B:3C:4D:5E 这样用冒号或连字符分隔的十六进制形式。
MAC 地址工作在数据链路层 (OSI 参考模型第 2 层),用于同一网络 (同一网段) 内的设备之间确定通信对象。路由器之所以能区分家里的 PC、智能手机和物联网设备,就是因为每台设备宣告的 MAC 地址各不相同。另一方面,MAC 地址不会被路由器转发出去,因此不会到达互联网另一端的对象。
地址分为两类:设备出厂时分配的地址 (出厂地址),以及由操作系统在软件层面生成的地址。两者通过首字节中的 2 个比特来区分,这 2 个比特分别表示该地址是全局唯一还是本地管理,以及是单播还是组播。
出厂地址靠前的比特是 IEEE 分配给组织的标识符。分配块分为 MA-L (前 24 位为 OUI)、MA-M (28 位) 和 MA-S (36 位),其中 MA-M 和 MA-S 的前 24 位是 IEEE 注册机构本身的 OUI。因此只按前 24 位查询有时查不到厂商,需要改用 28 位或 36 位重新查询。其余比特由获得分配的组织为每台设备编号,只要遵守分配规则,出厂地址在设计上不会重复。但设备可以在软件层面宣告另一个地址,所以实际在网络中传输的地址并不保证唯一。
MAC 地址与 IP 地址的区别
MAC 地址和 IP 地址对网络通信都不可缺少,但两者的作用和工作的层次不同。
00:1A:2B:3C:4D:5E。用快递来比喻,IP 地址相当于标明最终送达地点的「住址」,MAC 地址相当于在当前这一段路程中接手包裹的「负责人姓名」。路由器根据 IP 地址判断数据包的目标网络,并在每次把它交给下一段路程时改写源和目标的 MAC 地址。因此,最初那台设备宣告的 MAC 地址不会留存到越过中途路由器之后。
把 IP 地址解析为同一网段内 MAC 地址的协议是 ARP (Address Resolution Protocol)。ARP 由要进行通信的主机和路由器使用,中间的交换机并不解析 ARP,而是根据从收到的帧中的源 MAC 地址建立的转发表来转发帧。
MAC 地址随机化
Wi-Fi 的探测帧和连接请求中携带的 MAC 地址是不加密发送的。出厂地址在全球唯一且固定,一直使用它就会形成这样一种状态:只要在周围观测无线电波,就能识别并追踪同一台设备 (Android 的开发者文档也说明,出厂地址会让设备被单独识别和追踪)。为缓解这一问题,iOS 和 Android 引入了在连接 Wi-Fi 时对所用地址进行随机化的机制。
- iOS 14 / iPadOS 14 以后:针对每个 Wi-Fi 网络使用各自独立的随机地址 (专用 Wi-Fi 地址) 进行宣告。可在「设置 → Wi-Fi → 网络名称旁的详情按钮 → 专用 Wi-Fi 地址」中查看和切换。iOS 18 / iPadOS 18 以后可以按网络选择「关闭 / 固定 / 轮换」三种模式,选择轮换时地址大约每两周更换一次。按照 Apple 的说明,在使用 WPA2 及以上的网络中默认为「固定」,在加密强度较弱或没有加密的网络中默认为「轮换」。对于由组织管理的设备,可以在设备管理服务一侧关闭该功能。
- Android 10 以后:默认使用随机化的地址。默认方式是持续性 (persistent) 随机化,即根据 SSID、安全类型等网络配置信息生成地址,并在恢复出厂设置之前对同一网络一直使用该地址。Android 12 以后,在应用建议的网络等部分条件下,会采用每次连接都重新生成地址的非持续性方式。设置界面中可以切换的只是各网络的随机化开关,方式本身无法选择。
随机化的做法是:把地址首字节中的本地管理位置为 1、单播位置为 0,然后用随机数填充其余 46 位。在关闭了随机化的网络中,发送的是出厂地址。
这一机制之所以变得必要,背景是零售店和商业设施曾收集 Wi-Fi 探测请求 (设备在连接之前发出的信号) 中包含的 MAC 地址,用来追踪到店频率、停留时间和移动路线。固定的 MAC 地址与浏览器指纹一样,起到了可以长期追踪个人的标识符的作用。随机化成为默认设置之后,观测无线电波的第三方想跨店铺、跨街区持续追踪同一台设备已经变得困难。不过在持续性随机化下,对同一网络使用的仍是同一个地址,因此从该网络运营方的角度仍然能够判别回访。蓝牙低功耗中也以可解析私有地址 (RPA) 的形式实现了同样思路的对策。
如何查看 MAC 地址
自己设备的 MAC 地址可以通过以下方法查看。
- Windows:在命令提示符中执行
ipconfig /all,查看「物理地址」一项。 - macOS:在「系统设置 → 网络 → Wi-Fi → 详细信息」中作为 Wi-Fi 地址显示。也可以在终端中用
ifconfig en0 | grep ether查看。 - iOS:「设置 → 通用 → 关于本机」中的「Wi-Fi 地址」是硬件 MAC 地址。各网络对应的专用地址可在「设置 → Wi-Fi → 已连接的网络」中查看。
- Android:在「设置 → 关于设备 → Wi-Fi MAC 地址」中查看硬件地址。各网络对应的随机地址可在 Wi-Fi 设置的详情中查看 (项目名称和层级因机型而异)。
- Linux:在终端中执行
ip link show或ifconfig。
在路由器的管理界面中,可以列表查看所有已连接设备的 MAC 地址。设置 MAC 地址过滤 (只允许特定 MAC 地址连接的功能) 时会用到,但 MAC 地址是不加密地载于帧中的,在周围观测到之后就可以拿这个值来宣告自己。过滤并不构成访问控制的边界。
MAC 地址与安全
下面梳理与 MAC 地址相关的安全要点。
- MAC 地址过滤的局限:路由器的 MAC 地址过滤是只允许已登记设备连接的功能。但攻击者可以截获正规设备的 MAC 地址,把自己设备的 MAC 地址伪装 (欺骗) 成该地址。由于 MAC 地址是不加密发送的,这种观测和伪装不需要特别的条件。过滤的效果只相当于在没有上锁的门上挂一块名牌,并不构成访问控制的边界。Wi-Fi 的保护应通过 WPA2 / WPA3 加密和不易被猜到的密码来实现,不要让过滤承担保护的职责。
- ARP 欺骗:攻击者发送伪造的 ARP 响应,把自己的 MAC 地址与网关的 IP 地址绑定,从而窃听同一网络内通信的中间人攻击手法。HTTPS 会加密通信内容本身,但通信对象的信息仍有可能泄露。
- 隐私与追踪:在关闭了随机化的情况下,或在没有随机化功能的设备上,出厂地址会原样载于无线电波中。启用随机化并关闭不必要的 Wi-Fi 自动连接,可以缩短周围观测到的地址持续指向同一台设备的时间。
常见误解
- 设置 MAC 地址过滤就能保证 Wi-Fi 安全
- MAC 地址是不加密地载于帧中的,只要在周围观测到该值并设置到自己的设备上,就能通过过滤。MAC 地址过滤并不构成访问控制的边界。Wi-Fi 的保护请通过 WPA2 / WPA3 加密和不易被猜到的密码来实现,不要让过滤承担保护的职责。
- MAC 地址永远无法更改
- 烧写在硬件中的出厂地址本身不会改变,但设备对外宣告的地址可以通过软件更改。iOS 14 以后和 Android 10 以后默认对 Wi-Fi 连接进行随机化,正是利用了这一机制。在 Linux 和 macOS 上可以用命令设置另一个 MAC 地址,在 Windows 上,只要网卡驱动支持,也可以在设备管理器中设置 (不支持时该项目根本不会出现)。
- 通过 MAC 地址可以在互联网上识别个人身份
- MAC 地址只在同一网段内使用,而且路由器在把数据包交给下一段路程时会改写 MAC 地址,因此设备的 MAC 地址不会传到互联网一侧。网站的服务器无法得知访问者的 MAC 地址。不过在连接到同一 Wi-Fi 的范围内 MAC 地址是可见的,因此本地网络上的隐私风险确实存在 (如果启用了随机化,在那里可见的不是出厂地址,而是针对该网络的随机地址)。