搜索

为什么dns老是出问题

发表于 2026-10-17 06:00:51 来源:烟消火灭网
```html 为什么DNS老是出问出问题

为什么DNS老是出问题

一个技术控的日常吐槽与观察

上周三下午,同事在群里喊了一句“又打不开网页了”,出问紧接着整个办公室此起彼伏地响起“我也是出问”。我随手在终端敲了 nslookup baidu.com,出问等了整整五秒才返回结果。出问那一刻我就知道,出问又是出问DNS在作妖。

DNS这东西,出问说白了就是出问互联网的电话簿。你想访问 example.com,出问机器不认识这串字母,出问它只认IP地址。出问得有人帮你查一下——这个域名对应哪个IP。出问查到了,出问你才能连上。出问听起来简单,但问题恰恰出在这个“查”字上。

我家里那台路由器,每隔几周就会犯一次病。表现很典型:微信能发消息,但打不开任何新网页。因为微信的IP早就缓存在本地了,而新网页需要重新查DNS。这时候你ping一下 8.8.8.8 是通的,但 nslookup 就是超时。重启路由器,好了。过几天,又来。

为什么这么脆弱?因为DNS是互联网上最古老、最分散、最缺乏统一管理的核心系统之一。它诞生于1983年,设计之初就没考虑过现在这种规模的流量和攻击面。整个体系像一座用积木搭起来的大厦,每一块积木由不同的人、不同的机构在维护。你查一个域名,背后可能经过了递归服务器、根服务器、顶级域服务器、权威服务器,中间任何一环卡住,你就只能干瞪眼。

我遇到过最离谱的一次,是某个小运营商的DNS服务器把 github.com 解析到了一个完全不相关的IP上。后来查出来,是他们的缓存被污染了。缓存这东西本意是加速,结果变成了毒药。DNS的TTL(生存时间)设置也是一门玄学。设短了,服务器压力大;设长了,你改了IP,全世界要等好几个小时才能更新。我见过有运维把TTL设成86400秒——整整一天。结果服务器迁移那天,用户骂了一整天。

“DNS不是魔法,它只是比魔法更容易出故障。”——某位被DNS折磨过的运维

还有DDoS攻击。DNS反射放大攻击是黑客最爱的手段之一。攻击者伪造你的IP,向全球成千上万的开放DNS服务器发送查询请求,这些服务器会把响应发给你的IP。一个几十字节的请求,能放大成几千字节的响应。你的带宽瞬间被垃圾数据填满,正常用户的DNS查询自然就超时了。2016年那场Mirai僵尸网络攻击,直接把Dyn公司的DNS服务打瘫,半个美国的网站都挂了。Twitter、Netflix、GitHub,全都打不开。

再说说我们自己的设备。手机连上WiFi,自动获取的DNS往往是路由器的地址,路由器再转发给运营商。运营商那台DNS服务器,可能同时服务几十万用户。高峰期一过载,响应就慢。你以为是网卡了,其实是DNS在排队。我习惯把手机和电脑的DNS手动改成 1.1.1.1 或 8.8.4.4,能避开不少运营商级别的故障。但这也只是绕路,不是根治。

本地缓存也会骗你。Windows的 ipconfig /flushdns 我敲过无数次。有时候你改了hosts文件,浏览器却死活不认,就是因为系统缓存和浏览器自己的DNS缓存各管各的。Chrome有个内部页面 chrome://net-internals/#dns,可以清掉它自己的缓存。这些细节,说明书上从来不写。

IPv6的普及又给DNS添了新乱。AAAA记录查不到,有些系统会傻等,而不是立刻回退到IPv4。你访问一个双栈网站,结果卡在IPv6的查询上,十几秒后才想起来用IPv4。这种“ happy eyeballs ”算法要是没实现好,用户体验就是灾难。

所以下次你再遇到“网页打不开但微信能用”,别急着骂宽带。先 nslookup 一下,看看是不是DNS又在半路失踪了。这玩意儿就像空气——正常的时候你感觉不到它,一旦出问题,你什么都干不了。

我现在的做法是:路由器上跑一个本地DNS缓存(比如 dnsmasq),上游配两个不同的公共DNS,再加一个运营商的做备份。听起来很折腾,但至少不会在赶稿子的时候突然断网。DNS不会消失,它只会继续以各种意想不到的方式出问题。我们能做的,就是多备几条路。

```
随机为您推荐
友情链接
版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright © 2016 Powered by 为什么dns老是出问题,烟消火灭网   sitemap

回顶部