首页/网络/网络排障速查/dig +subnet:EDNS Client Subnet(ECS)查询
DNS 与解析排查46 条

dig +subnet:EDNS Client Subnet(ECS)查询

ECS 让递归把客户端网段带给权威(CDN 常据此按地域调度):排查『解析结果与地域不符/CDN 调错节点』时用它模拟来源网段。

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

dig +subnet 与 ECS 是什么

EDNS Client Subnet(ECS)允许递归解析器把客户端的网段信息带给权威服务器,权威据此返回就近的 CDN 节点地址。dig 的 +subnet 参数可以模拟指定来源网段发起查询,用来排查『解析结果与地域不符』或『CDN 调度到错误节点』的问题。需要注意:普通递归服务器可能忽略 ECS,得到的结果不代表真实用户的解析值。

基本信息

适用平台BIND 9 的 dig(+subnet 参数),其他工具支持情况不一
参数写法+subnet=114.114.114.0/24;+subnet=0.0.0.0/0 表示不带 ECS
观察位置应答的 OPT 段中可看到 ECS 信息
协议依据RFC 7871

典型使用场景

  • CDN 调度异常排查:用不同地域网段查询同一域名,观察返回地址是否变化
  • 验证权威是否支持 ECS:对比带与不带 ECS 的返回结果
  • 用户投诉解析到远端节点:模拟用户网段复现并保留证据
  • 切换 CDN 服务商前的评估:确认新方案是否按地域返回不同地址
  • 排障报告取证:把不同网段的返回地址并列,形成可比较的证据

带 ECS 查询

带 ECS 查询
# 模拟某地域来源网段查询
 dig +subnet=114.114.114.0/24 example.com @8.8.8.8
# 显式声明不带 ECS,作为对照组
dig +subnet=0.0.0.0/0 example.com @8.8.8.8
# 多个网段并列对比,观察是否返回不同地址
for s in 114.114.114.0/24 223.5.5.0/24 8.8.8.0/24; do printf '%s -> ' $s; dig +subnet=$s +short example.com @8.8.8.8 | head -2; done
# 观察 OPT 段里的 ECS 字段
dig +subnet=114.114.114.0/24 example.com @8.8.8.8 | grep -A2 OPT

结果判读

观察结果含义下一步
不同网段返回不同地址ECS 生效且调度按地域结合业务是否期望该行为判断
所有网段返回同一地址ECS 被忽略或未启用确认解析器与权威是否支持
返回地址明显偏远调度表配置问题联系 CDN 侧核对调度策略
OPT 段无 ECS 信息查询未携带或未被接受换解析器或直接查权威对照
ECS 排查的关键是『同一域名、不同来源网段』的对照:单个查询结果说明不了问题,必须并列多组数据才能判断调度是否按地域生效。
不要仅凭 ECS 查询结果下最终结论:终端侧的实际解析可能被本地策略、加密 DNS 或 hosts 覆盖,最终仍应在用户实际环境中验证。

易错点

  • 用普通递归 DNS 做 ECS 查询:多数公共解析器会忽略或裁剪 ECS,结果不代表真实用户
  • 把 ECS 查询结果当唯一证据:终端侧可被本地策略与加密 DNS 覆盖
  • 只测一个网段就下结论:缺少对照,无法判断调度是否按地域
  • 忽略不同解析器的 ECS 支持差异:换一个解析器结论可能完全不同
  • 把返回地址变化当成故障:按地域返回不同地址可能正是设计预期

数据来源与参考

  • RFC 7871:EDNS Client Subnet
  • CDN 调度与 DNS 实践

相关工具

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