在办公室上网时,突然打不开网页,但Wi-Fi又连着,这时候很多人第一反应是重启路由器。其实,问题可能出在DNS上。通过抓包分析DNS查询过程,能快速定位是不是域名解析出了问题。
为什么要抓DNS包?
比如你输入 www.baidu.com 打不开,但用手机热点却能访问,说明不是网站的问题。这时候抓个包,看看电脑有没有发出DNS请求,或者服务器回没回应,就能判断是本地配置、网络中间设备还是运营商的问题。
用什么工具抓包?
最常用的工具是Wireshark,免费、跨平台,适合办公环境使用。安装后打开,选择当前上网的网卡(一般是Wi-Fi或以太网),点开始捕获。
怎么过滤DNS流量?
刚抓的包可能一大堆,全是数据混在一起。在过滤栏输入:
dns
回车后就只显示DNS相关的通信了。你会看到类似这样的记录:
- Query: A www.baidu.com —— 这是你电脑问“百度IP是多少”
- Response: 202.108.22.5 —— 这是DNS服务器回复的IP
怎么看有没有异常?
如果只有Query没有Response,大概率是DNS请求被拦截或丢包了。常见于公司防火墙限制、恶意软件劫持,或者用了不稳定的公共DNS。
再看响应内容,如果返回的IP明显不对(比如一个国内网站返回国外IP),可能是DNS污染。这时候换用可靠的DNS服务,比如114.114.114.114 或 223.5.5.5,再试一次。
实际例子:内网系统打不开
同事说OA系统 oa.company.local 打不开。你抓包发现根本没发DNS请求——说明程序没走网络,可能是浏览器缓存了错误记录,或者host文件被改过。
清缓存还不行?继续抓包,发现请求发给了192.168.1.1(公司路由器),但没收到回复。联系IT发现内部DNS服务器挂了,这就定位到了问题根源。
小技巧:命令行也能简单抓包
不想装Wireshark?Windows自带nslookup可以快速查DNS响应:
nslookup www.baidu.com
Linux和Mac可以用dig:
dig www.baidu.com
这些命令能直接告诉你解析结果和用的是哪个DNS服务器,配合抓包更高效。
遇到网络问题别急着重启,先抓个DNS包看看。多练几次,几分钟就能判断问题出在哪一层,比瞎猜强多了。