DNS

Mac 上的 DNS 無法解析

DNS 失敗時,Mac 無法將 apple.com 這類名稱轉換成 IP 位址。連線本身可能正常,但所有以名稱開啟的網站都會失敗。

適用於:「系統設定」的步驟適用於 macOS 13 Ventura 以上版本。終端機指令適用於所有目前的 macOS 版本。檢查日期:2026年10月29日

症狀

  • 瀏覽器在許多網站上顯示「找不到伺服器」或類似錯誤。
  • 終端機工具顯示「Could not resolve host」或「nodename nor servname provided」。
  • 使用 IP 位址的 App 仍可運作,但使用名稱就不行。
  • 問題在你切換網路、連上 VPN 或設定自訂 DNS 伺服器之後開始。

可能原因

  • 沒有連線。Mac 沒有可用的網際網路路徑,所以 DNS 查詢送不出去。
  • DNS 伺服器錯誤或無法連線。手動輸入的 DNS 伺服器可能停止運作,或在這個網路上遭到阻擋。
  • 路由器的 DNS 失敗。許多網路會把 DNS 交給路由器。如果路由器停止回應,所有裝置上的名稱都會失敗。
  • VPN、描述檔或過濾器更改了 DNS。VPN、加密 DNS 描述檔和內容過濾器可能把查詢送往其他伺服器。
  • 快取中的舊回應。Mac 會將回應保留一段時間。網站搬家後,舊的回應可能導致失敗。

如何檢查

  1. 確認連線正常。對 IP 位址執行 ping,這樣就不會用到 DNS。

    ping -c 3 1.1.1.1
  2. 對名稱執行 ping。如果 IP 位址可以、名稱卻失敗,問題就在 DNS。

    ping -c 3 apple.com
  3. 向 macOS 解析器查詢某個名稱。這和大多數 App 使用的路徑相同。

    dscacheutil -q host -a name apple.com

    輸出ip_address 和 ipv6_address 行。沒有這些行就表示查詢失敗。

  4. 顯示 macOS 目前使用的 DNS 設定。第一個解析器是預設解析器。

    scutil --dns
  5. 顯示你在 Wi-Fi 服務上手動設定的 DNS 伺服器。

    networksetup -getdnsservers Wi-Fi

    輸出一串 IP 位址,或是沒有設定 DNS 伺服器的訊息,後者表示由網路提供伺服器。

如何修正

  1. 移除你手動輸入的 DNS 伺服器。選擇「蘋果」選單 >「系統設定」>「網路」。

  2. 按一下網路服務,按一下「詳細資訊」,然後按一下「DNS」。選取你加入的每一台伺服器,然後按一下「移除」按鈕。

  3. 也可以在終端機中清除。用 empty 這個字取代伺服器位址。

    networksetup -setdnsservers Wi-Fi empty

    需要管理者密碼。

  4. 清除 DNS 快取。請參閱清除 Mac 上的 DNS 快取。

    sudo killall -HUP mDNSResponder

    需要管理者密碼。

  5. 從路由器取得新的位址和新的 DNS 伺服器。請參閱在 Mac 上更新 DHCP 租約。

  6. 為了測試,中斷 VPN 連線。如果名稱因此恢復正常,請檢查 VPN 的 DNS 設定。請參閱Mac 上的 DNS 查詢繞過 VPN。

  7. 如果所有裝置的 DNS 都失敗,請重新啟動路由器。

使用 Kilobat

  1. Kilobat 會測量一次 DNS 查詢,並列出使用中的解析器。請查看 dnsMilliseconds、dnsServers 和 captivePortal。

    kilobat diagnose --json
  2. 針對單一網站或 API,找出失敗的那一層。它會先檢查 DNS,再檢查連線。

    kilobat why api.example.com
  3. CLI 是免費的。在 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 提供的伺服器。

資料來源

資料來源檢查日期:2026年10月29日。man 頁面為 macOS 內建版本;在終端機中用 man <name> 開啟。