DNS
Mac 上的 DNS 無法解析
DNS 失敗時,Mac 無法將 apple.com 這類名稱轉換成 IP 位址。連線本身可能正常,但所有以名稱開啟的網站都會失敗。
症狀
- 瀏覽器在許多網站上顯示「找不到伺服器」或類似錯誤。
- 終端機工具顯示「Could not resolve host」或「nodename nor servname provided」。
- 使用 IP 位址的 App 仍可運作,但使用名稱就不行。
- 問題在你切換網路、連上 VPN 或設定自訂 DNS 伺服器之後開始。
可能原因
- 沒有連線。Mac 沒有可用的網際網路路徑,所以 DNS 查詢送不出去。
- DNS 伺服器錯誤或無法連線。手動輸入的 DNS 伺服器可能停止運作,或在這個網路上遭到阻擋。
- 路由器的 DNS 失敗。許多網路會把 DNS 交給路由器。如果路由器停止回應,所有裝置上的名稱都會失敗。
- VPN、描述檔或過濾器更改了 DNS。VPN、加密 DNS 描述檔和內容過濾器可能把查詢送往其他伺服器。
- 快取中的舊回應。Mac 會將回應保留一段時間。網站搬家後,舊的回應可能導致失敗。
如何檢查
確認連線正常。對 IP 位址執行 ping,這樣就不會用到 DNS。
ping -c 3 1.1.1.1對名稱執行 ping。如果 IP 位址可以、名稱卻失敗,問題就在 DNS。
ping -c 3 apple.com向 macOS 解析器查詢某個名稱。這和大多數 App 使用的路徑相同。
dscacheutil -q host -a name apple.com輸出
ip_address和ipv6_address行。沒有這些行就表示查詢失敗。顯示 macOS 目前使用的 DNS 設定。第一個解析器是預設解析器。
scutil --dns顯示你在 Wi-Fi 服務上手動設定的 DNS 伺服器。
networksetup -getdnsservers Wi-Fi輸出一串 IP 位址,或是沒有設定 DNS 伺服器的訊息,後者表示由網路提供伺服器。
如何修正
移除你手動輸入的 DNS 伺服器。選擇「蘋果」選單 >「系統設定」>「網路」。
按一下網路服務,按一下「詳細資訊」,然後按一下「DNS」。選取你加入的每一台伺服器,然後按一下「移除」按鈕。
也可以在終端機中清除。用
empty這個字取代伺服器位址。networksetup -setdnsservers Wi-Fi empty需要管理者密碼。
清除 DNS 快取。請參閱清除 Mac 上的 DNS 快取。
sudo killall -HUP mDNSResponder需要管理者密碼。
從路由器取得新的位址和新的 DNS 伺服器。請參閱在 Mac 上更新 DHCP 租約。
為了測試,中斷 VPN 連線。如果名稱因此恢復正常,請檢查 VPN 的 DNS 設定。請參閱Mac 上的 DNS 查詢繞過 VPN。
如果所有裝置的 DNS 都失敗,請重新啟動路由器。
使用 Kilobat
Kilobat 會測量一次 DNS 查詢,並列出使用中的解析器。請查看
dnsMilliseconds、dnsServers和captivePortal。kilobat diagnose --json針對單一網站或 API,找出失敗的那一層。它會先檢查 DNS,再檢查連線。
kilobat why api.example.comCLI 是免費的。在 App 中,「健康狀態」標籤頁會顯示 DNS 伺服器和查詢時間。請參閱找出某個網站或 API 連不上的原因。
常見問題
為什麼 ping 1.1.1.1 可以,網站卻打不開?
對 IP 位址執行 ping 不會用到 DNS。如果 ping 可以、名稱卻失敗,問題就在 DNS,而不是連線。
為什麼 dig 可以用,App 卻失敗?
dig 會把查詢送往 /etc/resolv.conf 中的伺服器。App 使用的是 macOS 解析器,它還可能套用 VPN 和個別網域的規則。
路由器會重新提供 DNS 伺服器給我嗎?
會。「網路」設定中的 DNS 列表為空時,macOS 會使用網路透過 DHCP 提供的伺服器。
資料來源
- Apple 支援:在 Mac 上更改 DNS 設定
- Apple 支援(已封存):在 OS X 中重置 DNS 快取
- scutil(8),macOS 27.2 內建的 man 頁面
- dscacheutil(1),macOS 27.2 內建的 man 頁面
- networksetup(8),macOS 27.2 內建的 man 頁面
資料來源檢查日期:2026年10月29日。man 頁面為 macOS 內建版本;在終端機中用 man <name> 開啟。