关于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 (
相关推荐
宵时待雨30 分钟前
STM32笔记归纳9:定时器
笔记·stm32·单片机·嵌入式硬件
m0_719084111 小时前
React笔记张天禹
前端·笔记·react.js
r i c k3 小时前
数据库系统学习笔记
数据库·笔记·学习
shandianchengzi4 小时前
【小白向】错位排列|图文解释公考常见题目错位排列的递推式Dn=(n-1)(Dn-2+Dn-1)推导方式
笔记·算法·公考·递推·排列·考公
浅念-5 小时前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
The森5 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
tq10865 小时前
Skills 的问题与解决方案
笔记
三水不滴5 小时前
有 HTTP 了为什么还要有 RPC?
经验分享·笔记·网络协议·计算机网络·http·rpc
三块可乐两块冰5 小时前
【第二十九周】机器学习笔记三十
笔记
听麟6 小时前
HarmonyOS 6.0+ 跨端智慧政务服务平台开发实战:多端协同办理与电子证照管理落地
笔记·华为·wpf·音视频·harmonyos·政务