---
title: "Mac 上 DNS 无法解析：“找不到服务器”的解决方法 · Kilobat 指南"
url: "https://kilobat.app/zh-hans/guides/dns-server-not-found.html"
description: "Mac 上网站打不开，提示“找不到服务器”或“could not resolve host”。用系统自带工具查明是否是 DNS 的问题并加以修复。"
---

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. 确认网络连接正常：ping 一个 IP 地址，这样不会用到 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 缓存](https://kilobat.app/zh-hans/guides/flush-dns-cache-mac.html)。

   ```
   sudo killall -HUP mDNSResponder
   ```

   需要管理员密码。
5. 从路由器获取新的地址和新的 DNS 服务器。请参阅[在 Mac 上续租 DHCP](https://kilobat.app/zh-hans/guides/renew-dhcp-lease-mac.html)。
6. 暂时断开 VPN 进行测试。如果名称随后能解析，请检查 VPN 的 DNS 设置。请参阅[Mac 上 DNS 查询绕过了 VPN](https://kilobat.app/zh-hans/guides/vpn-dns-leak-mac.html)。
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 连不上的原因](https://kilobat.app/zh-hans/guides/recipes/why-cant-it-connect.html)。

## 常见问题

**为什么 ping 1.1.1.1 正常，网站却打不开？**

ping IP 地址不会用到 DNS。如果它正常而名称失败，问题出在 DNS，而不是连接。

**为什么 dig 正常，App 却失败？**

`dig` 会把查询发给 `/etc/resolv.conf` 中的服务器。App 使用的是 macOS 解析器，它还可能用到 VPN 和按域名设置的规则。

**路由器会重新提供 DNS 服务器吗？**

会。“网络”设置中的 DNS 列表为空时，macOS 会使用网络通过 DHCP 提供的服务器。

## 参考资料

- [Apple 支持：在 Mac 上更改 DNS 设置](https://support.apple.com/guide/mac-help/change-dns-settings-on-mac-mh14127/mac)
- [Apple 支持（已归档）：在 OS X 中重设 DNS 缓存](https://support.apple.com/en-us/101481)
- 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>` 打开。

## 相关指南

- [Mac 上 Safari 浏览器找不到服务器](https://kilobat.app/zh-hans/guides/safari-cant-find-server.html): “Safari 浏览器找不到服务器”通常表示 Mac 无法获取该网站名称对应的地址。
- [Mac 上 DNS 慢](https://kilobat.app/zh-hans/guides/slow-dns-mac.html): 每个新网站在加载前都需要先进行 DNS 查询。
- [在 Mac 上刷新 DNS 缓存](https://kilobat.app/zh-hans/guides/flush-dns-cache-mac.html): macOS 会把 DNS 回答保留一段时间。
- [Mac 上不显示 Wi-Fi 登录页面](https://kilobat.app/zh-hans/guides/captive-portal-not-appearing.html): 公共网络通常会拦截所有流量，直到你在登录页面上完成登录。
- [找出某个网站或 API 连不上的原因](https://kilobat.app/zh-hans/guides/recipes/why-cant-it-connect.html): 互联网正常、唯独某个地址连不上时，Kilobat 会逐层进行检查。
- [Mac 上 Chrome 中的 ERR_NAME_NOT_RESOLVED](https://kilobat.app/zh-hans/guides/err-name-not-resolved.html): Chromium 对这个错误的描述是：“The host name could not be resolved.”Chrome 无法获取该网站名称对应的地址。
