僵尸委派是什么
僵尸委派(Lame Delegation)指父域把子域委派给了一台并不为该子域提供权威服务的服务器:该服务器收到查询后不返回权威答案,或者干脆拒绝响应。结果是解析器轮询到这台服务器时超时或报错,用户侧表现为『时好时坏』或部分解析器返回 SERVFAIL。常见成因是更换 DNS 服务商后父域 NS 记录未清理干净。
基本信息
| 适用平台 | 通用 DNS(dig 的 +norecurse 与 +trace) |
|---|---|
| 识别方法 | 直查 NS 列表中的每台服务器,检查是否返回 aa 标志的权威答案 |
| 典型症状 | 解析时好时坏、部分解析器 SERVFAIL |
| 常见成因 | 更换服务商后父域 NS 残留旧服务器 |
典型使用场景
- 解析结果不稳定:逐台验证 NS 列表,找出失效的那一台
- 更换 DNS 服务商后的验证:确认旧 NS 记录是否已从父域移除
- 子域委派上线:确认新委派的服务器确实为该子域提供权威服务
- 多解析器结论不一致:定位是哪台权威导致的分歧
- 例行巡检:把 NS 列表逐台验证纳入域名健康检查
识别方法
识别方法
# 非递归直查,检查是否返回权威应答(aa 标志)
dig +norecurse @ns1.example.com sub.example.com A | grep -E 'flags|status'
# 逐台验证 NS 列表中的每一台
for ns in $(dig +short sub.example.com NS); do printf '%s ' "$ns"; dig +norecurse +time=2 +tries=1 @$ns sub.example.com A | grep -o 'flags: [a-z ]*' | head -1; done
# 观察完整委派链条
dig +trace sub.example.com | tail -20结果判读
| 返回情况 | 含义 | 处置方向 |
|---|---|---|
| 带 aa 的权威答案 | 该服务器配置正常 | 继续检查列表中的其他服务器 |
| 无 aa 标志的答案 | 疑似僵尸委派 | 核对父域 NS 记录 |
| REFUSED | 服务器不为该域服务 | 从父域移除该 NS 记录 |
| 超时无响应 | 服务器失联或被策略拦 | 确认其可用性或移除记录 |
僵尸委派的典型时间点是被换掉的 DNS 服务商关停旧服务器:在此之前一切正常,关停当天开始出现间歇性解析失败。修复动作是更新父域 NS 记录并等待 TTL 过期。
修复时只改子域不清理父域委派不会生效:委派信息保存在父域,必须由父域的 NS 记录层面修改。