分类
经验

随机MAC导致无法连接Wi-Fi

如果你换了新手机,同步了旧手机的资料后,不能连接Wi-Fi;手机升级系统版本后,不能连接Wi-Fi。通常是你准备连接的那个SSID(Wi-Fi)信号,采用了除密码以外的其他认证机制,例如绑定MAC地址。禁用设备的随机MAC功能,强制使用设备的硬件MAC地址来完成SSID连接认证。

如果你的(手机)设备出现如下两种状况,建议阅读下文,阅读全文约5分钟。

场景一:换了新手机,同步了旧手机的资料后,不能连接Wi-Fi;
场景二:手机升级系统版本后,不能连接Wi-Fi。

出现以上两种场景,通常是你准备连接的那个SSID(Wi-Fi)信号,采用了除密码以外的其他认证机制,例如绑定MAC地址。
然后由于(新)设备具备随机MAC地址(也叫“动态MAC”、“私有地址”)功能,设备使用一个虚拟的MAC地址来连接SSID,导致与绑定的硬件MAC地址不能匹配而认证失败。

解决办法:去使能(禁用)设备的随机MAC功能,强制使用设备的硬件MAC地址来完成SSID连接认证。本文章的标题是iPhone12无法连接Wi-Fi,以下方法和介绍同样适用于其他品牌的手机和无线网络设备。


什么是Wi-Fi

什么是Wi-Fi
什么是Wi-Fi

你不要笑。

Wi-Fi是国际公认的产品认证标准,表示产品在互操作性、安全性和一系列应用专有协议方面,达到了行业认同的标准。在大众的认知里,Wi-Fi=无线网络=不需要借助网线就可以使用的互联网。但实际上Wi-Fi是一种认证标准。因此,Wi-Fi联盟也只好“将错就错”,并顺势推出了最新的Wi-Fi 6 认证标准。


Wi-Fi是如何工作的

Wi-Fi是基于IEEE 802.11 a/b/g/n协议,在标准协议中,定义了AP(无线接入点)和STA(站或客户端)的两种工作模式。协议中规定了Beacon、Ack、Data、Probe等多种无线数据帧类型,在STA连接到AP时进行交互的就是数据桢和应答帧、同时AP周期性发送Beacon帧。

  • Beacon帧,字面意思为灯塔。灯塔的作用就是通过灯光让周围的船只发现它的存在。
  • Ack帧,应答帧。在发起连接请求与确认连接请求的过程中,通过Ack帧交互。
  • Data帧,数据帧。交互的是AP与STA之间传输的数据。
  • Probe帧,探测、探针。Probe帧由STA发出,作用是搜寻可用AP的存在。

在STA没有连接到AP时,手机等STA也会发送Probe帧进行探测询问哪个AP是可以接入的。Wi-Fi探针就是基于各种无线数据帧来获取手机等Wi-Fi客户端的MAC地址信息。
这个可以理解为:男生内心喜欢女生,女生内心也倾慕男生。这个时候表达出来是很重要的,如果双方都不表达出来,那么最终是无法在一起的。所以这个对彼此的喜欢的表达就可以理解为Beacon帧和Probe帧。

每个AP每隔一定时间(几十毫秒到几秒不等)向周围的STA和AP广播Beacon帧,就是告诉周围的STA和其它AP:我是XXX(bssid)快来连接我!我是XXX(bssid)快来连接我!
这个比较好理解:你点开手机的Wi-Fi连接页面,就会出现一堆的SSID(Wi-Fi信号),然后还能呈现不同的信号强度。

每个STA(可以理解为手机、笔记本)除了监听周边AP发送的Beacon帧以外,还会发送Probe帧:我是YY(MAC地址xx-xx-xx-xx-xx-xx)我能连你吗?我是YY(MAC地址xx-xx-xx-xx-xx-xx)我能连你吗?
这就是为什么你一回家就自动连接上了家里的Wi-Fi、一到公司就自动连上了公司的Wi-Fi(当然,前提是你曾经成功连接过)。也可以理解为像手机的通话功能一样,即使你没有在打电话,这部手机也是在跟周边的一个或多个通讯基站保持连接的,并随着位置的移动,而自动切换连接到的基站,否则你就打不出电话,别人也拨不通你的电话。


启用随机MAC的目的是什么

无线终端设备默认开启MAC地址随机化功能,是为了防范Wi-Fi探针。需要特别指出的是,Wi-Fi探针是一种探测技术,而非一种像针一样的具体设备。

Wi-Fi探针技术是指基于Wi-Fi探测技术来识别AP(无线访问接入点)附近已开启Wi-Fi的智能手机或者无线终端(笔记本、平板电脑等),无需用户连接上Wi-Fi,Wi-Fi探针就能够识别用户的信息。当我们走进探针信号覆盖区域内且我们的无线设备打开Wi-Fi开关,我们的设备就能被探针探测出来,无论是iOS或者安卓系统都能轻易检测到,并且获取设备的MAC地址。Wi-Fi探针有以下几个特点:

  • 用户无需参与,无需连接到网络
  • Android、iOS全兼容
  • 自动探测区域内无线设备MAC地址
  • 手机、平板均能探测

对于周围的无线设备来说,Wi-Fi探针是透明的,探针不需要与周围的设备有任何交互,其本身不需要发出任何Wi-Fi信号。

Wi-Fi探针其实就是一个AP,它定时的向自己的四周广播发送Beacon帧,用来通知附近的无线设备AP的存在(好比它一直在向周围喊:我在这里大家快来连接我)。

我们的无线设备,手机、平板电脑等,也不停的发送着Probe帧,去寻找附近可用的AP。在Probe帧的介绍中就我们可以看到Probe帧包含了设备的MAC地址,当AP接收到Probe帧之后就获取了这个设备的MAC地址,而这个AP就是Wi-Fi探针。因此只要在Wi-Fi探针覆盖区域内的设备打开着Wi-Fi,探针就能收集到它的MAC地址。

Wi-Fi探针的最初用途是统计与分析周围的Wi-Fi设备。随着智能手机的普及,Wi-Fi探针也部署得越来越多。只要手机的Wi-Fi开着,不管有没有连接热点,都可以被探针探测到。手机号码与上网的具体信息(包括QQ号、微信号等),光靠探针是获取不到的,还需要结合其它辅助(这个具体不能深入)。因此,现在的一些手机为了不被探针抓取到自己的MAC地址,默认情况下会使用随机的伪MAC地址来连接Wi-Fi。

MAC地址随机化是基于软件层面实现的,并非改写设备原有的硬件MAC地址。通俗的理解为:张三戴着李四的人脸面具去与人交谈。

以下斜体文字来自Apple官方,表述的是什么是“MAC 地址随机化”。

Apple平台会在未与无线局域网关联的情况下执行无线局域网扫描时使用随机介质访问控制 (MAC) 地址。执行这些扫描可用于发现和连接已知的无线局域网,或为使用地理围栏的App提供“定位服务”协助,如基于位置的提醒事项或在Apple的“地图”中固定一个位置。请注意,尝试接入首选无线局域网时发生的无线局域网扫描不是随机的。

在设备未与无线局域网关联或设备处理器处于睡眠状态的情况下进行增强型首选网络卸载 (ePNO) 扫描时,Apple平台也会使用随机MAC地址。设备为使用地理围栏的App使用“定位服务”(如基于位置的提醒事项会确定设备是否接近某个特定位置)时,会运行ePNO扫描。

现在由于设备从无线局域网断开连接时其MAC地址会更改,因此即使设备接入蜂窝网络,无线局域网流量的被动观察程序也不能使用该地址持续跟踪设备。Apple已告知无线局域网生产企业iOS和iPadOS无线局域网扫描会使用随机的MAC地址,且Apple和生产企业都无法预测这些随机的MAC地址。

从以上的文字中,我们可以总结出来至少两点有利于保护自己隐私的信息:

  • 在不需要连接Wi-Fi的时候,把Wi-Fi关掉。这样一来可以防止被探测到,二来还可以为手机省电(手机不断发送Probe帧肯定是会消耗电能的)。
  • 即使你的手机具备随机MAC的功能,在不需要连接Wi-Fi的时候,也最好把Wi-Fi关掉,这样可以为手机省电。

如何禁用随机MAC功能

不同的设备禁用随机MAC的方法有差异,具体请往下看:

Apple iPhone(iOS 14)

Huawei(Mate 40 Pro,EMUI 11)

Samsung(S20)

Xiaomi(10 Lite,MIUI 12)

Oneplus(8T,Android 11)

Apple iPad Pro(iOS 14)

以上列举的是部分设备禁用随机MAC的方法,其他设备也是以此类推。


什么是MAC地址

如同每一个人都有一个身份证号码一样,每一台网络设备都用物理地址来标识自己,这个地址就是MAC地址。网络设备的MAC地址是全球唯一的。

MAC地址,全称Media Access Control Address,也翻译为:介质访问控制地址、媒体存取控制位址、物理地址、硬件地址、以太网地址、MAC位址、LAN Address、Ethernet Address、Physical Address,都是同一个意思。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC地址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。MAC地址由网络设备制造商在生产网卡时烧录在网卡的EPROM中。

MAC地址长度为48比特(6字节),通常用十六进制表示,即数字0至9、字母A至F。
MAC地址的常见标记格式有以下四种,意义是一样的:
54-89-98-D1-E2-F3
5489-98D1-E2F3
54:89:98:D1:E2:F3
548998D1E2F3

MAC地址结构
MAC地址结构

MAC地址包含两部分:
前24比特,是组织唯一标识符(OUI,Organizationally Unique Identifier),由IEEE统一分配给设备制造商。例如,华为的网络产品的MAC地址前24比特是0x00e0fc。实时更新的OUI列表可以通过这个链接查询:http://standards-oui.ieee.org/oui/oui.txt
后24比特,序列号是厂商分配给每个产品的唯一数值,由各个厂商自行分配(这里所说的产品可以是网卡或者其他需要MAC地址的设备)。

不同设备查询MAC地址的方法是不一样的,例如Windows设备查询MAC地址是在CMD窗口输入ipconfig /all

Windows设备获取MAC地址
Windows设备获取MAC地址

苹果的macOS设备运行的是UNIX操作系统,macOS查询MAC地址的命令是在终端窗口输入ifconfig,或者ifconfig en0(en0表示具体某一块网卡)。

macOS设备获取MAC地址
macOS设备获取MAC地址
macOS设备获取MAC地址(获取指定网卡的MAC地址)
macOS设备获取MAC地址(获取指定网卡的MAC地址

Linux设备获取网卡MAC地址是输入ifconfig,或者ifconfig eno16777736(eno16777736表示具体某一块网卡)。

Linux设备获取MAC地址
Linux设备获取MAC地址
Linux设备获取MAC地址(获取指定网卡的MAC地址)
Linux设备获取MAC地址(获取指定网卡的MAC地址

原创不易,转载请注明出处。原标题:随机MAC导致无法连接Wi-Fi,原文章链接:https://ieclub.net/experience/2020/11/05/1338.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注