判定域名生存状态的核心标准, 只有当且仅当以下这三个层面的验证都通过的时候, 才能确定它处于“存活”的状态, 第一层是完成ICANN注册, 第二层是DNS解析能够正常返回结果, 第三层是Web服务可以正常响应请求, 只要其中的哪一层发生中断情况, 都必须立刻标记为异常或者失效, 下面列举出来的是五个需要必须逐层进行核验的关键指标。

注册信息有效性(WHOIS层)

大家去那个 WHOIS 数据库里面, 查询一下域名的注册状态字段, 这个字段的名字叫做 Domain Status。正常情况下, 这里的值应该是“ok”或者是“active”。

如果大家看到了“serverLock”、“clientDeleteProhibited”、“pendingDelete”这些状态码的话, 那就说明域名现在是处于锁定环节, 或者是待删除的环节中。这种情况下, 域名是不能看作正常存活的。

注册局, 比如说像那个Verisign还有CNNIC这些机构, 它们通过自己的官方查询接口所给出的结果, 就是最终可以信赖的依据。

DNS解析可达性(网络层)

通过使用dig这个命令, 或者是通过使用nslookup这个命令来发送查询的动作, 这种查询是要求得到A记录的解析结果, 同时还需要要求得到AAAA记录的解析结果, 并且同时也需要要求得到CNAME记录的解析结果的, 具体的需求如下。

必须保证在返回结果里, 其中的一条A记录是有效的, 并且这条返回的数据要对应一个IPv4地址。

对TTL大于0这一情形进行响应。

不存在像SERVFAIL这样的错误代码, 也不存在像NXDOMAIN这样的错误代码。

如果DNS服务器没法被做递归解析, 虽然注册信息看起来是正常的, 但在用户这边这个域名还是不能用的, 所以这时候应该怎么判定呢, 应该判定为没存活。

Web服务响应(应用层)

向解析得到的IP发起HTTP/HTTPS请求域名存活状态检测,判定标准:

认为请求的响应状态码如果是200, 或者301, 又或者302的话, 就是代表处于存活的状态。

403、把404这个情况看作是服务出现了异常, 也就是说域名是能够存活的, 但是站点却是不可访问的状态。

当连接的时间超过了10秒, 也就是发生连接超时, 或者出现了连接被拒绝的情况, 就把这些情况当做是未存活的。

需要去同时检测那个80端口, 还有443端口, 而针对这个443端口的话, 还应该再去校验一下证书的有效期。

域名存活状态检测怎么做?5个核心指标帮你判断域名是否在线(图1)

MX记录与邮箱可用性(服务层)

对于那些需要提供企业邮箱服务的域名来说, 必须确认 MX 记录的指向是一个有效的邮件服务器。如果 MX 记录缺失, 或者是目标主机无法响应 SMTP 握手请求, 这都表示邮箱服务出现了中断的情况。这种状况属于部分失效的范畴。

SSL证书与ICP备案(合规层)

SSL证书的剩余有效日期是大于或者等于三十天的, 而且整个证书的链接顺序都是完整的。

凡是在国内进行注册的互联网名称与数字地址, 务必要去落实那些有关ICP备案的手续, 等到相关状态呈现出了正常这样的字样之后, 才可以依照规矩实现正式上线运作。

常用检测工具与方法

在需要进行批量检测的场景里面, 推荐大家采用那种写脚本的方案, 因为用Python这个语言里的socket这个库再加上requests这个库, 就可以组合在一起把上面提到过的五层检测任务全部完成掉, 具体的设置是把每一次请求超时的那个时间阈值设定为5秒钟, 如果遇到像上万条这种特别大规模的域名池情况的话, 就更加建议使用并发异步这类框架了, 比如说aiohttp这个东西, 每做一批次处理的时候就让它做成五百条为一个单位, 然后再去间隔两秒钟再去执行下一批次的操作, 这样做的主要目的就是为了避免出现因为请求太频繁而去触碰到目标服务器那边设下的流量限制规则这样的情况。

建议将结果输出格式设定为包含六个列, 这六列分别是域名, WHOIS状态, DNS IP, HTTP状态码, SSL到期日, 以及综合判定这个字段要写存活或者是异常或者是失效, 一共是六列。

高频疑难与应对

CDN防火墙干扰, 这种情况是因为部分域名是通过云盾或者是CDN来返回403结果, 从而阻断探测行为的域名存活状态检测,所以你应该改成用HEAD请求的方式, 并且在里面携带常规浏览器的User-Agent。

DNS轮值多IP: 需要针对每条A记录分别进行检测龙南市就业服务平台,只有当所有的检测结果都显示失败时, 才能认定DNS层面出现问题。

待删除域名(DeleteAfterExpiration): 这是一种正处在30到45天的赎回期里面的域名, 此时的WHOIS信息还是会展示出原来的注册内容, 但是DNS解析已经停止工作了, 所以应该把它标记为即将失效的状态, 而不是标记为存活的。

实际业务中的落地建议

企业域名资产管理系统应当把存活检测纳入到每天的定时巡检里面去, 系统里给出的建议是每六个小时做一次检查。一旦系统检测到资产的状态发生了改变, 就可以自动触发那个告警工单。

对于那些是在 gz88.cn 域名体系之下运营的子站点资产, 可以统一把这些资产都接入到同一个检测流水线当中去。这样做是为了确保主域名和那些子域名的存活状态能够达到同步可查的目的, 在出现异常情况的时候也能够进行追溯, 从而避免出现那种主域名正常但是子域名解析丢失的静默故障。

结合前述五个层级的指标进行逐层的校验处理, 这样就能彻底完成一次全链路的、且能够被重复进行的域名活跃存续状况调查活动, 该项产出所携带的核查轨迹具有清晰的追溯审核特征, 所以它能够毫无障碍地转化为用来填充域名资产记录清单内状态栏位的有效数据源。