VPN 的 Split DNS(分流 DNS)是什么
Split DNS 让设备按域名选择不同的解析器:内部名称走 VPN,其他名称走平时的解析器。本文介绍原理、使用场景和检查方法。
阅读约 9 分钟更新于 2026年10月15日作者:XPASS Editorial Team

设想你在家里,把公司文件服务器的地址输入浏览器。没有 VPN 时什么也打不开,因为这个名称只存在于公司网络内部;连上 VPN 后页面就能打开。这个小小的“奇迹”背后其实有一个决定:哪个 DNS 解析器来回答“files.corp.example 的地址是什么”?如果选错了,页面就打不开,即使 VPN 显示已经连接。
Split DNS(分流 DNS)就是让这个决定做对的安排。本文解释它是什么意思、与更为人熟知的 split tunneling 有何不同、各操作系统怎么实现,以及如何测试和排查。内容默认你知道 DNS 的作用是把名称转换成地址;如果还不熟,请先读 DNS 是如何工作的。
一个名称,两种答案:Split DNS 的思路
全球 DNS 只认识公开名称。而许多组织还有只在自己围墙内才有意义的私有名称,比如内网网站、构建服务器、打印队列、数据库主机。这些名称保存在组织自己的解析器上,有时同一个名称在内部和外部的答案还不一样:同一个网站,对外指向公共 Web 服务器,对员工则指向内部副本。这种做法常被称为 split-horizon DNS,是长期存在的正常网络运维方式。
当远程设备需要同时面对两个世界时,问题就出现了:笔记本既要访问公共网站,也要找到公司的私有名称。只用一个解析器很难两头兼顾:
- 如果笔记本所有查询都问公司的解析器,那么公共浏览的查询都要经过公司,增加负担,还可能受公司策略过滤。
- 如果笔记本只问家里或咖啡店的解析器,私有名称根本不存在,会以“找不到服务器”失败。
Split DNS 的办法是保留一份简短的规则:以这些域名结尾的名称,发给那个解析器;其余的发给这个解析器。这个决定针对每次查询,在设备本地、在任何流量发出之前做出。

Split DNS 与 split tunneling 是两件事
这两个词听起来很像,也常常一起配置,但回答的是不同的问题。
| 问题 | Split tunneling | Split DNS |
|---|---|---|
| 被分开的是什么 | 网络流量 | 域名查询 |
| 判断依据 | 应用、目的 IP 范围或路由 | 域名后缀 |
| 目标 | 只让部分流量走 VPN | 为每个名称问对解析器 |
| 配置错误时的后果 | 流量意外离开隧道,或到不了目标 | 名称解析失败,或私有名称被发给公共解析器 |
| 常见用户 | 任何 VPN 应用提供该功能的人 | 企业或自建 VPN 环境 |
可以只有 split tunneling 而没有 split DNS:VPN 承载去往办公网络的流量,但所有查询仍使用咖啡店的解析器,于是私有名称失败。也可以在全部流量走隧道的同时使用 split DNS,由隧道内不同的解析器回答不同的域名。什么是 Split Tunneling 深入讲解了流量那一侧,本文只讲名称。
各操作系统怎么实现
思路处处相同,但每个系统把规则列表放在不同的位置。知道这些名称,排查时会很有帮助。
Windows。 名称解析策略表(NRPT)把域名后缀映射到 DNS 服务器。VPN 客户端或公司策略可以添加条目,例如“以 .corp.example 结尾的名称发给这个解析器”。没有规则匹配时,使用网卡常规的 DNS 服务器。
macOS。 系统维护多份解析器配置,针对特定域名的配置可以绑定到 VPN 接口。把文件放在解析器目录下是技术用户常用的另一种机制,用来把一个域名指向一台服务器。
Linux。 使用 systemd-resolved 时,每个网络链路都带有一个 DNS 服务器列表和一个“路由域”(routing domains)列表。这些域名的查询会发给该链路的服务器。写成“~corp.example”表示“把这个域名发到这里,但不用于短名称补全”。
Android 和 iOS。 移动系统开放的手动调节更少。VPN 应用或设备管理描述文件可以请求针对域名的解析器,系统把它们作为 VPN 配置的一部分应用。
如果你只使用消费级 VPN 应用,几乎不会接触这些。只有涉及公司、学校或自建环境时,这些机制才重要。
跟踪两次查询经过分流配置
看一个实际例子。玛雅是在家办公的顾问。她的公司 VPN 只有一条规则:以 .corp.example 结尾的名称,发给隧道内 10.20.0.2 处的解析器;其余的使用家里的路由器。
- 她打开浏览器输入 wiki.corp.example。系统检查规则列表,发现后缀匹配,把查询通过隧道发往 10.20.0.2。公司解析器返回内部地址,比如 10.20.5.14,页面加载成功。
- 她打开第二个标签页,访问一个公共新闻网站。没有规则匹配,查询发给家里路由器的解析器,由它去问公共 DNS 并返回结果。VPN 没有参与这次查询。
- 她输入不带后缀的短名称 wiki。系统根据 VPN 配置补上搜索后缀 .corp.example,尝试 wiki.corp.example。如果缺少后缀列表,短名称就会失败。
- 笔记本想通过名称 office-printer.local 找打印机。这个名称使用本地网络的组播发现,根本不会发给任何解析器,所以 VPN 规则对它不起作用。
第 3 步的细节解释了一个常见抱怨:完整名称能用,短名称却不行。VPN 给了设备解析器,却没有给搜索域。
Split DNS 在现实中出现在哪里
- 远程员工。 最常见的情形。员工用名称访问内部网站和工具,个人上网则使用家里的解析器。
- 学生和研究人员。 大学可能只在自己的网络内用名称开放图书馆和实验室服务。带 Split DNS 的 VPN 让学生能访问它们,而其余连接仍留在本地。
- 家庭实验环境。 运行 NAS、媒体服务器和智能家居中枢的人,常给它们起私有名称。带 Split DNS 的自建 VPN 可以在主人外出时解析这些名称,而不必把所有网页查询都送回家。
- 小型办公室。 店里有本地文件服务器,同时使用云端记账工具,希望员工在家的笔记本也能解析服务器名称。
- 多地点组织。 每个办公室都有自己的私有名称,它们之间的 VPN 链路用按域名的规则,把每次查询发给正确的办公室。
如果公司给了你 VPN 账号,可以问问私有名称是否应当可用。如果是,那么 Split DNS 规则列表就是配置的一部分。也可以参考 企业 VPN 与个人 VPN,了解这些环境与消费级使用的区别。
如何检查当前配置
不需要猜测,每个系统都能打印出解析器表。
- macOS: 打开终端运行 scutil --dns。找出列有域名和 nameserver 的解析器条目,带有“domain : corp.example”的就是分流规则。
- 使用 systemd-resolved 的 Linux: 运行 resolvectl status。每个链路会显示它的 DNS 服务器和 DNS Domain 列表,以 ~ 开头的域名仅用于路由。
- Windows: 在 PowerShell 中运行 Get-DnsClientNrptPolicy 查看规则,用 ipconfig /all 查看各网卡的 DNS 服务器和 DNS 后缀搜索列表。
- 针对某个解析器测试名称: nslookup wiki.corp.example 10.20.0.2 会直接询问那台解析器。如果它能回答而正常路径不能,说明规则列表有误或缺失。
- 测试泄漏方面: 在同一台设备上,断开 VPN 后查询一个内部名称,观察查询发给了谁。私有名称被发给公共解析器,就暴露了它的存在,而有些组织把这类信息视为敏感。
向 IT 团队求助时,请附上这些命令的输出。它能让对方一分钟就看明白,否则要来回沟通一个小时。

哪些地方会出问题
- 规则列表不完整。 网络里新增了内部域名,却没有加进 VPN 配置,于是新域名失败而旧域名正常。
- 域名重叠。 公共名称和私有名称共用同一后缀,例如都在 corp.example 之下,公共名称的查询被发给了无法回答的解析器。
- 解析器只有隧道内才能访问。 私有解析器的地址通常是 RFC 1918 的私有地址段,VPN 掉线后无法访问,查询超时,应用看起来像卡住。
- 改写查询的网络。 部分酒店或带认证页的网络会拦截 DNS,破坏分流规则。如果名称在移动数据下能解析,在酒店 Wi-Fi 下不能,就要怀疑网络本身。
- 相互冲突的 DNS 设置。 安卓的“私人 DNS”或浏览器内置的加密 DNS 可能绕过系统规则,向公共解析器询问私有名称,结果是内部网站“找不到服务器”。
- 缓存过期。 系统或浏览器记住了失败的查询。修正规则后,请清除 DNS 缓存或重启应用。
- 缺少搜索域。 完整名称能解析、短名称不能,如前面的例子所示。
隐私与安全角度
Split DNS 是访问私有资源的便利手段,本身并不是隐私功能。有两点值得注意。
第一,你询问的解析器会看到你查询的名称。分流正确时,公司的解析器只看到公司的名称,家里或公共的解析器看到其余名称。这有时比把一切都发给公司更有利于隐私,有时又不如把一切交给值得信赖的隧道。没有放之四海而皆准的规则。
第二,规则错误可能泄露名称。如果内部主机名被发给了公共解析器,该解析器就知道这个名称存在,在本地网络上监听的人也可能知道,因为普通 DNS 没有加密。像“payroll-db”或项目代号这样的名称,即使主机无法访问,本身也是有价值的信息。这是 什么是 DNS 泄漏 所述问题的一种形式:查询去了你没打算让它去的地方。
对于一般的远程访问,NIST 的远程办公指南 SP 800-46 强调远程接入和终端的安全配置,其中包括确认 DNS 的行为符合设计,而不是想当然地认为它没问题。
消费级 VPN 需要 Split DNS 吗
多半不需要。消费级 VPN 应用通常设计为把所有流量和所有查询通过隧道发给同一个解析器。没有私有名称需要访问,也就没有什么可拆分的。在这种情况下更该检查的是相反的事:确认没有查询漏到隧道外面。
当你自己运行服务器、加入公司或学校的 VPN,或管理带有本地名称的路由器时,Split DNS 才有意义。如果你使用免费的 VPNclient 应用,配合价格页面上的预付通行证,采用应用的默认行为即可,不需要自己配置域名规则。
总结
Split DNS 让设备按域名挑选解析器:私有名称通过 VPN 发给私有解析器,其他一切发给平时的解析器。它不同于 split tunneling,尽管两者常常同时出现。操作系统通过规则表实现它,例如 Windows 的 NRPT 和 Linux 的路由域。出问题时,先打印解析器配置,直接询问私有解析器,再查找缺失的后缀、重叠的域名以及相互冲突的加密 DNS 设置。
常见问题
用最简单的话说,Split DNS 是什么?
就是设备同时使用多个 DNS 解析器,并按域名来选择。属于私有网络的名称(例如公司内网)通过 VPN 发给内部解析器,其他名称发给平时使用的解析器。
Split DNS 和分应用代理(split tunneling)是一回事吗?
不是。Split tunneling 决定哪些流量走 VPN,通常按应用或 IP 范围区分;Split DNS 决定由哪个解析器回答查询,按域名区分。两者常搭配使用,但各自可以单独存在。
Split DNS 会造成 DNS 泄漏吗?
如果私有名称的查询被发给了错误的解析器,就可能暴露内部服务的名称。正确的配置只会把私有名称发给私有解析器,泄漏通常源于规则写错,而不是 Split DNS 本身。
普通的消费级 VPN 应用会用到 Split DNS 吗?
大多数消费级 VPN 应用会把所有查询通过隧道发给同一个解析器,因此用不上 Split DNS。它主要出现在企业和自建 VPN 中,那里有些名称只存在于内部。
怎么知道我的电脑有没有启用 Split DNS?
用系统自带的工具查看解析器配置,例如 macOS 的 scutil --dns、Linux 的 resolvectl status,或 Windows PowerShell 的 Get-DnsClientNrptPolicy。如果看到绑定到特定域名的解析器,就说明在使用 Split DNS。
参考资料
关于作者

Bob Kanokphon Thongdee
- XPASS VPN 创始人
- eSIMonline.asia 联合创始人
- 7 年以上网络营销经验
- Cojourney Visa 与 Cojourney Travel 创始人




