值得告警的信号
监控大型域名组合的 DNS 变更
负责众多域名的团队,比如拥有几十个地区站点的公司、跟踪大量监控名单的安全团队,或是管理客户基础设施的代理机构,都会遇到一个零散的人工抽查无法应对的问题:定期手工逐个复查每个域名,繁琐到最终无法稳定坚持,直到某次变更被忽视得比应有的时间更久。
真正值得关注的信号
| 信号 | 可能的原因 | 紧急程度 |
|---|---|---|
| 解析出的地址意外发生变化 | 未记录在案的变更,或域名被劫持/已过期 | 高,应立即调查 |
| 域名完全停止解析 | 注册到期、区域被删除,或其他无关的故障 | 高,很可能影响用户 |
| 解析到私有/不允许的网段 | 配置错误,或情况更糟 | 高,合法情况下绝不应出现 |
| 某种地址族出现或消失 | 基础设施变更,可能没有记录在案 | 中,值得确认是否为有意为之 |
让监控可持续
切实可行的办法,是把检查变成按自身计划运行的任务,而不是需要人去记得做的事。一个周期性任务按设定的间隔,对整个域名组合重新解析,间隔可以是每小时、每天,取决于有意义的变更多久发生一次,并且只呈现自上次以来发生变化的内容,就能把容易被跳过的手工杂务,变成一张被动的安全网。再配合可导出的结果(CSV 或 JSON),就能轻松地把本次运行与上次进行差异比对,自动发现漂移,而不必凭肉眼逐条检查一份冗长的列表。
它能捕捉的具体风险:大规模的悬空 DNS
大型域名组合积累旧子域名的方式,与任何代码库积累废弃代码如出一辙:某次营销活动的落地页子域名、已下线的预发布环境、指向某个从未续订的 SaaS 试用版的 CNAME。如果它们曾经指向的服务可以被别人认领,每一个都可能成为子域名接管的目标。有计划地对整个组合持续监控,是少数几种能在攻击者之前发现这类漂移的实用办法之一:一个以前能正常解析、现在却报错,或者解析到陌生服务商的子域名,正是值得再看一眼的信号。
从组织层面看,由谁来负责
覆盖整个域名组合的 DNS 监控,常常落在各团队之间的空档里:基础设施团队负责对应其所运行服务的域名,营销或增长团队新建活动子域名时不一定会知会基础设施团队,而安全团队希望了解全部情况,却不一定有修改任何内容的写入权限。一种行之有效的做法,是把监控任务本身当作一项共享的只读服务,由安全或平台工程团队负责并按计划运行,告警则发给域名真正发生变化的那个团队,而不是指望某一个团队去记得手工复查一个没有人完整掌握最新归属情况的域名组合。
从清单出发,而不是靠猜测
最容易被跳过的一步,是一开始就建立值得监控的域名清单。注册商和 DNS 服务商的控制台会显示某个账户下的所有域名,但大型组织往往在多个注册商和服务商处都有域名,这些域名是多年来因收购、营销活动和团队各自采购而积累起来的,没有人集中跟踪。哪怕不够完美,也请先把这份完整的清单汇总一次,并把它当作后续持续监控的种子列表,这比用技术上很先进的监控方案,只去监视某些碰巧有人记得存在的域名,更有价值。
需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。
相关阅读
渐进式切换优于一次性切换
蓝环境
100% 流量
加权分流
95/5,然后 50/50
绿环境
100% 流量
蓝绿部署与 DNS 切换
通过修改 DNS 在两个环境之间切换流量,纸面上看起来很简单,但 TTL 和缓存会让实际操作复杂得多。
一个 IP 对应一台服务器,还是对应多台
单播
一个 IP 恰好对应一台服务器
任播
一个 IP,从多个位置同时通告
任播 DNS 详解
同一个 IP 地址,同时从数十个地点对外通告,这就是任播(anycast)。大型 DNS 服务商正是借助它,在全球各地都保持快速而稳定的服务。
为什么查询结果显示的是 CDN,而非源站
访客
查询该域名
CDN 边缘节点
104.21.x.x
DNS 返回的就是它
源站服务器
真实 IP,从不暴露
CDN 如何借助 DNS 调度全球流量
内容分发网络真正的奥妙发生在 DNS 层,早在任何一个字节的内容被请求之前,流量的去向就已经决定了。