Loading... # DNS 域名系统详解教程 # 一、概述 ## 1. 简介 ### A. 是什么 DNS(Domain Name System,域名系统)是互联网的核心基础设施,负责将人类可读的域名转换为机器可识别的 IP 地址。当用户在浏览器中输入 example.com 时,DNS 系统会解析出对应的 IP 地址 93.184.216.34,使浏览器能够建立连接。 ### B. 为什么学 - 理解互联网基础设施的工作原理 - 掌握域名解析和故障排查技能 - 优化网站性能和可用性 - 保障电子邮件系统的正常运行 ### C. 学完能做什么 - 配置和管理 DNS 记录 - 排查 DNS 解析问题 - 优化 DNS 传播时间 - 理解负载均衡和高可用架构 ## 2. 前置知识 ### A. 必备技能 - 基本 IP 地址概念(IPv4、IPv6) - 命令行操作基础 ### B. 推荐知识 - 网络基础知识 - Web 服务器概念 # 二、核心概念 ## 1. DNS 层级结构 DNS 采用分层架构,类似 referrals 链条。每一层只知道自己下一层的信息,没有单一实体掌握全部信息。 ```mermaid graph TD A[Root 根服务器 .] --> B[TLD 顶级域名服务器 .com] A --> C[TLD 顶级域名服务器 .org] A --> D[TLD 顶级域名服务器 .io] B --> E[权威域名服务器 example.com] B --> F[权威域名服务器 google.com] E --> G[子域名 api.example.com] E --> H[子域名 mail.example.com] ```  ### A. Root(根服务器) 全球共有 13 个根服务器集群,由 Verisign、ICANN、NASA 等组织运营。根服务器不直接知道任何域名地址,但知道所有 TLD 服务器的位置,是 DNS 查询的起点。 ### B. TLD(Top Level Domain,顶级域名) 域名的最后一部分,如 .com、.org、.io、.dev。TLD 服务器知道其下注册的所有域名。 常见 TLD 类型: - .com:商业用途,任何人均可注册 - .org:组织机构 - .net:网络服务 - .io:英属印度洋领地(科技行业热门) - .dev:开发者(强制 HTTPS) - .gov:美国政府专用 - .edu:教育机构 ### C. Domain(域名) 从注册商购买的实际名称,如 example、google、github。与 TLD 组合形成完整域名 example.com。常用注册商包括 Namecheap、GoDaddy、Cloudflare。 ### D. Subdomain(子域名) 域名前的任何部分,如 api.example.com、mail.example.com、staging.example.com。子域名可免费无限创建,通过 DNS 记录配置。 # 三、DNS 记录类型 ## 1. A 记录 将域名映射到 IPv4 地址,是最常用的记录类型。 ``` example.com A 93.184.216.34 ``` 当用户请求 example.com 时,DNS 返回 93.184.216.34。 ## 2. AAAA 记录 将域名映射到 IPv6 地址。名称源于四个 A(IPv6 地址长度是 IPv4 的四倍)。 ``` example.com AAAA 2606:2800:220:1:248:1893:25c8:1946 ``` ## 3. CNAME(Canonical Name,规范名称) 将域名指向另一个域名,而非 IP 地址。常用于第三方服务集成。 ``` www.example.com CNAME example.com blog.example.com CNAME example.ghost.io ``` 使用场景:将子域名指向托管服务(Ghost、GitBook 等),无需管理其 IP 地址。 ## 4. MX(Mail Exchange,邮件交换) 指定域名的邮件服务器地址。优先级数字越小,优先级越高。 ``` example.com MX 10 mail1.example.com example.com MX 20 mail2.example.com ``` 当发送邮件至 hello@example.com 时,邮件服务器查询 MX 记录。若 mail1(优先级 10)不可用,则尝试 mail2(优先级 20)。 ## 5. TXT 记录 存储文本信息,用于多种验证和安全场景。 ``` example.com TXT "v=spf1 include:_spf.google.com ~all" example.com TXT "google-site-verification=abc123xyz" ``` 常见用途: - 域名所有权验证:Google、Stripe、AWS 要求添加 TXT 记录 - SPF:指定哪些服务器可代表该域名发送邮件(防止伪造) - DKIM:使用加密签名进行邮件认证 - DMARC:定义 SPF/DKIM 检查失败的处理策略 # 四、TTL(Time To Live,生存时间) ## 1. TTL 作用 TTL 告诉 DNS 解析器缓存查询结果的时长。 ``` example.com A 93.184.216.34 TTL=3600 ``` 表示:将此结果缓存 3600 秒(1 小时),期间不再重复查询。 ## 2. 常见 TTL 值 - 300(5 分钟):频繁变更,需要快速故障转移 - 3600(1 小时):普通网站 - 86400(1 天):极少变更 ## 3. 权衡考虑 低 TTL:更新更快,但 DNS 查询更多(首次加载稍慢) 高 TTL:查询更少(性能更好),但记录变更后传播更慢 **专业建议**:计划服务器迁移时,提前数天将 TTL 降至 300。迁移后,旧的缓存记录 5 分钟内过期,而非数小时。 # 五、DNS 解析流程 ## 1. 完整解析过程 当用户在浏览器输入 api.example.com 时: ```mermaid sequenceDiagram participant B as 浏览器 participant BC as 浏览器缓存 participant OS as OS缓存 participant R as 路由器缓存 participant ISP as ISP解析器 participant Root as 根服务器 participant TLD as .com TLD服务器 participant NS as example.com权威服务器 B->>BC: 查询 api.example.com BC-->>B: 未找到 B->>OS: 查询 api.example.com OS-->>B: 未找到 B->>R: 查询 api.example.com R-->>B: 未找到 B->>ISP: 查询 api.example.com ISP->>Root: api.example.com 在哪里? Root-->>ISP: .com TLD 在 192.5.6.30 ISP->>TLD: api.example.com 在哪里? TLD-->>ISP: example.com 名称服务器在 ns1.example.com ISP->>NS: api.example.com 在哪里? NS-->>ISP: IP 是 93.184.216.34 ISP-->>B: 返回 93.184.216.34 B->>B: 连接到 93.184.216.34 ```  ### A. 浏览器缓存 检查是否缓存了域名解析结果 ### B. OS DNS 缓存 操作系统级别的 DNS 缓存 ### C. 路由器缓存 家用或企业路由器的 DNS 缓存 ### D. ISP DNS 解析器 互联网服务提供商的递归解析器 ### E. 根服务器 返回 TLD 服务器地址 ### F. TLD 服务器 返回权威域名服务器地址 ### G. 权威域名服务器 返回最终 IP 地址 ### H. 响应缓存 解析器根据 TTL 缓存结果,后续请求直接返回缓存 ## 2. Resolver 与 Nameserver 区别 ### Resolver(解析器) 负责递归查询的服务器,代表用户完成 Root → TLD → 权威服务器的完整查询流程。 常用公共解析器: - 8.8.8.8:Google Public DNS - 1.1.1.1:Cloudflare(最快、注重隐私) - 208.67.222.222:OpenDNS(Cisco) - 9.9.9.9:Quad9(注重安全、拦截恶意软件) ### Nameserver(名称服务器) 存储域名实际 DNS 记录的服务器,是域名的权威信息源。 注册商提供的默认名称服务器: ``` ns1.namecheap.com ns2.namecheap.com ``` 可更改为第三方服务: ``` # Cloudflare ns1.cloudflare.com ns2.cloudflare.com # AWS Route 53(示例) ns-1234.awsdns-56.org ns-789.awsdns-12.co.uk ``` ## 3. Authoritative 与 Recursive ### Authoritative Nameserver(权威名称服务器) 拥有域名的最终答案。被询问 example.com 的位置时,直接返回实际 IP 地址。 ### Recursive Resolver(递归解析器) 不持有记录,通过询问权威服务器查找答案。ISP DNS 服务器和 8.8.8.8 属于此类。 # 六、DNS 故障排查 ## 1. 查看 DNS 缓存 ### 浏览器缓存 ``` # Chrome chrome://net-internals/#dns # Firefox about:networking#dns # Edge edge://net-internals/#dns ``` 显示所有缓存域名及其 IP 和剩余 TTL。 ### 操作系统缓存 ``` # Windows(命令提示符) ipconfig /displaydns # macOS sudo dscacheutil -cachedump # Linux(使用 systemd-resolved) resolvectl statistics ``` ## 2. 查询域名 ``` # 使用 nslookup(Windows/Mac/Linux) nslookup example.com # 使用 dig(Mac/Linux,更详细) dig example.com # 查询特定记录类型 dig example.com MX dig example.com TXT # 使用特定解析器查询 dig @8.8.8.8 example.com dig @1.1.1.1 example.com ``` ## 3. 清除 DNS 缓存 ### 浏览器 访问 chrome://net-internals/#dns,点击清除主机缓存。 ### 操作系统 ``` # Windows ipconfig /flushdns # macOS sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder # Linux(systemd) sudo systemd-resolve --flush-caches ``` 清除缓存会强制系统重新获取最新的 DNS 记录。 # 七、DNS 在系统设计中的应用 ## 1. 负载均衡 DNS 可为同一域名返回不同 IP,每次请求可能获得不同服务器。称为 DNS 轮询负载均衡。 ``` example.com A 93.184.216.34 example.com A 93.184.216.35 example.com A 93.184.216.36 ``` ## 2. 故障转移 健康检查检测到服务器故障后,DNS 停止返回其 IP,流量自动切换到健康服务器。 ## 3. 地理路由 返回距离用户最近的服务器 IP。欧洲用户获得欧洲服务器 IP,亚洲用户获得亚洲服务器 IP。称为 GeoDNS 或基于延迟的路由。 ## 4. 缓存权衡 DNS 缓存减少查询时间和服务器负载,但使即时更新变得不可能。若 TTL 为 24 小时,部分用户可能在 IP 变更后仍访问旧 IP 长达 24 小时。 # 八、快速参考 | 术语 | 功能说明 | |------|---------| | Root | DNS 树顶端,知道 TLD 位置 | | TLD | .com、.org、.io,知道下属域名 | | Domain | 购买的域名(example、google) | | Subdomain | 免费创建的子域名(api、www、mail) | | A Record | 域名 → IPv4 地址 | | AAAA Record | 域名 → IPv6 地址 | | CNAME | 域名 → 另一域名(别名) | | MX | 邮件发送目标 | | TXT | 验证、SPF、DKIM、DMARC | | TTL | 缓存时长(秒) | | Resolver | 查找 IP 的服务器 | *** ## 参考资料 1. [DNS Explained - How Domain Names Get Resolved | Manish Bhusal](https://www.bhusalmanish.com.np/blog/posts/dns-explained.html) 最后修改:2026 年 02 月 08 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏