关于Mac显示连接到Wifi但是无法上网问题的解决

今天开机以后,突然发现Mac显示连接上网但是无法浏览网页,已知无线局域网本身没有问题,于是开始排查:

硬件问题

将 Mac 开机,并在 Mac 启动时继续按住电源按钮。当你看到启动选项屏幕(显示有启动磁盘以及标有"选项"字样的齿轮图标)时,松开电源按钮。这时,你可以选择进入安全模式进行Wifi的连接,如果此时能够正常连接Wifi,那么恭喜你,首先硬件没有问题,其次局域网运行正常,那么只需要关机重启排查软件问题即可。

DNS

首先怀疑DNS的问题, 于是用dig命令,发现由于连接超时,无法连接到DNS服务器

vbnet 复制代码
➜  ~ dig bing.com

; <<>> DiG 9.10.6 <<>> bing.com
;; global options: +cmd
;; connection timed out; no servers could be reached

➜  ~ dig @1.1.1.1 bing.com // 通过在1.1.1.1这个DNS服务器上执行dig命令,尝试查询bing.com的DNS记录

; <<>> DiG 9.10.6 <<>> @1.1.1.1 bing.com
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

➜  ~ curl -v https://ifconfig.me/ip
*   Trying 34.117.118.44:443...
* Immediate connect fail for 34.117.118.44: No route to host
* Failed to connect to ifconfig.me port 443 after 26 ms: Couldn't connect to server
* Closing connection 0
curl: (7) Failed to connect to ifconfig.me port 443 after 26 ms: Couldn't connect to server

通过上面的测试,猜测是路由表或者防火墙导致

路由表

使用➜ ~ netstat -rn查看路由表是否完整,进行排除;尽管路由表完整,但是

vbnet 复制代码
➜  ~ traceroute  bing.com
traceroute: Warning: bing.com has multiple addresses; using ...
...

...
*traceroute: sendto: Can't assign requested address
traceroute: wrote bing.com 52 chars, ret=-1

一些路由器无法提供往返时间,同时也出现了一些发送数据包的错误

更改系统配置文件

(请参考原文链接->1)

arduino 复制代码
1、打开系统偏好设置--->网络--->WiFi--->高级--->WiFi--->删除首选网络框内的所有网络--->点击好--->点击应用; 

2、还是在网络页面先,在边框有WiFi、蓝牙PAN、网桥等,选中WiFi,点击下面的减号删除WiFi,点击应用; 

3、再次在系统偏好设置中打开网络页面,在左边框的下方点击加号,接口选择WiFi,服务名称随便写,点击创建,然后点击打开WiFi,链接你的WiFi。应该可以上网了。我是在这步解决的问题

4、Finder--->xxx的Mac--->Macintosh HD--->资源库-->Preferences--->SystemConfiguration--->找到NerworkInterfaces.plist文件并删除; 

最终解决: sudo killall mDNSResponder

mDNSResponder是macOS系统中负责处理多播DNS(mDNS)和DNS服务发现的后台进程。它负责解析局域网内的主机名和IP地址之间的关系,并协助服务发现过程,使设备能够相互通信和识别。在终止该进程后,网络连接恢复正常。

curl -v https://ifconfig.me/ip: 收到回复,连接成功

一些反思

  • 即时系统备份:尽管重置系统是下下策,还是应该将电脑文件备份为一份看的见的(硬盘),一份看不见的(云盘);有的时候软件真的有问题官方维修也只能备份后重新刷新
  • Host name的变化: 在重新连接网络以后,发现hostname发生变化,被初始化为MacBook-Air.local.这里建议更改一下自己的主机名,Mac的话在设置->共享->本机名称; 主机名是网络标识符的一部分,用于识别网络上的计算机。当两台计算机具有相同的主机名时,可能会导致地址冲突或者DNS解析问题,当多个设备同时尝试使用相同的mDNS主机名或服务名称时,可能会导致冲突和竞争,使得某些设备无法正确地进行服务发现或连接到网络;至于是不是mDNS的bug,因为log证据不够充足,也没有办法定论了
  • 此时检查进程➜ ~ ps -ef | grep -i mdns, 发现/usr/sbin/mDNSResponder/usr/sbin/mDNSResponderHelper仍然在运行, amazing (
相关推荐
黎宇幻生7 小时前
Java全栈学习笔记39
java·笔记·学习
遇印记10 小时前
大二java学习笔记:二维数组
java·笔记·学习
bnsarocket12 小时前
Verilog和FPGA的自学笔记6——计数器(D触发器同步+异步方案)
笔记·fpga开发·verilog·自学·硬件编程
LK_0713 小时前
【Open3D】Ch.3:顶点法向量估计 | Python
开发语言·笔记·python
li星野13 小时前
打工人日报#20251011
笔记·程序人生·fpga开发·学习方法
摇滚侠13 小时前
Spring Boot 3零基础教程,yml配置文件,笔记13
spring boot·redis·笔记
QT 小鲜肉13 小时前
【个人成长笔记】在Ubuntu中的Linux系统安装 anaconda 及其相关终端命令行
linux·笔记·深度学习·学习·ubuntu·学习方法
QT 小鲜肉13 小时前
【个人成长笔记】在Ubuntu中的Linux系统安装实验室WIFI驱动安装(Driver for Linux RTL8188GU)
linux·笔记·学习·ubuntu·学习方法
急急黄豆13 小时前
MADDPG学习笔记
笔记·学习
Chloeis Syntax14 小时前
栈和队列笔记2025-10-12
java·数据结构·笔记·