DNS解析原理与配置

DNS(Domain Name System)是互联网的"电话簿",负责将人类可读的域名转换为机器可识别的 IP 地址。理解 DNS 解析流程对排查网络问题、配置 Web 服务至关重要。本文梳理完整的 DNS 解析链路及常用排查工具。

一、DNS解析完整流程

当浏览器访问 www.p2pblaze.com 时,解析流程如下:

二、递归查询与迭代查询

DNS 查询分为两种模式:

三、本地DNS配置

查看当前 DNS 配置:

# 查看解析配置
cat /etc/resolv.conf

# systemd-resolved 状态
resolvectl status

静态配置 DNS(Ubuntu 18.04+)通过 Netplan:

# /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    eth0:
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]
        search: [p2pblaze.com]

四、记录类型

常见的 DNS 记录类型:

五、dig命令详解

dig 是 DNS 排查最强大的工具:

# 基本查询
dig www.p2pblaze.com

# 指定记录类型
dig MX p2pblaze.com
dig TXT p2pblaze.com

# 指定 DNS 服务器查询
dig @8.8.8.8 www.p2pblaze.com

# 仅显示简要答案
dig +short www.p2pblaze.com

# 追踪完整解析链路
dig +trace www.p2pblaze.com

+trace 输出会从根服务器开始逐级展示解析过程,是理解 DNS 层级结构的最佳工具。

六、排查实战

场景:访问 www.p2pblaze.com 解析异常。排查步骤:

# 1. 检查本地解析是否生效
dig www.p2pblaze.com +short

# 2. 对比不同 DNS 服务器结果
dig @8.8.8.8 www.p2pblaze.com +short
dig @1.1.1.1 www.p2pblaze.com +short

# 3. 检查 NS 记录是否指向正确权威服务器
dig NS p2pblaze.com +short

# 4. 追踪解析链路定位异常层级
dig +trace www.p2pblaze.com

# 5. 检查 hosts 文件是否有错误静态映射
cat /etc/hosts

# 6. 清除本地 DNS 缓存
sudo resolvectl flush-caches

小结

DNS 解析是一个多级缓存的分布式系统,排查问题时遵循"从近到远"原则:先查本地缓存与配置,再查递归服务器,最后查权威服务器。dignslookup 是日常排错的利器,掌握 +trace 选项能快速定位解析链路故障。