3. DNS资源记录类型详解
DNS 的本质是一套“分布式键值数据库”,而资源记录(Resource Record,RR)就是数据库中的条目。每条记录都遵循统一的格式:名称 TTL 类别 类型 数据。其中“名称”是被查询的域名,“TTL”是缓存存活秒数,“类别”几乎总是 IN(Internet),“类型”决定数据字段的含义。理解每种记录的数据格式与用途,是排查解析异常、规划域名体系的基础。
下面先给出一个整体视图,把常见记录按“正向解析、邮件、服务发现、反向解析、区域控制”五类归位,并标出它们之间的引用关系。
A 与 AAAA:最基础的正向映射
A 记录把域名映射到 IPv4 地址,数据字段就是一个点分十进制地址;AAAA 记录对应 IPv6,数据字段是冒号十六进制地址。它们是绝大多数解析的终点。例如在区域文件中:
www 3600 IN A 192.0.2.10
www 3600 IN A 192.0.2.11
ipv6 3600 IN AAAA 2001:db8::10
同一个名称可以配置多条 A 记录,形成简单的轮询负载均衡。需要注意 TTL 的取舍:TTL 越大,递归服务器缓存越久,权威端变更生效越慢;TTL 越小,查询压力越大。做迁移切换前,通常先把 TTL 降到 300 秒左右,切换完成后再调回。
CNAME:别名与它的边界
CNAME 表示“这个名称是另一个名称的别名”,数据字段是目标规范名。解析器遇到 CNAME 会继续查询目标名,直到拿到 A/AAAA。典型用法是把 mail.example.com 指向 mail.provider.net,或把 ftp 指向 www。
关键约束:CNAME 不能与其他类型记录共存于同一名称。因此根域名 example.com 通常不能直接设 CNAME,因为它必须同时拥有 SOA 和 NS。若确实需要根域名跳转,应使用 A 记录或厂商提供的 ALIAS/ANAME 类扩展。此外,MX、NS 的目标字段必须是主机名,不能指向一个 CNAME。
MX:邮件投递的优先级
MX 记录的数据字段由“优先级 + 邮件服务器主机名”组成,数值越小优先级越高。发件方会先尝试优先级最小的主机,失败后再尝试次优先。示例:
example.com. 3600 IN MX 10 mail1.example.com.
example.com. 3600 IN MX 20 mail2.example.com.
MX 的目标必须是可解析的主机名,且该主机名应有对应的 A/AAAA 记录。若目标写成 CNAME,部分邮件系统会判定为不合规而拒收。只收不发或使用第三方邮件网关时,MX 指向对方提供的主机名即可。
NS 与 SOA:区域的两块基石
NS 记录声明某个区域由哪些权威服务器负责,数据字段是服务器主机名。父区(如 com)通过 NS 把子区 example.com 的查询委派给子区自己的服务器,这是 DNS 分层授权的实现方式。一个区域至少要有两条 NS,且应分布在不同网络或不同服务商,避免单点失效。
SOA 记录每个区域有且仅有一条,数据字段包含七个部分:主权威服务器名、管理员邮箱(@ 写成点)、序列号、刷新间隔、重试间隔、过期时间、否定缓存 TTL。示例:
example.com. 3600 IN SOA ns1.example.com. admin.example.com. (
2024051501 ; 序列号
7200 ; 刷新
3600 ; 重试
1209600 ; 过期
300 ) ; 否定缓存 TTL
序列号是主从同步的核心:从服务器发现主服务器序列号变大,才触发区域传送。修改区域后忘记递增序列号,是从服务器“看起来没更新”的最常见原因。序列号常用 YYYYMMDDnn 格式,便于人工识别。
TXT:从验证到策略
TXT 记录承载任意文本,数据字段是一段或多段字符串。它最常见的用途是域名所有权验证(如 SPF、DKIM、站点验证)和邮件策略发布。例如 SPF 声明哪些主机可以代表本域发信:
example.com. 3600 IN TXT "v=spf1 mx ip4:192.0.2.0/24 -all"
一条 TXT 的字符串总长超过 255 字节时,需要拆成多个引号片段,解析时会自动拼接。DKIM 公钥通常放在 selector._domainkey.example.com 这类名称下,长度较长,配置时要特别注意不要漏掉分号或引号。
SRV:把服务位置写进 DNS
SRV 记录用于声明某服务运行在哪台主机、哪个端口,数据字段为“优先级 权重 端口 目标主机”。名称格式固定为 _服务._协议.域名。例如:
_sip._tcp.example.com. 3600 IN SRV 10 60 5060 sipserver.example.com.
优先级决定尝试顺序,权重在同一优先级内按比例分配流量。SRV 广泛用于 SIP、LDAP、XMPP 以及 Kubernetes 等场景。目标主机同样需要 A/AAAA 记录支撑。
PTR:反向解析
PTR 记录把 IP 地址映射回域名,存放在 in-addr.arpa(IPv4)或 ip6.arpa(IPv6)区域中。IPv4 的地址段要倒序书写,例如 192.0.2.10 对应 10.2.0.192.in-addr.arpa。PTR 常用于邮件服务器反向校验、日志溯源和网络审计。需要注意的是,PTR 区域通常由 IP 地址的持有者(运营商或云厂商)管理,用户往往无法自行添加,只能提交申请。
dig www.example.com A、dig example.com MX、dig -x 192.0.2.10 分别验证正向、邮件与反向记录,并观察 ANSWER SECTION 中的 TTL 与目标值是否符合预期。named-checkzone example.com db.example.com),否则从服务器不会同步,且错误配置可能导致整个区域加载失败。把上述记录放在一起看,就能理解一次完整访问背后的链条:浏览器查 A/AAAA 拿到 IP;邮件系统查 MX 找到收信主机;客户端查 SRV 定位服务端口;而 NS、SOA 决定了这一切由谁权威回答、如何同步。掌握每种记录的字段含义与使用边界,才能在真实环境中写出既正确又可维护的区域数据。