当你在浏览器里输入一个网站地址,比如 www.zhiwanguide.com,系统会自动进行 DNS 查询,把域名转换成 IP 地址。这个过程看起来很快,也很隐蔽,但其实它在网络传输中是“裸奔”的。
DNS 查询是怎么走的
大多数情况下,DNS 查询使用的是 UDP 协议,默认端口是 53。请求包从你的电脑发出,经过路由器,最终到达本地运营商的 DNS 服务器或公共 DNS 服务器(如 8.8.8.8)。这一来一回的数据交换,本质上就是网络数据包。
既然是数据包,那就可以被抓到。只要你在同一个局域网里,或者中间节点有人监听,比如公司网络、校园网,甚至路由器被动了手脚,就能用 Wireshark 这类工具把 DNS 请求看得清清楚楚。
实际抓包看看
打开 Wireshark,设置过滤条件:
dns
然后在浏览器访问几个网站。你会看到一堆 DNS 查询记录,包括你问的是哪个域名,返回了什么 IP。比如一条记录显示:
- Query: A www.banklogin.com
- Response: 104.26.10.22
哪怕你还没真正访问那个网站,光是域名解析这一步,就已经暴露了你的意图。
HTTPS 再安全也藏不住 DNS
很多人以为用了 HTTPS 就万事大吉,其实不是。HTTPS 只加密网页内容,不加密 DNS 查询。你访问的是哪个网站,在 DNS 阶段就已经泄露了。别人可能不知道你具体点了啥按钮,但知道你连上了某个敏感站点。
举个例子,你在公司电脑上查招聘信息,用的是公司网络。虽然简历上传是加密的,但 DNS 记录显示你频繁访问某招聘网站,HR 或 IT 部门稍微翻翻日志就心里有数了。
怎么防止被监听
想让 DNS 查询更安全,得换加密方式。现在有几种方案:
DNS over HTTPS(DoH):把 DNS 请求塞进 HTTPS 流量里,跟网页数据混在一起。Wireshark 看到的只是一堆加密流量,分不清哪条是 DNS。
DNS over TLS(DoT):和 DoH 类似,但用的是独立的 TLS 加密通道,通常走 853 端口。
主流浏览器和操作系统已经开始支持这些功能。比如 Firefox 可以在设置里开启“使用推荐的 DNS 服务”,其实就是启用了 DoH。安卓 9 以上也允许用户手动配置私有 DNS,填上 dns.google 或 one.one.one.one 就能启用加密查询。
如果你经常连公共 Wi-Fi,或者对隐私比较在意,建议早点把 DNS 加密打开。不然你查个快递、看个冷门网站,都可能被人从数据包里扒出来。