一个BUG告诉你DNS是什么
0. Preliminary:什么是DNS
在进入正题前,我们先聊聊 DNS (Domain Name System, 域名系统),再用一个bug帮你理解
NS (Domain Name System, 域名系统) 就是互联网的电话簿。
计算机在网络上进行通信时,实际上是使用 IP 地址(例如 192.0.2.1)来定位彼此的。但对于人类来说,记住一串无规律的数字太难了,我们更擅长记住 google.com 这样的域名。
DNS 的核心任务,就是将人类可读的域名“翻译”成机器可识别的 IP 地址。
1. A Bug:消失的HPC
这天我准备登录学校的 HPC 跑实验,结果浏览器弹出了这样的报错:
报错信息很直白:“检查一下是不是 typo(拼写错误)”。但我反复确认了无数次,域名绝对没写错。
经排查,发现原来是不知何时我在校园网的Dns Servers里写死了解析服务器的IP 8.8.8.8
2. 全能但不全知的8.8.8.8
8.8.8.8 是 Google 提供的免费 公共 DNS 解析服务(Google Public DNS),它以稳定和快速著称。
为什么DNS Server写死 8.8.8.8,浏览器反而不认识学校 HPC 的网址了呢?
这就好比我把“校内通讯录”扔了,换成了一本“全球通用百科全书”。
8.8.8.8 只记录了在公网注册过的地址。
学校的 HPC 网址通常是私有域名,只在学校内部的 DNS 服务器上登记了。
当我问 Google:“hpc.school.edu 的 IP 是多少?”
Google 翻遍了全球记录后只能摊手告诉我:“对不起,我不认识这个网站。” 因为它没有权限查看我学校内部的服务器名单。
3. 深入理解DNS的逻辑
DNS 请求并不是随机乱撞的,它遵循一个层级结构:
浏览器/系统缓存:先看看自己记不记得。
递归解析器:也就是我设置的 8.8.8.8 或学校 DNS。
根/顶级域名服务器:告诉解析器去哪找 .edu。
权威服务器 (Authoritative Server):最终存放 IP 地址的地方。
Bug 的本质: 学校的权威服务器可能只对校园网内部开放。当我绕过校园网默认 DNS 去问 Google 时,这条线索就在公网节点中断掉了。
4. 正确的做法
直接删除8.8.8.8即可
或者既想享受公共 DNS 的稳定,又想顺畅访问校内资源,可以尝试保留两个地址
即首选 DNS 填写路由器的默认网关(如 192.168.0.1)或学校提供的 DNS,保证内网优先
备用 DNS 填写 8.8.8.8,作为外网解析的后盾