---
title: "Mac VPN 分离 DNS：内部名称无法解析 · Kilobat 指南"
url: "https://kilobat.app/zh-hans/guides/vpn-split-dns-internal-names.html"
description: "在 Mac 上打开 VPN 后，intranet.corp.example 等公司主机无法访问。检查按域名划分的解析器，并用 /etc/resolver 添加一个。"
---

DNS

# 连接 VPN 时内部名称无法解析

macOS 可以把某个域名的查询发给一个 DNS 服务器，把其他查询发给另一个。VPN 就是用这种分离 DNS 来解析内部名称的。

适用于：所有当前 macOS 版本。 · 核查日期：2026年10月29日

## 症状

- `intranet.corp.example` 等内部名称无法访问，但公共网站正常。
- 内部 IP 地址能访问，但它的名称不行。
- `dig` 或 `nslookup` 失败，但浏览器正常，或者反过来。

## 可能的原因

- **VPN 没有为该域名添加解析器。**VPN 必须告诉 macOS 哪些域名要发往它的 DNS 服务器。
- **测试工具绕过了 macOS 的规则。**`dig` 使用 `/etc/resolv.conf` 中的服务器，而不是 App 所用的按域名解析器。
- **手动设置的 DNS 服务器。**在 Wi-Fi 上手动设置的 DNS 服务器不认识内部名称。
- **短名称缺少搜索域。**像 `intranet` 这样的短名称需要搜索域才能变成完整名称。

## 如何检查

1. 连接 VPN，显示所有解析器。查找带有公司域名 `domain` 行的解析器。

   ```
   scutil --dns
   ```
2. 通过 macOS 解析器查询该名称，而不是通过 `dig`。

   ```
   dscacheutil -q host -a name intranet.corp.example
   ```
3. 显示该服务的搜索域。

   ```
   networksetup -getsearchdomains Wi-Fi
   ```

## 如何修复

1. 询问管理员 VPN 应使用哪个域名和 DNS 服务器。
2. 如果按域名解析器的文件夹不存在，就创建它。

   ```
   sudo mkdir -p /etc/resolver
   ```

   需要管理员密码。
3. 创建一个以该域名命名的文件。每个服务器在其中写一行 `nameserver`。

   ```
   sudo nano /etc/resolver/corp.example
   ```

   需要管理员密码。
4. 在一行中输入内部 DNS 服务器的地址。

   ```
   nameserver 10.0.0.53
   ```
5. 保存文件。运行 `scutil --dns`，查找新添加的域名。
6. 使用完整名称，或在“系统设置”>“网络”> 该服务 >“详细信息”>“DNS”中添加搜索域。
7. 不再需要时，删除该文件。

   ```
   sudo rm /etc/resolver/corp.example
   ```

   需要管理员密码。

## 使用 Kilobat

1. 对于私有名称，`why` 会说明查询发往了哪个 VPN 解析器，以及该解析器是否应答。

   ```
   kilobat why intranet.corp.example
   ```

## 常见问题

**为什么浏览器正常，dig 却失败？**

`dig` 询问的是 `/etc/resolv.conf` 中的服务器。浏览器使用 macOS 解析器，而它还会使用按域名解析器。

**可以编辑 /etc/resolv.conf 吗？**

不可以。resolver 的 man 手册页说明，此文件由 macOS 自动维护。请使用“网络”设置或 `/etc/resolver`。

## 参考资料

- resolver(5)，macOS 27.2 自带的 man 手册页
- scutil(8)，macOS 27.2 自带的 man 手册页
- dig(1)，macOS 27.2 自带的 man 手册页
- [Apple 支持：在 Mac 上更改 DNS 设置](https://support.apple.com/guide/mac-help/change-dns-settings-on-mac-mh14127/mac)

参考资料核查于 2026年10月29日。man 手册页为 macOS 自带版本；在“终端”中用 `man <name>` 打开。

## 相关指南

- [Mac 上 DNS 查询绕过了 VPN](https://kilobat.app/zh-hans/guides/vpn-dns-leak-mac.html): 打开 VPN 时，通常希望 DNS 查询发往 VPN 的服务器。
- [Mac 上 VPN 已连接但无法上网](https://kilobat.app/zh-hans/guides/vpn-connected-no-internet.html): VPN 会通过隧道发送流量。
- [Mac 上 DNS 无法解析](https://kilobat.app/zh-hans/guides/dns-server-not-found.html): DNS 出故障时，Mac 无法把 apple.com 这样的名称转换成 IP 地址。
- [找出某个网站或 API 连不上的原因](https://kilobat.app/zh-hans/guides/recipes/why-cant-it-connect.html): 互联网正常、唯独某个地址连不上时，Kilobat 会逐层进行检查。
