DNS 污染,就是有人在解析这一步给了你一个假地址。

你查域名,返回的 IP 不是你的服务器,而是别人的、无效的、甚至根本不该出现在公网结果里的地址。后面所有访问自然都不对。

它怎么检测

从多个地区的递归节点同时解析同一个域名,把各地拿到的结果摆在一起比对。

如果大部分地区返回一致、跟权威记录对得上,那解析正常。

如果某些地区返回了完全不同的 IP,而且这些 IP 跟你的业务无关,那就有问题。

污染的典型特征

  • 返回与本域无关的 IP:可能是广告页、黑洞地址、别人的服务器
  • 返回保留地址:0.0.0.0、127.0.0.1、内网段,这些不该出现在公网解析里
  • 部分地区直接解析失败:同一个域名,有的地方能查,有的地方查不到

三条里中任意一条,都值得进一步核实。

为什么必须多地区

因为污染通常是局部的。

可能只有某个运营商、某个出口有问题,其它地区完全正常。你在本地查一切正常,用户那边却打不开,这种情况非常常见。

单点查询只能看到一条路径的结果,多节点才能看出分布范围。

和「解析慢」不是一回事

解析慢是耗时高,但结果是对的。

污染是结果错了,耗时可能很快,因为返回假 IP 比回源查真记录还快。

所以别用「打开快不快」来判断有没有污染,要看「解析出来的地址对不对」。

发现之后怎么办

先别急着换域名。第一步是确认权威记录本身没问题,再判断污染发生在哪一层。

本地递归污染、出口污染、权威服务器被改,处理方式完全不同。这个后面单独讲。