DNS 数据库中存储了多种类型的资源记录(Resource Records,RR),每种记录类型都有特定的用途。以下是面试中最常被问到的 DNS 记录类型。
核心记录类型详解
1. A 记录(Address Record)
作用:将域名映射到 IPv4 地址
格式:
dnswww.example.com. 3600 IN A 192.0.2.1
使用场景:
- 网站服务器指向
- 最常用的 DNS 记录类型
- 一个域名可以有多个 A 记录(负载均衡)
2. AAAA 记录(IPv6 Address Record)
作用:将域名映射到 IPv6 地址
格式:
dnswww.example.com. 3600 IN AAAA 2001:db8::1
使用场景:
- IPv6 网络环境下的域名解析
- 与 A 记录并存,支持双栈网络
3. CNAME 记录(Canonical Name Record)
作用:创建域名的别名,指向另一个域名
格式:
dnsblog.example.com. 3600 IN CNAME example.github.io.
重要限制:
- CNAME 记录不能与 MX、NS、SOA 等其他记录共存于同一域名
- 根域名(@)通常不能使用 CNAME
- 会引入额外的 DNS 查询延迟
使用场景:
- CDN 配置
- 第三方服务接入(如 GitHub Pages、Heroku)
- 子域名统一管理
4. MX 记录(Mail Exchange Record)
作用:指定邮件服务器的地址和优先级
格式:
dnsexample.com. 3600 IN MX 10 mail1.example.com. example.com. 3600 IN MX 20 mail2.example.com.
优先级说明:
- 数字越小,优先级越高
- 邮件会优先发送到优先级低(数字小)的服务器
- 支持邮件服务器冗余和负载均衡
使用场景:
- 企业邮箱配置
- 邮件服务迁移
5. NS 记录(Name Server Record)
作用:指定该域名的权威 DNS 服务器
格式:
dnsexample.com. 86400 IN NS ns1.example.com. example.com. 86400 IN NS ns2.example.com.
使用场景:
- 域名托管配置
- DNS 服务商切换
- 子域名委派
6. TXT 记录(Text Record)
作用:存储任意文本信息
格式:
dnsexample.com. 3600 IN TXT "v=spf1 include:_spf.google.com ~all"
常见用途:
- SPF 记录:邮件发送策略框架,防止邮件伪造
- DKIM 记录:邮件数字签名验证
- DMARC 记录:邮件认证、报告和一致性
- 域名验证:Google、百度等搜索引擎验证
7. SOA 记录(Start of Authority Record)
作用:定义区域的管理信息,每个区域文件必须有且只有一个 SOA 记录
格式:
dnsexample.com. 86400 IN SOA ns1.example.com. admin.example.com. ( 2024010101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL
字段说明:
| 字段 | 说明 |
|---|---|
| Serial | 区域文件版本号,变更时需递增 |
| Refresh | 从服务器刷新间隔 |
| Retry | 刷新失败后的重试间隔 |
| Expire | 从服务器数据过期时间 |
| Minimum TTL | 负缓存 TTL |
8. PTR 记录(Pointer Record)
作用:实现反向 DNS 解析,将 IP 地址映射到域名
格式:
dns1.2.0.192.in-addr.arpa. 3600 IN PTR www.example.com.
使用场景:
- 邮件服务器反垃圾验证
- 网络故障排查
- 安全审计
9. SRV 记录(Service Record)
作用:定义特定服务的服务器位置
格式:
dns_sip._tcp.example.com. 3600 IN SRV 10 5 5060 sipserver.example.com.
字段说明:
- 优先级、权重、端口、目标服务器
使用场景:
- SIP 协议(VoIP)
- XMPP 即时通讯
- LDAP 服务发现
10. CAA 记录(Certification Authority Authorization)
作用:指定哪些证书颁发机构(CA)可以为该域名签发证书
格式:
dnsexample.com. 3600 IN CAA 0 issue "letsencrypt.org" example.com. 3600 IN CAA 0 issuewild ";"
使用场景:
- 增强 SSL/TLS 证书安全性
- 防止未经授权的证书签发
记录类型对比表
| 记录类型 | 主要功能 | 常用程度 | 面试频率 |
|---|---|---|---|
| A | IPv4 地址映射 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| AAAA | IPv6 地址映射 | ⭐⭐⭐ | ⭐⭐⭐ |
| CNAME | 域名别名 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| MX | 邮件服务器 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| NS | 域名服务器 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| TXT | 文本信息 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| SOA | 区域管理 | ⭐⭐⭐ | ⭐⭐⭐ |
| PTR | 反向解析 | ⭐⭐⭐ | ⭐⭐⭐ |
| SRV | 服务定位 | ⭐⭐ | ⭐⭐ |
| CAA | CA 授权 | ⭐⭐ | ⭐⭐ |
面试常见问题
Q: A 记录和 CNAME 记录可以同时存在吗?
A: 不可以。如果域名设置了 CNAME 记录,就不能再设置 A 记录或其他记录类型(除 DNSSEC 相关记录外)。
Q: 为什么根域名不能使用 CNAME?
A: 因为根域名必须有 NS 和 SOA 记录,而 CNAME 与其他记录类型冲突。
Q: MX 记录的优先级数字越小优先级越高还是越低?
A: 数字越小优先级越高,邮件会优先发送到优先级高的服务器。