DNS资源记录(Resource Record,RR)是DNS系统的核心,DNS Zone文件,DNS网络协议和DNS系统架构皆围绕其进行。
介绍DNS资源记录,核心在于3个点:
- 本身核心作用
- 组织形式是否适配分层结构
- 与其他资源记录的关系
本文分“常见资源记录”和“非常见资源记录”两部分进行介绍。
一、常见资源记录
| 资源记录类型 | 核心作用 | 组织形式是否适配分层结构 | 与其他资源记录的关系 | 示例(ZONE文件格式) |
|---|---|---|---|---|
| A记录 | 将域名映射到IPv4地址 | 索引项为域名天然适配 | 同一域名不能同时存在A记录和CNAME记录,否则会导致解析冲突 | example.com. IN A 1.2.3.4 |
| AAAA记录 | 将域名映射到IPv6地址 | 索引项为域名天然适配 | 同一域名不能同时存在AAAA记录和CNAME记录,否则会导致解析冲突 | example.com. IN AAAA 2001:db8::1 |
| CNAME记录 | 为域名设置别名 | 索引项为域名天然适配 | 同一域名不能同时存在A/AAAA记录和CNAME记录,否则会导致解析冲突 | www.example.com. IN CNAME example.com. |
| PTR记录 | 将IP地址映射到域名 | 索引项为IP不天然适配,须设计分层结构,见下 | / | 4.3.2.1.in-addr.arpa. IN PTR host.example.com. |
| NS记录 | 指定域名的权威DNS服务器 | 索引项为域名天然适配 | / | example.com. IN NS ns1.example.com. |
| MX记录 | 指定域名的邮件服务器及对应优先级等 | 索引项为域名天然适配 | / | example.com. IN MX 10 mail.example.com. |
| TXT记录 | 存储域名相关的任意文本信息,用于“域名验证”,“邮件安全验证(SPF/DKIM/DMARC)”等 | 索引项为域名天然适配 | / | example.com. IN TXT "v=spf1 ip4:1.2.3.4 include:spf.qq.com include:spf.163.com ~all"example.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjA"example.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@你的域名.com; fo=1; adkim=s; aspf=s" |
| SOA记录 | 起始授权机构记录,存储域名的核心管理信息,比如“主DNS服务器”,“管理员邮箱”,“刷新时间”等 | 索引项为域名天然适配 | / | SOA示例见下 |
针对PTR记录设计分层结构:
- IPv4地址,将IPv4地址四段反转,追加
.in-addr.arpa,比如192.168.1.100 -> 反转 -> 100.1.168.192 -> 追加 -> 100.1.168.192.in-addr.arpa - IPv6地址,展开IPv6地址为32位十六进制,去掉
::补0,每一位单独反转,用.分隔,追加.ip6.arpa,比如2001:db8::1 -> 展开 -> 20010db8000000000000000000000001 -> 反转每一位 -> 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2 -> 追加 -> 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa
SOA示例:
1 | ; 管理员邮箱admin@example.com须写为admin.example.com |
二、非常见资源记录
非常见资源记录,主要用于特殊网络场景、协议扩展或域名管理。
以下是一些非常见资源记录。
| 资源记录类型 | 核心作用 | 组织形式是否适配分层结构 | 与其他资源记录的关系 | 示例(ZONE文件格式) |
|---|---|---|---|---|
| DNAME记录 | 域名别名的“泛解析”,将一个子域名及其所有下级域名映射到另一个域名 区别于CNAME:CNAME仅映射单个域名,DNAME支持“层级化域名批量映射” |
索引项为域名天然适配 | / | api.example.com. IN DNAME api.service.com. |
| HINFO记录 | 存储主机的硬件和操作系统信息 | 索引项为域名天然适配 | / | host1.example.com. IN HINFO "Intel x86_64" "Linux 6.5.0" |
| SSHFP记录 | 存储SSH服务器的公钥指纹,避免SSH登录时的“主机密钥未知”警告,提升安全性,但需客户端和服务器同时支持,普及率较低 | 索引项为域名天然适配 | / | server.example.com. IN SSHFP 1 2 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff |
| IPSECKEY记录 | 存储IPsec协议的密钥信息,用于IPsec隧道的密钥分发,需配合VPN设备配置,普通用户无需接触 | 索引项为域名天然适配 | / | host.example.com. IN IPSECKEY 10 0 2 . AQABAAEAA... |
| NSEC记录 | 权威证明某域名不存在对应的资源记录,用于DNSSEC安全扩展 | 索引项为域名天然适配 | / | example.com. IN NSEC www.example.com. A NS SOA MX TXT RRSIG NSEC |
| NSEC3记录 | NSEC的升级版,通过哈希算法隐藏域名存在性,提升隐私性 | 索引项为域名天然适配 | / | 1234567890ABCDEF.example.com. IN NSEC3 1 0 10 414243 9876543210FEDCBA A NS SOA MX TXT RRSIG NSEC3 |
| DNSKEY记录 | 存储DNS区域的ZSK/KSK公钥,为DNSSEC验签提供公钥基础,支撑双层签名体系 | 索引项为域名天然适配 | / | example.com. IN DNSKEY 256 3 8 AwEAA... |
| DS记录 | 存储KSK公钥的哈希摘要(含算法 + 摘要值),提交给上级域名服务器,构建DNSSEC信任链 | 索引项为域名天然适配 | / | example.com. IN DS 12345 8 2 4B1F9B5DCED890ABCDEF1234567890FEDCBA987 |
| RRSIG记录 | 对DNS记录(如A记录、CNAME记录、DNSKEY记录等)进行数字签名,证明记录未被篡改 | 索引项为域名天然适配 | / | example.com. IN RRSIG A 8 2 3600 20260301 20260215 12345 example.com. ...签名... |
| ZONEMD记录 | 对整个DNS区域的所有记录计算哈希值,验证区域数据的完整性,防止区域传输/同步时篡改 | 索引项为域名天然适配 | / | example.com. IN ZONEMD 1 1 2026021101 abcdef123456... |
| SRV记录 | 指定特定服务的服务器地址、端口和优先级,用于企业内网服务发现 | 索引项为域名天然适配 | / | _minecraft._tcp.example.com. IN SRV 0 5 25565 mc.example.com. |
| CAA记录 | 指定允许为域名颁发SSL证书的机构,提升域名证书安全性,防止恶意机构颁发证书 | 索引项为域名天然适配 | / | @ IN CAA 0 issuewild "letsencrypt.org" |