【TCP/IP 教程·第六弹】《DNS:电话簿、指路牌和骗子广告的三体世界》
59
0
0
上回宿管阿姨 DHCP 刚发完房卡,今天聊“电话簿”DNS。
它能把 www.bilibili.com 翻译成 120.92.78.97,也能把你骗去“澳门皇家赌场”。
根域、顶级域、缓存、投毒、CDN 调度……比三体还黑暗森林。
1. 人类友好 vs 路由友好
人脑:www.bilibili.com
路由:120.92.78.97
DNS 就是实时翻译官,1 秒查 100 次,全年无休。
没有它,你得背 3000 个 IP 才能冲浪,堪比背圆周率后 1000 位。
2. 域名结构:从右往左读,宇宙级树状图
.(根)
└── com.(顶级域 TLD)
└── bilibili.(二级域)
└── www.(主机名)注意最后的小黑点“.”,平时被浏览器省略,
但抓包里能看见,它是“宇宙尽头”——根域。
3. 递归 vs 迭代:谁帮谁跑腿
- 递归(客户端→本地 DNS)
“老哥,给我 www.bilibili.com 的 A 记录,别的你别管!” - 迭代(本地 DNS→根→顶级→权威)
根:“去问 com.”
com:“去问 bilibili.”
bilibili:“www 是 120.92.78.97,拿好。”
本地 DNS 像包工头,跑断腿帮你一站式拿 IP;
客户端只发 1 次请求,就能躺平。
4. 一次完整查询的 7 张明信片
- 客户端 → 本地 DNS:递归查询 www.bilibili.com
- 本地 DNS → 根(.):“com 去哪?”
- 根 → 本地 DNS:“com 在 192.12.36.4”
- 本地 DNS → com 服务器:“bilibili 呢?”
- com → 本地 DNS:“ns1.bilibili.net 119.29.29.29”
- 本地 DNS → 权威 DNS:“www 的 A 记录?”
权威 → 本地 DNS:“120.92.78.97”
本地 DNS 回给客户端,并缓存 300 秒。全程 UDP 53 端口,丢包就重传,比外卖简单。
5. 缓存 = 本地小黑板
- 浏览器缓存 1 min(Chrome 看 chrome://net-internals/#dns)
- OS 缓存 5 min(Windows
ipconfig /displaydns) - 本地 DNS 缓存 5 min–24 h(TTL 决定)
TTL 越短,实时性越高,老板钱包越瘪(CDN 流量费)。
所以刷票软件把 TTL 改成 30 秒,权威服务器当场哭。
6. 记录类型:电话簿里的便利贴
| 类型 | 作用 | 示例 |
|---|---|---|
| A | 域名→IPv4 | www → 120.92.78.97 |
| AAAA | 域名→IPv6 | www → 2400:89c0:1:: |
| CNAME | 域名别名 | img.bilibili → ali.cdn.com |
| MX | 邮件交换 | @bilibili → mx1.qq.com |
| TXT | 文本验证 | 用于 SPF、DKIM、Google 验证 |
| NS | 权威服务器 | bilibili → ns1.bilibili.net |
| PTR | IP→域名 | 97.78.92.120 → www.bilibili.com |
7. CDN 调度:DNS 的“地图导航”
同样的 www.baidu.com,
北京用户拿到 61.135.169.121,
广州用户拿到 14.215.177.38。
权威 DNS 根据本地 DNS 的源 IP(EDNS Client Subnet)判断用户位置,
返回最近节点,实现“就近上厕所”。
8. 投毒与劫持:电话簿被撕页
- 本地 hosts 篡改
360 全家桶把 www.2345.com 指向 127.0.0.1,假装“屏蔽”。 - ISP 缓存污染
你输 www.google.com,返回 203.98.7.65(澳门赌场)。 Kaminsky 攻击
伪造迭代应答,把 *.com 全部指到黑客服务器。2008 年 Kaminsky 公布漏洞,全球根服务器连夜打补丁。
9. 安全加固 4 件套
| 技术 | 说明 |
|---|---|
| DNSSEC | 给记录加数字签名,防篡改 |
| DoT/DoH | DNS over TLS/HTTPS,防中间人 |
| 本地 DNS 白名单 | 企业禁止访问未知域名 |
| 加密 SNI/ESNI | 隐藏访问的域名,防审查 |
浏览器开 DoH 后, Wireshark 再也看不到明文网址,
抓包党当场失业,只能回去看 ARP。
10. 排查口诀
能 QQ 不能网页?先怼 DNS。
nslookup 看返回,dig 追迭代。
TTL 太长等缓存,TTL 太短炸权威。
hosts 先查,再查缓存,最后看迭代。
EDNS 不带客户端 IP?CDN 把你扔北京。下集预告
第七弹《Ping & Traceroute:网络界的“雷达”与“高德”》
- Ping 怎么算丢包?
- Traceroute 用 ICMP 还是 UDP?
- 为什么第 3 跳 *,第 4 跳又出现?
- “海底光缆断了, traceroute 会显示什么?”
关注不迷路,下回继续发射探测脉冲!
0
快来点个赞吧
发表评论
评论列表