所谓的域名存活状态检测这个事儿, 它指的是利用像DNS解析还有HTTP和HTTPS请求这样的一些手段去进行工作, 目的是要判断出来一个域名在当前这个时刻它到底是不是处在一种正常的解析状况里, 或者说它能不能被访问到。
对于那些需要去管理着很多很多数量的域名的站长来说, 还有那些干SEO活儿的人员以及企业里的IT团队来讲, 快速并且批量地去确认一个域名到底“还活没活着”这一个动作, 是他们在日常运维过程中特别特别常见且非常刚需的一个事情。
所谓域名的“存活”, 并不是只从一个单一的维度去看, 通常情况下, 它包含了下面提到的这些层面:
DNS解析的情况是正常的, 域名可以被正确地解析成IP地址, 并且它不是NXDOMAIN。
服务在线的意思是, 目标IP地址上面那个Web服务, 它能够正常地响应那些HTTP请求和HTTPS请求。
证书有效的含义是, 这个HTTPS域名所对应的SSL证书, 它到现在为止还没有过期, 并且也没有被吊销掉。
WHOIS状态正常, 这表示域名没有过期, 也没有被注册商锁定, 同时还没有进入删除流程。
只有上述的各个项目全部都通过了审查, 才能被判定为处于完全存活的状态;只要其中的任何一项出现了异常的情况, 就代表着该域名存在着风险。
常用检测方法
单域名快速探测
在终端里面执行那个curl命令, 加上这个-I参数, 还要把URL地址后面跟着那个https开头的目标域名放在最后面, 然后观察一下返回的那个HTTP的状态码到底是多少, 这里头如果说出现的是200这种数字,或者是301、302大城群众说事, 就都算是存活的意思了, 但是如果出现了连接超时的情况, 或者返回的是5xx这样子的代码, 那就得进一步地去排查问题了, 同时呢, 还可以配合着去用ping这个命令去做个初步的确认, 看看网络层的连通性到底怎么样了。
DNS解析验证
dig 域名 A 或者 nslookup 域名, 是用来查询解析记录的。如果返回的是 NXDOMAIN , 那就说明域名没有注册, 或者是已经删除了。如果返回的是 SERVFAIL , 那就是上游 DNS 服务器出现了异常。遇到 HTTPS 域名的时候, 还要检查一下证书链是不是完整的。
批量域名存活扫描
把那些需要去检查的域名名单, 每个域名单独占一行, 导进批量检测工具里面去。接着就启用多线程来同时进行请求操作, 在几分钟这样短的时间内, 就完成了数千个甚至数万个域名的状态扫描工作。
这里面的检测维度是可以灵活地自己去配置的,可以选择只检DNS域名存活状态检测,也可以选择只检HTTP域名存活状态检测, 还可以选择让DNS和HTTP加上证书进行全产业链路的一起检验。最终结果就是以结构化的表格这种形式进行输出的, 对于那些异常的域名, 系统会自动地把它们进行高亮标记出来。
定时监控与告警
先把核心域名加入到那个用来监控的面板里头去, 然后一定要专门去设置一个定时执行的程序任务, 这个时间间隔最好定在不超过5分钟的范围内, 一旦出现那个由正常存活状态一下子变成异常状态的情况, 就得马上去自动触发那些个发邮件啊、发短信啊或者是发送即时消息的告警动作, 这样做的目的是为了要去避免因为出现了那种什么都不知道就突然坏掉的所谓的静默死亡这种情形, 结果就会导致咱们的业务出现很长时间的中断, 而且竟然还没有人会去察觉到这个问题。
工具选择参考
在命令行环境下, 用户可以选择结合 dig、curl、nmap
检测时需注意的要点
有一部分域名已经开启了内容分发网络或者网站应用防火墙, 当请求非常频繁的时候, 很有可能会导致系统启动限流措施, 所以如果在执行批量扫描任务的话, 建议设置合理的并发数量以及请求间隔时间。
如果检测到来源的IP地址是处在海外的, 那么对于国内域名来说就可能出现被错误判断的情况。因此对于关键性的业务。建议采用分布在不同地域里的节点来相互进行交叉验证这样的做法。
当域名过期之后, 通常情况下会存在一个长度为30到45天的赎回阶段, 在这个特定的阶段里面, DNS服务或许还能够提供正常的解析支持, 但是它也有可能在任何一个时间点突然失效, 因此人们必须做到同步并且持续的关注那个WHOIS状态字段里面所包含的信息内容, 绝对不能够把依赖关系仅仅建立在那样一种HTTP响应的基础之上。


