某个网站突然怎么都打不开了。其它网站一切正常,而这个网站昨天还好好的。你也没有改过任何设置,这是怎么回事?

在大多数情况下,罪魁祸首是 DNS 污染(DNS poisoning / DNS cache poisoning)。本指南会一步步教你如何确认网站是否因为 DNS 污染而打不开,并提供详细的解决方案。DNS 投毒很常见,而且几乎总是暂时性的。

解决方法从用时不到一分钟的 DNS 切换,到更高级的方案,比如通过一台美国独立服务器中转访问,以绕过本地 DNS 问题。DNS 投毒在跨服务器访问的情况下几乎无法持续。先从最简单的方法开始操作,只要网站恢复正常就可以停止。

你不需要任何专业技术。每做完一步,就测试一次网站是否能打开。绝大多数人都能在几分钟内恢复访问。

要点速览

  • DNS 污染的本质是:你的设备拿到了错误的网站地址(IP),导致网站无法加载。
  • 快速解决办法包括重启路由器、切换到公共 DNS 服务器(如 8.8.8.8)。
  • 使用 VPN 或安全 DNS,可以在排查期间临时绕过问题。
  • 清空 DNS 缓存、编辑 hosts 文件可以解决较顽固的情况。
  • 如果上述方法都无效,就需要向运营商(ISP)或网站方反馈详细报错信息。

通俗理解 DNS 投毒

正常的 DNS 查询是怎么工作的

每次你输入一个网址,设备都会向 DNS 解析器(DNS resolver)请求这个网站对应的数字地址(IP)。这个过程叫做 DNS 解析(DNS resolution)。一次正常的 DNS 查询速度非常快,在网络状况良好的情况下,多数请求都会在 20–120 毫秒内完成。当延迟达到 150 毫秒以上时,你就会开始感觉到变慢,而超过 200 毫秒就值得仔细排查了。

性能等级典型 DNS 查询时长
快速且响应灵敏的连接20–120 ms
开始出现明显延迟150 ms 以上
体验明显卡顿300 ms 或更多
值得进一步排查的阈值超过 200 ms

你的设备会把近期的 DNS 解析结果缓存在 DNS 缓存中,以便下次访问同一网站可以更快。这些缓存记录如果是正确的,就会把浏览器指向真正的服务器;如果有人篡改,把正确记录换成假的地址,你的浏览器就会被指向错误的地方,或者“无处可去”,这就是 DNS 投毒破坏信任链的方式。单纯的查询变慢会让你感觉像是网站坏了,但很多时候真正的问题不在速度,而在“答案是不是对的”。

DNS 缓存投毒具体做了什么

DNS 缓存投毒(DNS cache poisoning)就是用错误答案替换正确答案。攻击者向 DNS 缓存中插入虚假的记录,而你的设备会把它当成真的。这种伎俩也被称为 DNS 缓存欺骗(DNS cache spoofing)。结果很直观:浏览器连向错误的位置,网站就打不开了。本指南讨论的网站访问故障,很大概率就是这种 DNS 缓存投毒引起的。

DNS 投毒既可以只针对某一台设备,也可以影响整个局域网。这就解释了为什么有的网站打不开,而其它网站却一切正常。一个错误的 DNS 缓存记录只会影响到它对应的域名,其它查询依然可以返回正确结果。DNS 投毒从来不会让你“所有网站都同时坏掉”。

DNS 投毒攻击往往从薄弱的路由器开始。如果你经常遇到类似的 DNS 问题,很可能是网络里某台设备没有打补丁,或者路由器固件存在漏洞,使得 DNS 投毒可以反复成功。你通常可以通过这样的特征识别 DNS 投毒:只有某一部分网站有问题,其他网站正常;并且换网络(比如用手机流量)后就恢复。这说明 DNS 问题限定在某个网络环境中。好消息是,DNS 缓存投毒一般都是暂时性的,多数都能很快清理干净。接下来就用下面这些步骤来修复。

确认网站打不开是否真的因为 DNS 污染

先做一些快速排查

先从最简单的检查开始。在同一个网络下,用另一台设备打开同一个网站;然后再试试不同的浏览器,并开一个“无痕 / 隐私模式”窗口。再做一次强制刷新:Windows 上按 Ctrl+Shift+R,Mac 上按 Command+Shift+R。这些操作能帮你确认问题是只出在某个浏览器、某个设备,还是整个网络。

接着排除干扰因素。暂时关闭 VPN 和杀毒软件,再刷新网页。也检查一下防火墙设置。过于严格的防火墙规则也可能拦截某个网站,看起来就像 DNS 故障。如果关掉 VPN 后网站可以正常打开,那说明问题来自 VPN,而不是 DNS 投毒。

哪些迹象说明是 DNS 问题

留意是否存在一个清晰的“模式”:只有部分网站打不开,而大部分网站正常。这往往暗示 DNS 解析被篡改,是判断是否遇到 DNS 投毒的最重要信号之一。你也可以根据浏览器或系统抛出的错误提示来判断,比如“DNS server not responding(DNS 服务器无响应)”或者“domain could not be found(找不到域名)”之类,都直指 DNS 层面的问题。

还有一些其它信号可以帮助你识别 DNS 投毒:意外跳转到陌生网站、证书警告、首次打开某网站时异常缓慢等,都可能是线索。最典型的还有:你访问的 URL 和实际打开的内容明显不符。此时可以运行 nslookup 或 dig 命令,查看返回的 IP 地址是否和预期一致。如果 IP 地址明显不对,就可以基本确认存在篡改。

你还可以启用 DNSSEC 来防止解析结果被篡改;在支持的情况下使用 DNS-over-HTTPS(DoH)或 DNS-over-TLS(DoT)对 DNS 查询进行加密;定期做恶意软件扫描以防止恶意程序修改 hosts 文件;同时保持路由器和固件处于最新版本,以减少 DNS 劫持的风险。

表现可能意味着什么
意外跳转熟悉的 URL 却打开了陌生网站,或弹出异常的登录界面
浏览器安全警告出现“证书不受信任”等提示,可能是仿冒网站
IP 解析结果异常nslookup 或 dig 返回的地址与预期不符
DNS 设置被擅自修改设备或路由器的 DNS 设置在你不知情的情况下发生改变

以上检查只需几分钟,就能为后续的 DNS 故障排查打下比较扎实的基础。

快速修复:优先尝试的 DNS 投毒解决方案

重启设备并切换 DNS 服务器

先把基础操作做一遍。重启路由器和光猫 / 调制解调器,然后重启你的电脑或手机。这可以清理很多临时故障。接着释放并重新获取 IP 地址,让设备重新向路由器申请网络配置。这些操作几乎不花成本,却经常能直接解决问题。

如果网站仍然打不开,就更换 DNS 服务器。推荐先使用 Google 的公共解析服务:主 DNS 设为 8.8.8.8,备 DNS 设为 8.8.4.4。各平台的 DNS 设置入口大致如下:

  1. Windows 11:打开“设置 > 网络和 Internet > 高级网络设置”,选择当前连接,点击“查看其他属性(View additional properties)”,在“DNS 服务器分配(DNS server assignment)”处点击“编辑(Edit)”,把“自动(DHCP)”改成“手动(Manual)”,开启 IPv4,输入 8.8.8.8 和 8.8.4.4,然后保存。
  2. Windows 10:打开“设置 > 网络和 Internet > 更改适配器选项(Change adapter options)”,右键当前网络连接,选择“属性”,找到“Internet 协议版本 4 (TCP/IPv4)”,点击“属性”,勾选“使用下面的 DNS 服务器地址(Use the following DNS server addresses)”,分别填入 8.8.8.8 和 8.8.4.4,然后确定。
  3. Mac:打开“系统设置 > 网络”,选择 Wi‑Fi 或有线网络,点击“详情(Details)”,切换到“DNS”选项卡,点击加号,添加 8.8.8.8,再添加 8.8.4.4,最后点击“好 / 确定(OK)”。
  4. 路由器:登录路由器管理界面,在“互联网 / WAN / 网络”之类的页面找到 DNS 设置,把“自动获取 DNS”改为“手动指定”,填入 8.8.8.8 和 8.8.4.4,保存并应用。

用 8.8.8.8 测试还有一个好处:可以帮你判断是不是某个内部 DNS 代理或过滤器导致的故障。如果换成公共 DNS 后网站能打开,而换回原来的 DNS 就不行,那说明问题出在原有的本地 DNS 或过滤服务上。

为什么这招通常有效?因为 Google Public DNS 会验证 DNSSEC 签名,对签名不匹配的响应直接丢弃,从而阻止注入的虚假地址;对于确不存在的域名,它会返回真正的 NXDOMAIN,而不是被运营商或中间人“劫持”的错误页面,同时保持一个覆盖全球的新鲜缓存。

Wilmer van der Gaast 回顾 Dan Kaminsky 公布缓存投毒漏洞时就指出,仅有 16 位随机 ID 远远不够,而且那些没有进行端口号随机化的服务对缓存投毒格外敏感。

这段历史很好地说明了“可信解析器有多重要”:一旦 DNS 服务器本身被投毒或做了不当过滤,就会源源不断地提供错误答案;而切换到可靠的解析器,则能恢复到真实的解析结果。

使用 VPN 或安全 DNS 作为临时绕过方案

VPN 或安全 DNS(比如 DNS-over-HTTPS)可以绕开被污染的解析结果。DNS-over-HTTPS 会把查询封装进加密的 HTTPS 连接里,这样网络路径上的第三方就无法轻易拦截或篡改,从而有效阻止 DNS 注入和恶意重定向。可以把它看成“应急通道”,在你必须马上访问网站时非常有用。

不同 VPN 的防护能力也不一样。比如 ExpressVPN、NordVPN、Surfshark、IPVanish 和 ProtonVPN 会通过专门的 DNS 处理方式来抵抗基于 DNS 的会话推断攻击;而 PIA、PrivateVPN、CyberGhost、Windscribe 等在部分测试中则显示出一定的脆弱性。如果你长期依赖 VPN 来保护隐私和访问网站,建议优先选择 DNS 处理比较安全的提供商。

最后,别忘了检查路由器固件更新。最新固件会修补已知漏洞,显著降低反复出现 DNS 错误的概率。花一分钟检查更新,往往能避免日后很多麻烦。

顽固故障的进阶修复方法

清空 DNS 缓存

如果 DNS 缓存里的错误记录没有被清掉,即使你已经更换了 DNS 服务器,系统仍可能继续使用那条“陈旧又错误”的答案。此时就需要手动刷新 DNS 缓存,强制系统重新查询。

在 Windows 上,以管理员身份打开命令提示符(Command Prompt),执行命令 ipconfig /flushdns。在 Mac 上,具体命令取决于系统版本。

平台 / 版本命令
Windows (10, 8, 7, XP)ipconfig /flushdns
macOS 10.11+(El Capitan ~ Catalina)sudo killall -HUP mDNSResponder
macOS 10.10(Yosemite)sudo discoveryutil udnsflushcaches
macOS 10.6(Snow Leopard)sudo dscacheutil -flushcache
Chrome(浏览器自身的 DNS 缓存)在地址栏打开 chrome://net-internals/#dns,点击“Clear host cache”

Chrome 维护着一套独立于系统的 DNS 解析缓存,因此除了系统级缓存外,也要在浏览器里清理一次。随后可以在 Chrome 的“设置 > 重置设置”中重置网络相关设置。在 Windows 上,你还可以额外重启 DNS Client 服务:打开“服务(Services)”,找到“DNS Client”,点击“重新启动(Restart)”。这样可以从服务层面清空 DNS 缓存,避免 DNS 投毒残留。

编辑 hosts 文件并重置网络设置

hosts 文件的优先级高于 DNS 解析,它可以在本机直接把域名指向指定 IP 地址。编辑它,就可以临时把目标网站手动指向正确的服务器 IP。用管理员权限打开该文件:Windows 上是 C:\Windows\System32\drivers\etc\hosts,Mac 上是 /etc/hosts。然后新增一行,填入目标 IP 地址、空格、域名。

修改前记得先备份 hosts 文件;当网站恢复正常之后,记得删除这条临时记录,否则以后有可能引入新的问题。

如果问题仍旧存在,可以尝试重置整个网络设置。在 Windows 上,打开“设置 > 网络和 Internet > 高级网络设置 > 网络重置(Network reset)”;在 Mac 上,可以删除当前网络服务(比如 Wi‑Fi 配置),然后重新添加。这些操作会清理残留的 DNS 与网络配置,重新构建连接。如果做完这些操作后仍然频繁出现“dns server not responding(DNS 服务器无响应)”之类的错误,就很可能说明问题出在更上游的 DNS 污染。

什么时候需要联系运营商或网站方

该提供哪些信息、应该有什么预期

当你已经把自己能做的步骤都尝试一遍,问题依然存在,就应该考虑升级处理。若故障在整个家庭网络中都能复现,那很可能是运营商(ISP)层面的问题。你可以先在同一个路由器后面的两台设备上测试目标网站,再在手机上切换到蜂窝数据(移动流量)进行测试:如果在家庭网络里都打不开,但用手机流量就能打开,那问题大概率出在运营商或你的路由器上;如果无论在哪个网络都打不开,那很可能是网站自身遭遇 DNS 攻击或宕机。

联系前先收集好信息:记下网站的 URL、完整的报错信息、故障发生的大致时间段;列出你测试过的设备和已经尝试过的 DNS 设置;提及是否出现“dns server not responding”之类的提示;说明其它网站是否正常、是否只有这一个网站有问题。这些证据能帮助客服或技术支持更快定位 DNS 服务器是否存在问题。

响应速度因运营商而异。有的 ISP 会在数小时内修复 DNS 投毒,有的则可能需要几天。在等待期间,你可以继续使用临时的绕过方案,比如 VPN 或安全 DNS,以确保目标网站仍可访问。如果网站方确认这是针对其域名的攻击,那后续修复工作主要在他们那一侧。

记得把每一次沟通做个简要记录。如果 DNS 污染持续超出对方承诺的时间窗口,就可以拿出这些记录来催办。有时线路上的 DNS 问题可能需要推送新固件或更换路由器才能彻底解决,你也可以主动询问运营商是否对 DNS 流量做了特殊过滤。有些 ISP 会部署透明 DNS 代理,即使你手动改了 DNS,他们仍会在中间“改写”解析结果,这种情况下网站只有在你申请退出该机制后才能真正恢复访问。

如果在你重启设备之后仍然一次又一次遇到“dns server not responding”错误,这会大大强化你向客服说明问题严重性的理由。告诉对方你已经刷新过 DNS 缓存,也已经切换到公共 DNS 服务器,并说明你具体用了哪些 DNS 地址。这些信息能让你的工单绕开“基础脚本排查”,更快到达真正懂 DNS 的工程师手里。

你还可以在另一个你信任的网站上重复同样的检查。如果多个网站都出现类似故障,就意味着这是更大范围的 DNS 污染,而不是某一个记录出错。可以直接请对方核查你线路上所用 DNS 解析器的健康状况。很多广泛的 DNS 污染问题最后都会追溯到路由器或运营商侧的设备配置错误。

建议你为对方设定一个合理的首次响应时间,例如一个工作日,并在等待期间继续确认:只要通过 VPN 能访问目标网站,你就始终有一个可用的备用方案。保持备用 DNS 设置随时可用,也能帮助你在问题再次出现时快速切换。

按照本文的顺序执行排查步骤:先重启路由器和光猫,再切换到 8.8.8.8 之类的公共 DNS;如果还不行,再试 VPN 或安全 DNS;最后再清空 DNS 缓存、编辑 hosts 文件。绝大多数 DNS 投毒案例都能在这几步之内解决。

日常防范也很重要:在公共网络上启用 DNS-over-HTTPS,可以降低 DNS 污染的风险;为自己准备一个可信赖的备用解析器,当主 DNS 出问题时可以迅速切换;定期更新路由器固件,从源头上减少 DNS 劫持和投毒的机会。

因 DNS 污染导致网站打不开,并不意味着你的设备坏了。这类问题通常是暂时的,只要按照上面的步骤操作,就可以很快修复 DNS 投毒,重新打开网站。

常见问题解答(FAQ)

怎么判断是 DNS 投毒,而不是网站本身宕机?

在同一个路由器下换一台设备测试,再用手机切到移动数据测试同一个网站。如果只有在你这个网络环境下打不开,而在手机流量等其它网络能打开,就很可能是 DNS 污染;如果在所有网络上都打不开,那更像是网站本身宕机或故障。也可以顺便检查当前设备正在使用的 DNS 服务器地址。

切换到 8.8.8.8 一定能修好 DNS 投毒吗?

不一定。像 8.8.8.8 这样的公共解析器,可以绕过被篡改或被过滤的本地 DNS 服务器,因此在大部分 DNS 投毒案例中都很有效。但如果换了之后还是打不开,那说明问题更有可能出在更上游的 DNS 节点,或者你的本地 DNS 缓存还在缓存错误结果。

VPN 能彻底杜绝 DNS 投毒吗?

不能。VPN 或 DNS-over-HTTPS 在开启时可以把你的 DNS 查询从本地网络“隐藏”起来,从而在会话期间规避本地的 DNS 污染。但一旦你关闭 VPN,流量又会回到原来的 DNS 路径上。如果本地路径本身存在问题,DNS 投毒还是会回来。所以把 VPN 当作“临时绕行”的方案,而不是永久治本的手段。

为什么我已经修好一次,DNS 污染过一阵子又回来?

一般是因为某处依然存在陈旧的 DNS 缓存,或者路由器没有打补丁,持续输出错误解析结果。你需要同时清理本机缓存、更新路由器固件,并确认所使用的 DNS 解析器是可信的。反复出现的 DNS 投毒问题,通常都能追溯到网络中的某一台“问题设备”。

DNS 污染会影响整个家庭网络吗?

会的。如果是路由器或上游解析器被投毒,那么所有通过它上网的设备都会受到影响,导致整个家庭都打不开某个网站。排查时,先用手机切到移动数据测试;如果只在家里网络打不开,那就优先在路由器层面修改 DNS 设置,并在 Windows 上重启 DNS Client 服务,把旧的错误解析彻底清干净。