Linux DNS 深度解析与最佳实践
Linux DNS 深度解析与最佳实践
在 Linux 系统中,DNS 并不仅仅是“把域名翻译成 IP 地址”这么简单。它涉及分层的解析过程、缓存机制以及现代系统中的解析组件。理解其原理与实践,不仅能帮助我们正确配置,还能在排错和优化中少走弯路。
一、DNS 核心原理:不仅仅是“电话本”
1. 核心概念
- 域名空间 (Domain Name Space):一个树状层级结构,顶端是根域名(.),下面是顶级域(TLD,如 .com),再往下是二级域(如 google)。
- 资源记录 (Resource Records, RR):DNS 中的数据单位,例如:
- A:IPv4 地址
- AAAA:IPv6 地址
- CNAME:别名
- MX:邮件交换记录
- NS:域名服务器
- TXT:文本信息(SPF、验证等)
- Stub Resolver:客户端上的轻量解析器,通常只负责把查询请求转发给递归解析器。
- 递归解析器 (Recursive Resolver):由 ISP 或公共 DNS(如 8.8.8.8, 1.1.1.1)提供,负责替用户执行完整的查询。
- 权威服务器 (Authoritative DNS):直接管理某域名的记录,只回答自己负责区域的查询。
2. DNS 解析完整流程
以 www.example.com 为例:
- 浏览器调用系统接口 (getaddrinfo)。
- Stub Resolver 先查本地缓存。
- 缓存未命中 → 查 /etc/hosts。
- 若无结果 → 向 /etc/r
