域名存活状态检测这个事情, 意思就是利用那些技术手段去判定一个域名是不是还处在可以被访问、可以被解析的在线状态当中。

如果企业手里拿着一大堆的域名资产, 或者是需要去定期检查DNS配置还有没有失效, 那么这样的检查活动就非常重要了。下面将从原理、方法到工具这几个方面来, 完整地说明怎么样去购买和执行这个域名存活状态检测。

一、三种核心检测方式

1. DNS解析检测

向这个域名所对应的那些NS服务器发出对A记录或者是AAAA记录的查询操作。要是能在一个合理的超时时间段里面, 这个时间通常被设置成五秒钟, 然后收到了IP地址这样的响应信息的话, 那么就判定这个域名是存活的。

这一种方法适合于所有已经注册过的域名, 并且被认为是最为基础也是最为快速的一种判断方面的手段。

2. ICMP Ping检测

我们需要向由DNS解析服务所返回的那个IP地址, 去发送一个叫做ICMP Echo Request的数据包, 要是我们收到了那个对应的Reply数据包的回应的话, 那就说明该节点的网络是能够抵达的, 但是呢一定要留意这么一种情况, 就是有一部分服务器它们会因为某种原因而主动地把那些ICMP数据包给丢弃掉, 所以如果你没有得到回复的话,这个结果并不等价于说这个域名就已经彻底死亡了苍南县武术协会心, 因此在实际的操作中应该要把DNS最终的查询结果给结合起来进行一个综合的判断啊。

3. HTTP/HTTPS请求检测

先发起一个GET请求, 指向的是那个 http://域名 或者 https://域名。接着去检查返回的状态码是不是200, 或者是301、302这样的有效状态码。

如果这些条件都符合了, 就可以确认这个域名是处于完整存活状态的。这意味着DNS解析正常, Web服务也正常。这种检测的方法是最贴近用户实际体验的。

二、常用工具与操作路径

检测层级 工具 命令示例
DNS nslookup / dig dig example.com A
Ping 系统自带 ping example.com
HTTP curl / 浏览器 curl -I https://example.com
批量/自动化 Python socket + requests 库 见下文

单域检测的情况, 通过使用上述提到的命令行操作就能完成。针对日常的巡检任务, 建议编写一个自动化的脚本。在执行的时候, 要按照“DNS”、“Ping”、“HTTP”这三级顺序来进行。每一步都需要逐级地去判断存活的状态, 并且把最终的结果给输出出来。

三、批量域名存活检测

怎么查域名还在不在?3种方法搞定域名存活状态检测(图1)

当你要管理那几十上百甚至多达几千个域名的时候,靠人工一个一个地去操作这个事域名存活状态检测, 根本就是不现实的。那么接下来呢, 我们推荐这样一个流程给你:

1. 将待检域名列表导入脚本, 这个操作支持txt格式也支持csv格式。

2. 脚本进行并发执行的操作是与DNS解析相关的, 这里要使用的是名为dnspython的库, 其目的在于过滤那些无法被解析的域名。

3. 针对那些还活着的域名, 大家同时去发起HTTPS请求, 并且记录一下对方返回的状态码是多少。

4. 将汇总报告进行输出, 并对三类状态进行标注, 这三类状态分别是存活、仅DNS存活以及已失效。

关于执行频率的具体建议是这样的, 对于关键业务的域名需要每天进行那一次的操作, 而对于那些长尾的域名来说则只需要每周进行一次就行了。

四、注意事项与选型建议

检测超时阈值设置得不应该太短, 因为如果时间小于两秒的话,很容易出现误判域名存活状态检测, 同时也不应该设得太长, 因为一旦超过十秒, 就会导致批量处理的效率变慢而受到拖慢的影响, 所以在实际应用中, 五秒通常被当做一个常用的默认数值。

在对CDN加速域名进行HTTP检查的时候, 应当采用带有User-Agent字段的完整请求数据, 以此来防止被WAF设备给拦截掉。

如果有长期跟踪域名状态的变化这种情况的需要, 比如说在到期之前的预警这样的环节, 那么就可以把已经做出来的检测结果写进数据库里面去, 然后, 再配合上定时任务的这种方式, 最后从而实现那个告警的功能。

在gname.xin平台里面。域名管理模块的这里。是有直接提供那个在线状态查询的路口的。注册商是可以直接的去看他们名下域名的NS指向以及解析的状态。是不需要再去额外地部署那些检测的脚本。

上述的这些法子, 它是把那个单子一个一个地手动去验, 到那大规模地自动地去检巡, 这个整个的一条链子都给包揽了, 大伙儿得是依照着实际上的域名那个多大规模, 来挑对的那个层的级去执行。