什么是 MAC 地址?
MAC 地址是网络接口在链路层使用的标识符。以太网和 Wi-Fi 通常使用 48 位地址,一般显示为六组两位十六进制数。设备靠它在局域网内交换数据帧。它与 IP 地址不同,后者负责跨网络通信。
MAC 地址用在哪里
在同一个以太网或 Wi-Fi 网段内,交换机和无线接入点依靠链路层地址来投递数据帧。路由器收到数据帧后会剥掉原来的链路层封装,再为下一段链路重新封装。公网上的网站通过普通的网页请求,一般拿不到访问者的 MAC 地址,它看到的是连接的源 IP 等网络层信息。
一台设备可以有多个网络接口,因此也就有多个 MAC 地址。虚拟网卡和容器也可能拥有各自的地址。过去,硬件厂商分配的大量地址都带有已登记的前缀,但仅凭前缀并不能可靠地判断设备的使用者,甚至连设备当前的实际位置也判断不了。
地址随机化与隐私
手机和笔记本电脑可能使用随机或私有的 Wi-Fi 地址,扫描网络或加入不同网络时尤其如此。这让跨网络的被动追踪变得更加困难。为了让网络能够认出设备,针对某个已保存网络使用的地址可能会在一段时间内保持不变。具体表现因设备和设置而异,所以不要以为看到的每个地址都永久对应一块出厂分配的网卡。
有些网络会使用 MAC 地址白名单,但地址在本地链路上可以被观察到并被冒用。因此,白名单只是一种方便管理的手段,而不是强身份验证。真正的访问控制应当依靠当前的 Wi-Fi 加密方式和合适的接入策略。
MAC 地址与 IP 地址
MAC 地址属于某个具体的链路层接口或虚拟接口;IP 地址则是为网络层通信而分配的。两者都可能变化。家用路由器通常动态分配局域网 IP 地址,而一个公网 IP 可能通过 NAT 被许多设备共用。这两种标识单独拿出来,都无法证明用户的身份。
要查看某个接口,可以使用操作系统的网络设置或可信的命令行工具。排查家庭网络时,请记下连接的是哪个接口,以及是否启用了随机地址。只有在获得许可的情况下才去对照路由器的租约表;表中的名称和地址可能已经过时。
什么时候需要关注 MAC 地址
排查局域网连通性、在无线接入点的客户端列表中找出某台设备,或者弄清为什么修改隐私设置后网络中的地址保留失效了,这些时候 MAC 地址就派上了用场。它无法告诉您数据在互联网上走的是哪条路径。如果是外部连接出了问题,请分别检查 DNS、IP 编址和路由。
ARP 与 IPv6 邻居发现
在本地 IPv4 链路上,ARP 负责把下一跳的 IP 地址映射为链路层地址。IPv6 则改用基于 ICMPv6 的邻居发现(Neighbor Discovery)。这些都是本地链路上的机制,并不能用来通过 MAC 地址在全球范围内定位设备。请参阅 ARP 与邻居发现。