請按照以下步驟從最簡單、最可能的原因開始嘗試:
第一步:基礎快速排查
這些步驟能解決大部分臨時性的小故障。
- 重啟設備:關閉您的 Mac 和路由器,等待一分鐘后再重新打開。這是解決網絡問題最有效的“萬能藥”。
- 檢查其他設備:您的手機或其他電腦連接同一個 Wi-Fi 能上網嗎?
- 如果其他設備也不能:問題出在路由器或外部網絡上。可以聯系您的網絡服務提供商(ISP),或者檢查路由器指示燈是否正常。
- 如果其他設備可以:問題出在您的 Mac 設置上。請繼續往下看。
- 關閉/重新打開 Wi-Fi:點擊菜單欄的 Wi-Fi 圖標,選擇“關閉 Wi-Fi”,等待幾秒后再重新打開。
- 忘記網絡并重新連接:
- 點擊菜單欄 Wi-Fi 圖標 -> “網絡設置”。
- 在“已知網絡”列表中找到當前連接的網絡,點擊右側的“…”三個點按鈕。
- 選擇“從列表中移除”。
- 重新搜索并連接該 Wi-Fi,需要再次輸入密碼。
第二步:檢查 Mac 的網絡設置
-
檢查 IP 地址獲取方式:
- 打開“系統設置” -> “網絡”。
- 選擇“Wi-Fi”,點擊右側的“詳細信息…”。
- 進入“TCP/IP”標簽頁。查看“配置 IPv4”選項,通常應該是“使用 DHCP”。
- 如果這里的 IPv4 地址是
169.254.x.x
這樣的格式,說明您的 Mac 沒有從路由器成功獲取到有效的 IP 地址。這通常是問題的關鍵所在。您可以嘗試將其手動設置為“使用 DHCP(手動設定地址)”,但更建議回到第一步重啟路由器。
-
刷新 DHCP 租約:
- 在剛才的“TCP/IP”頁面,點擊“續租 DHCP”按鈕。這會讓 Mac 重新向路由器申請一個網絡地址。
-
檢查 DNS 設置:
- 在“網絡詳細信息”中,進入“DNS”標簽頁。
- 如果列表中有一些奇怪的 DNS 地址,可以嘗試刪除它們,或者添加一個可靠的公共 DNS 服務器,例如:
8.8.8.8
(Google DNS)1.1.1.1
(Cloudflare DNS)
- 這可以解決因默認 DNS 服務器故障導致的域名解析問題。
第三步:使用網絡診斷工具
Mac 自帶了一個很好的診斷工具。
- 打開“系統設置” -> “網絡”。
- 點擊右下角的“診斷…”按鈕。
- 選擇“Wi-Fi”并按照向導進行操作。它會幫你檢測一系列可能的問題。
第四步:高級終端命令(如果以上均無效)
在“應用程序” -> “實用工具”中打開“終端”,嘗試輸入以下命令來重置網絡核心組件:
-
釋放和更新 IP 地址:
sudo ipconfig set en0 DHCP
(輸入后需要按回車,然后輸入你的電腦密碼,密碼輸入時不可見,輸完再按回車)
-
刷新 DNS 緩存(對于 macOS Sonoma 及更新版本):
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
-
重置網絡硬件(模擬拔插網卡):
sudo ifconfig en0 down sudo ifconfig en0 up
(
en0
通常是內置無線網卡,如果不確定,可以用ifconfig
命令查看哪個接口有你的 Wi-Fi 名)
每輸入一條命令后按回車執行。完成后,再次嘗試上網。
第五步:最終手段
如果所有方法都失敗了,可能是系統級配置損壞。
-
創建新的網絡位置:
- 打開“系統設置” -> “網絡”。
- 點擊“位置”下拉菜單,選擇“編輯位置…” -> 點擊“+”號添加一個新位置(例如命名為“Test”)。
- 選擇新創建的位置“Test”,然后重新配置你的 Wi-Fi。這相當于將網絡設置全部重置為默認狀態,但不會影響其他數據。
-
檢查系統更新:確保你的 macOS 系統是最新版本,有時蘋果會發布網絡相關的修復補丁。
-
安全模式啟動:重啟 Mac 并立即按住
Shift
鍵直到看到登錄窗口,進入安全模式。在安全模式下測試網絡。安全模式會檢查磁盤并加載最基本的驅動,如果安全模式下能上網,說明是某些登錄項或第三方內核擴展沖突了。
總結排查思路:
- 其他設備正常嗎? -> 問題在 Mac。
- 重啟了嗎? -> 重啟路由器和 Mac。
- IP 地址正常嗎? -> 不是
169.254.x.x
。 - DNS 能解析嗎? -> 換一個公共 DNS 試試。
- 系統配置亂了嗎? -> 創建新網絡位置或進安全模式試試。
推薦閱讀文章
-
由 Spring 靜態注入引發的一個線上T0級別事故(真的以后得避坑)
-
如何理解 HTTP 是無狀態的,以及它與 Cookie 和 Session 之間的聯系
-
HTTP、HTTPS、Cookie 和 Session 之間的關系
-
什么是 Cookie?簡單介紹與使用方法
-
什么是 Session?如何應用?
-
使用 Spring 框架構建 MVC 應用程序:初學者教程
-
有缺陷的 Java 代碼:Java 開發人員最常犯的 10 大錯誤
-
如何理解應用 Java 多線程與并發編程?
-
把握Java泛型的藝術:協變、逆變與不可變性一網打盡
-
Java Spring 中常用的 @PostConstruct 注解使用總結
-
如何理解線程安全這個概念?
-
理解 Java 橋接方法
-
Spring 整合嵌入式 Tomcat 容器
-
Tomcat 如何加載 SpringMVC 組件
-
“在什么情況下類需要實現 Serializable,什么情況下又不需要(一)?”
-
“避免序列化災難:掌握實現 Serializable 的真相!(二)”
-
如何自定義一個自己的 Spring Boot Starter 組件(從入門到實踐)
-
解密 Redis:如何通過 IO 多路復用征服高并發挑戰!
-
線程 vs 虛擬線程:深入理解及區別
-
深度解讀 JDK 8、JDK 11、JDK 17 和 JDK 21 的區別
-
10大程序員提升代碼優雅度的必殺技,瞬間讓你成為團隊寵兒!
-
“打破重復代碼的魔咒:使用 Function 接口在 Java 8 中實現優雅重構!”
-
Java 中消除 If-else 技巧總結
-
線程池的核心參數配置(僅供參考)
-
【人工智能】聊聊Transformer,深度學習的一股清流(13)
-
Java 枚舉的幾個常用技巧,你可以試著用用
-
由 Spring 靜態注入引發的一個線上T0級別事故(真的以后得避坑)
-
如何理解 HTTP 是無狀態的,以及它與 Cookie 和 Session 之間的聯系
-
HTTP、HTTPS、Cookie 和 Session 之間的關系
-
使用 Spring 框架構建 MVC 應用程序:初學者教程
-
有缺陷的 Java 代碼:Java 開發人員最常犯的 10 大錯誤
-
Java Spring 中常用的 @PostConstruct 注解使用總結
-
線程 vs 虛擬線程:深入理解及區別
-
深度解讀 JDK 8、JDK 11、JDK 17 和 JDK 21 的區別
-
10大程序員提升代碼優雅度的必殺技,瞬間讓你成為團隊寵兒!
-
探索 Lombok 的 @Builder 和 @SuperBuilder:避坑指南(一)
-
為什么用了 @Builder 反而報錯?深入理解 Lombok 的“暗坑”與解決方案(二)