什么是 Split-horizon DNS?内外网解析为什么可能不一样?
简化版
Split-horizon DNS 指同一个域名根据查询来源返回不同结果,例如内网用户解析到内网 IP,公网用户解析到公网 IP。它常用于企业内外网隔离、混合云、灰度和就近访问,但会增加排障复杂度。
详细版
同一个域名不一定全球返回同一个 IP。DNS 可以根据来源网络、地域、运营商、环境返回不同记录。
常见场景:
- 企业内网:
api.example.com内网解析到10.x.x.x,公网解析到公网 LB。 - 混合云:云内 VPC 解析私网地址,云外解析公网地址。
- CDN/智能 DNS:按地区和运营商返回近的节点。
- 灰度:部分用户解析到新集群。
- 容灾:故障时切换到备用地址。
排查时不要只看一个 DNS 结果,要用不同解析器、不同网络来源对比。
完整版教学
一、为什么同一域名会解析出不同 IP
DNS 解析不是绝对静态映射。权威 DNS 或递归 DNS 可以根据请求来源和策略返回不同结果。Split-horizon 更强调“内外视图不同”。
api.example.com
内网客户端 -> 10.0.1.20
公网客户端 -> 203.0.113.20
这样内网访问不绕公网,安全策略也更清晰;公网用户则只能访问暴露在外的入口。
记忆钩子:Split-horizon DNS 就像同一个门牌,在公司内网和公网地图上指向不同入口。
二、企业内外网解析的典型结构
企业常有内部 DNS 和公共权威 DNS。内部 DNS 保存私有记录,公共 DNS 保存对外记录。员工在公司网络里使用内部 DNS,外部用户使用公共解析。
公司内网:
resolver = 10.0.0.53
db.example.com -> 10.0.2.15
公网:
public resolver
db.example.com -> NXDOMAIN 或公网入口
数据库、内部管理后台、微服务域名通常只在内网解析,避免把私有地址或服务入口暴露到公网。
三、云上 Private DNS 也是一种常见实现
云厂商 VPC 内常有 Private Hosted Zone。相同域名在 VPC 内解析成私网 IP,在公网解析成公网 IP 或不存在。
| 来源 | 解析器 | 返回 |
|---|---|---|
| VPC 内 ECS | 云内 DNS | 私网地址 |
| 办公网 VPN | 企业内 DNS | 内网地址 |
| 公网用户 | 公共 DNS | 公网地址 |
| 未授权网络 | 公共 DNS | NXDOMAIN |
混合云场景还会把企业 DNS 和云 DNS 做转发,配置不当会导致某些网段解析错视图。
四、它和 CDN 智能解析有什么关系
Split-horizon 更偏内外网视图,智能 DNS 更偏地域、运营商和性能调度。二者都体现“同域名多答案”。
cdn.example.com
北京联通 -> 节点 A
上海电信 -> 节点 B
海外用户 -> 节点 C
所以排查 CDN 或 DNS 问题时,不能只在本机 nslookup 一次就下结论。不同地区、不同运营商、不同递归解析器可能得到不同答案。
五、排障为什么会变复杂
Split-horizon 最常见问题是“我这里能访问,你那里不行”。原因可能不是服务坏了,而是两边解析到了不同 IP。
dig api.example.com
dig @8.8.8.8 api.example.com
dig @10.0.0.53 api.example.com
如果三个结果不同,要先判断这是否符合预期。再结合来源网络、DNS 转发规则、缓存 TTL、hosts 文件和 VPN DNS 配置排查。
六、设计时要注意什么
Split-horizon 要有清晰的命名和变更流程。内部域名最好避免和公共域名混乱;必须同名时,要明确内外视图的记录、TTL、负责人和监控。
| 风险 | 例子 | 建议 |
|---|---|---|
| 内外记录不一致 | 内网新地址已切,公网没切 | 变更联动 |
| 缓存残留 | TTL 太长导致旧 IP | 控制 TTL |
| VPN DNS 错误 | 连 VPN 后仍查公网 | 下发 DNS 策略 |
| 私网地址泄露 | 公网返回 10.x | 权威区隔离 |
七、常见误区与追问
- 误区:同一个域名解析结果一定相同。 DNS 可以按来源、地域、网络视图返回不同结果。
- 误区:本机解析正常就说明全网正常。 只能说明当前网络和解析器视角正常。
- 误区:公网查不到就是域名没配置。 可能是内部域名只在内网 DNS 视图存在。
- 追问:为什么连 VPN 后解析变化? VPN 可能下发内部 DNS 或搜索域,让域名走内网视图。
- 追问:如何排查内外网解析不一致? 比较不同解析器、来源网络、权威 DNS 和缓存 TTL。
- 追问:Split-horizon 有什么风险? 视图复杂、缓存不一致、私网记录泄露和故障定位困难。
八、加强记忆
Split-horizon DNS 记成“同名不同视图”:内网查内网 IP,公网查公网 IP,云内查私网入口。排查时必须带上“从哪里查、问哪个 DNS、TTL 多少”三个条件。