首页/网络/网络排障速查/内外网解析不一致(Split Horizon)排查
DNS 与解析排查46 条

内外网解析不一致(Split Horizon)排查

同一域名在内网解析到私网地址、外网解析到公网地址是常见设计;排查时先确认『不一致是否是故意的』,再追配置。

网络排障速查网络更新于 2026-10-13

内外网解析不一致是什么

同一域名在内网解析到私网地址、在外网解析到公网地址,这是常见且合理的设计(Split Horizon,又称分裂视图)。它的实现方式有视图(view)、条件转发或内外两套独立 DNS。排查时第一步不是断定『解析错了』,而是先确认这条不一致是不是设计使然,再去追哪一侧视图或转发配置缺了记录。

基本信息

常见实现BIND view + match-clients、条件转发 zone、内外两套独立服务器
取证方式分别指定内网 DNS 与公网 DNS 查询同一域名并对比
典型故障新建记录只加到一侧视图,导致内网或外网用户解析失败
变更要求改动前先画出『哪张视图管哪些客户端』

典型使用场景

  • 内网用户访问自家站点绕行公网:确认内网视图是否缺少 A 记录
  • 安全组只放行内网地址:外网解析到的公网地址被拒,表现为『部分人打不开』
  • 新增子域上线:内外两侧视图都要加记录,漏一侧即出现单向不可用
  • 云上混合架构:VPC 内 DNS 与自建 DNS 解析结果不一致时做对照取证

双向取证

双向取证
# 内网视角
dig +short app.example.com @10.0.0.53
# 外网视角
dig +short app.example.com @8.8.8.8
# 逐台内网 DNS 对照,确认多台解析器视图是否一致
dig +short app.example.com @10.0.0.54
# 若内网 DNS 采用转发而非视图,检查条件转发 zone 配置是否指向正确的上游

BIND 视图配置片段

BIND 视图配置片段
view "internal" {
    match-clients { 10.0.0.0/8; 192.168.0.0/16; };
    recursion yes;
    zone "example.com" { type master; file "/etc/bind/db.example.com.internal"; };
};
view "external" {
    match-clients { any; };
    recursion no;
    zone "example.com" { type master; file "/etc/bind/db.example.com.external"; };
};

不一致来源对照

来源表现处置方向
视图缺记录内网解析不出或指向旧地址补齐对应视图的 zone 文件并递增序列号
条件转发错配内网 DNS 把查询转给公网权威核对 forwarders 与 forward zone 范围
缓存未过期改完仍在返回旧地址等 TTL 过期或在内网 DNS 上清理缓存
客户端越过内网 DNS个别终端结果与预期不同检查终端 DNS 设置与加密 DNS 功能是否开启
最常见的漏配模式是『新建子域只加了外网视图』:内部用户解析失败,外部用户正常。变更前把视图与客户端网段的对应关系写清楚,能避免这类一半可用的问题。
排障时不要拿公网解析结果去解释内网现象,也不要用内网结果去解释外部用户投诉;两个视角必须分别取证,混用会得出完全错误的结论。

易错点

  • 拿公网结果解释内网现象:忽略内网视图与条件转发差异,结论反向
  • 在分裂视图环境只改了一侧:内外表现不一致,问题看似『随机』
  • 忘记递增 SOA 序列号:视图文件改了却不向从机同步,改动不生效
  • 假设所有内网 DNS 用同一套视图:多台解析器配置漂移时,不同用户得到不同答案

数据来源与参考

  • BIND 9 视图(view)文档
  • 企业 DNS 内外分域实践

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌