关于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 (
相关推荐
scdifsn1 小时前
动手学深度学习12.7. 参数服务器-笔记&练习(PyTorch)
pytorch·笔记·深度学习·分布式计算·数据并行·参数服务器
jackson凌4 小时前
【Java学习笔记】SringBuffer类(重点)
java·笔记·学习
huangyuchi.4 小时前
【Linux】LInux下第一个程序:进度条
linux·运维·服务器·笔记·进度条·c/c++
大写-凌祁6 小时前
论文阅读:HySCDG生成式数据处理流程
论文阅读·人工智能·笔记·python·机器学习
Unpredictable2226 小时前
【VINS-Mono算法深度解析:边缘化策略、初始化与关键技术】
c++·笔记·算法·ubuntu·计算机视觉
傍晚冰川6 小时前
FreeRTOS任务调度过程vTaskStartScheduler()&任务设计和划分
开发语言·笔记·stm32·单片机·嵌入式硬件·学习
Love__Tay8 小时前
【学习笔记】Python金融基础
开发语言·笔记·python·学习·金融
半导体守望者8 小时前
ADVANTEST R3764 66 R3765 67爱德万测试networki connection programming网络程序设计手册
经验分享·笔记·功能测试·自动化·制造
柠石榴9 小时前
【论文阅读笔记】《A survey on deep learning approaches for text-to-SQL》
论文阅读·笔记·深度学习·nlp·text-to-sql
田梓燊10 小时前
数学复习笔记 27
笔记