首页 帮助中心 DNS污染处理 怎么检测DNS是否被污染?nslookup/dig命令判断教程
怎么检测DNS是否被污染?nslookup/dig命令判断教程
时间 : 2026-09-05 10:35:58
编辑 : 华纳云
阅读量 : 2

  当你输入一个网址,结果跳到了一个满屏广告的页面,或者直接打不开,而你的网络明明连着——这种情况,很可能是DNS污染在作祟。DNS污染,简单说就是有人(通常是运营商或中间网络节点)在你查询域名对应的IP地址时,偷偷修改了应答数据包,把你引导到了一个错误的、甚至是有害的服务器上。这篇文章直接讲实操,用系统自带的nslookupdig命令,一步一步判断DNS是不是被污染了。

  准备工作:理解你的“武器”

  在动手之前,先搞清楚这两个命令能干嘛。

  nslookup是Windows、Linux和macOS都自带的基础DNS查询工具,上手门槛很低。它适合快速查看某个域名在当前网络下解析成了什么IP。

  dig是Linux和macOS系统默认安装的更强大的DNS排查工具,输出信息比nslookup更详细、更接近协议底层,是全球网络工程师诊断DNS问题时的首选。它的核心优势在于可以精确追踪解析链路,并指定任意DNS服务器进行查询。

  Windows用户注意:Windows系统默认没有dig命令。如果你非要用,需要安装BIND工具集,或者直接用nslookup就够了,Windows下用它排查问题完全够用。

  核心方法:对比法

  检测DNS污染最核心的逻辑就四个字:交叉对比。

  你本地运营商给你的DNS结果可能被污染了,但Google(8.8.8.8)或Cloudflare(1.1.1.1)的公共DNS是相对干净的。如果同一个域名,在本地默认DNS下查出来的IP,和在公共DNS下查出来的IP不一样,而且本地查出来的那个IP明显有问题(比如打不开、是个奇怪的广告页面),那基本就能确认污染了。

  第一步:用本地默认DNS解析(看“现状”)

  先看看你当前网络环境下,这个域名被解析成了什么IP。这很可能是被污染后的结果,作为待验证的“嫌疑样本”。

  用nslookup(Windows/Linux/macOS通用):

  打开命令提示符或终端,输入:

nslookup 你的域名.com

  输出示例:

服务器:  your-isp-dns.com
Address:  202.96.128.86

非权威应答:
名称:    你的域名.com
Address:  123.45.67.89   <- 记录下这个IP

  用dig(Linux/macOS):

dig 你的域名.com +short

  这个命令只返回IP地址,干净利落。比如:

dig example.com +short
93.184.216.34

  记下这里返回的IP地址。

  第二步:用可信公共DNS解析(找“真相”)

  现在,绕开你本地的DNS服务器,直接去问国际通用的公共DNS,拿到一个相对可信的“正确答案”。

  用nslookup指定服务器:

nslookup 你的域名.com 8.8.8.8

  用dig指定服务器(更常用):

dig @8.8.8.8 你的域名.com +short

  这里的@8.8.8.8就是告诉dig命令,去向Google的DNS服务器发起查询。

  第三步:对比结果,做出判断

  现在你手上有两个IP地址了:一个是本地DNS给的(可能有问题),一个是公共DNS给的(相对可信)。

  情况一:两个IP地址完全一样

  这说明你的本地DNS解析结果是正确的,大概率没有污染。如果网站还是打不开,那问题可能出在服务器本身、本地Hosts文件或者网络路由上。

  情况二:两个IP地址不一样

  这是DNS污染的典型特征。接下来,就要判断本地返回的那个IP是不是“坏”的。

  怎么判断IP好坏?

  1. 能不能ping通:在命令行里执行ping 本地返回的IP。如果丢包率100%,根本ping不通,说明这个IP很可能是个不存在的“假地址”。

  2. 是不是熟悉的地儿:如果返回的是127.0.0.1(本机)、192.168.x.x(局域网地址),或者是一个你根本不认识的、一看就是广告页面的服务器IP,那肯定是污染了。

  第四步:用+trace追查污染发生在哪(进阶)

  如果你想看得更细,看看污染到底发生在哪一层,可以用dig的+trace参数。它会一步步显示从根域名服务器、顶级域名服务器,到你域名的权威服务器的整个查询路径。

dig +trace 你的域名.com

  如果在这个过程中,权威服务器返回的IP是正确的,但在中间某个节点突然冒出来一个错误的IP,那说明污染就发生在那个中间节点上(通常是运营商劫持或跨境网关干扰)。

  第五步:别忘了清缓存

  如果确认了本地DNS解析结果有问题,在切换DNS服务器之后,一定要清除本地DNS缓存,否则电脑里缓存的错误记录还会让你继续访问到假IP。

  Windows:

ipconfig /flushdns

  macOS:

sudo killall -HUP mDNSResponder

  Linux(取决于你的系统服务):

sudo systemd-resolve --flush-caches

  或者

sudo systemctl restart nscd

  检测流程一句话就能说清楚:用nslookupdig分别通过本地DNS和公共DNS解析同一个域名,对比两个IP地址。如果不同,且本地返回的IP地址无效,说明DNS被污染了,换DNS并清缓存就行

相关内容
客服咨询
7*24小时技术支持
技术支持
渠道支持