什么是 DNS 监控?
DNS 监控定期查询你的域名解析记录,校验 A/AAAA/CNAME/MX 等记录是否正确,发现劫持、篡改、配置错误即时告警。原理、记录类型与监控实践。
DNS 是互联网的电话簿——用户输入域名,DNS 翻译成 IP。DNS 监控就是定期查询你的域名解析记录,校验返回的结果是否正确:A 记录指向的 IP 变了(被劫持?配置错了?)、MX 记录丢了(邮件全收不到)、NS 记录被改(域名被接管),都要第一时间发现。
工作原理
- 监控器定期(每分钟到每小时)向 DNS 服务器发起查询:
dig example.com A; - 校验返回的 IP 是否与期望一致(如期望
93.184.216.34,返回别的就是异常); - 记录不一致或查询超时,触发告警。
DNS 事故的隐蔽性在于:你的服务器可能一切正常,但用户拿到的解析结果是错的——HTTP 监控从错误地址连不上服务器,看起来像宕机,根因却在 DNS。DNS 监控把这个变量单独隔离出来。
该监控哪些记录
| 记录类型 | 作用 | 监控价值 |
|---|---|---|
| A / AAAA | 域名 → IPv4/IPv6 | 核心。解析错 = 用户被导向别处,可能是配置错误也可能是劫持 |
| CNAME | 域名别名 | 确认别名指向正确的目标 |
| MX | 邮件服务器 | MX 丢了/被改 = 邮件通信中断或被窃听 |
| NS | 权威域名服务器 | NS 被改 = 域名整个被接管,最严重的事故 |
| SOA | 区数据序列号 | 序列号每次修改 +1,监控它可发现任何 DNS 变更 |
| TXT | 验证与策略(SPF 等) | SPF/DKIM 记录被改影响邮件投递与安全 |
该从哪些视角查
DNS 是分布式系统,不同位置可能看到不同结果:
- 多地域节点查询:确认全球解析一致性(CDN 场景除外——CDN 本来就该返回不同 IP,这时监控的是"返回的 IP 属于 CDN 网段");
- 公共 DNS 交叉验证:用 8.8.8.8、1.1.1.1、223.5.5.5 分别查,结果应一致;
- TTL 与传播:改记录后旧值在缓存里存活 TTL 时间,监控能告诉你传播是否完成。
典型事故场景
- DNS 劫持:A 记录被篡改成钓鱼站点 IP——监控立刻发现解析结果偏离期望值;
- 误操作:运维改记录时手滑,生产域名指向了测试环境;
- DNS 服务商故障:权威 DNS 不可用,监控表现为查询超时;
- 证书与解析联动:HTTPS 站点换 IP 后证书域名不匹配。
观测云对照
观测云可用性监测支持 DNS 探测任务:指定域名、记录类型与期望值,多地域节点定期查询比对,解析异常立即告警。DNS 探测与 HTTP 探测的联动分析尤其实用:网站不可用时,先看 DNS 探测是否正常——正常则问题在应用层,异常则问题在解析层,定界一步完成。
常见问题(FAQ)
Q:用了 CDN 还能监控 A 记录吗?
A:可以,但期望值要换思路:CDN 域名返回的 IP 随节点变化,改为校验"返回 IP 属于 CDN 厂商网段"或直接监控 CNAME 目标是否正确。
Q:DNS 监控频率设多少?
A:关键域名 1-5 分钟一次。DNS 查询极轻量,高频探测成本可忽略。
Q:DNSSEC 和 DNS 监控什么关系?
A:互补。DNSSEC 通过签名防篡改(需要解析方验证),监控是从外部持续校验结果正确性——即使没部署 DNSSEC,监控也能发现篡改。