域名解析记录(DNS Resource Record)决定了用户输入一个域名后,递归解析器最终能从权威服务器获取到什么结果。不同记录类型承载不同职责:A记录负责IPv4地址映射,CNAME用于别名跳转,MX则专门指向邮件服务器。如果记录类型配置混乱,轻则访问延迟,重则邮件丢失或SSL证书无法签发。

一、DNS资源记录的基本结构与查询逻辑
资源记录在RFC 1035中定义,通常包含五个字段:名称(NAME)、类型(TYPE)、类别(CLASS)、生存时间(TTL)和记录数据(RDATA)。其中TYPE就是本文讨论的核心,它告诉解析器这条记录应该按照什么格式解读。例如A记录的RDATA是32位IPv4地址,MX记录的RDATA由优先级数字和邮件域名共同组成。
当用户在浏览器输入域名时,本地递归解析器先向根服务器询问顶级域,再逐级向下获取权威服务器地址,最后向权威服务器请求具体记录。不同记录类型在这个过程中的行为并不相同:A记录会直接返回IP,CNAME会触发解析器继续查询目标域名,而MX记录只服务于邮件投递,不影响网页访问。理解这一点,是避免配置错误的基础。
下面通过一段dig命令可以看到查询结果的基本结构。TTL为3600表示缓存一小时,优先级10表示该邮件服务器优先被投递。
dig ipipp.com MX +short 10 mail.ipipp.com.
实际查询中,权威服务器可能同时返回多条记录,解析器会根据类型和客户端网络环境选择合适结果。比如同时存在多个A记录时,解析器通常采用轮询或按照地址族偏好返回。
二、常用记录类型逐条拆解
1. A记录与AAAA记录
A记录将域名直接映射到IPv4地址,是最基础也最常用的记录。AAAA记录则对应IPv6地址,功能和A记录一致,但使用128位地址空间。很多现代网站会同时配置A和AAAA,以兼容IPv6用户,避免纯IPv6环境无法访问。
A记录的配置示例:
ipipp.com. 300 IN A 192.0.2.10 www.ipipp.com. 300 IN A 192.0.2.10
如果只有A记录而没有AAAA,在纯IPv6网络下用户可能无法直连,需要依赖转换机制。因此建议在支持IPv6的托管环境中添加AAAA记录。
2. CNAME记录
CNAME记录称为别名记录,它把当前域名指向另一个域名,由目标域名再提供最终IP。常见场景是把www子域指向CDN提供的加速域名,或者把多个子域统一指向同一主机名。CNAME的优势是目标IP变化时无需修改所有引用记录,只修改目标域名的A记录即可。
需要特别注意,CNAME不能与MX记录共用同一个名称,RFC规定如果主机名存在CNAME,则不能再有其他数据记录。这意味着你不能把根域同时设置为CNAME和MX,否则很多邮件服务器会拒绝投递。部分DNS服务商提供ANAME或ALIAS记录来绕过这一限制,但并非标准协议。
CNAME配置示例:
www.ipipp.com. 300 IN CNAME cdn.ipipp.com.
3. MX记录
MX记录只负责邮件投递,它包含优先级和邮件服务器域名。优先级数字越小越优先,邮件发送方会先尝试数字最小的服务器,失败后再尝试下一个。典型配置通常包含一个主邮件服务器和一个备份服务器,例如主用优先级10,备份20。
MX记录必须指向一个已经存在A或AAAA记录的域名,不能直接写IP地址。很多企业还会配合TXT记录设置SPF、DKIM、DMARC策略,以降低邮件被判定为垃圾邮件的概率。单独配置MX记录而缺少SPF,可能导致部分邮件服务商拒绝接收。
4. TXT记录
TXT记录最初用于存放任意文本,现在广泛用于域名所有权验证、SPF、DKIM、DMARC以及第三方搜索引擎验证。它支持多个文本字符串,单个字符串长度通常不超过255字节。例如Google站点验证会在域名下添加一条TXT记录,内容为类似google-site-verification=xxx的值。
TXT记录不会影响网站访问,只能被外部服务查询。配置时需要注意值不要包含多余空格或换行,否则验证可能失败。
5. NS记录与SRV记录
NS记录指定哪个服务器是该域的权威DNS服务器,通常在域名注册商处设置。修改NS记录会改变整个域的解析托管位置,必须谨慎操作。SRV记录用于特定服务的发现,格式比MX更复杂,包含优先级、权重、端口和目标主机,常用于SIP、XMPP、LDAP等协议。
三、典型配置组合与冲突排查
很多域名的常见需求是:根域和www都能访问网站,同时邮件使用第三方服务。此时推荐配置如下:根域添加A记录指向服务器IP,www子域添加CNAME指向CDN加速域名,MX记录指向邮件服务商提供的域名,TXT记录添加SPF和域名验证值。
但这里有冲突点:如果www子域已经配置了CNAME,就不能再为www子域添加MX记录;如果根域配置了CNAME,同样不能添加MX。解决方式是根域保持A记录,邮件使用mail子域作为MX值,而mail子域再配置A记录。
另一个常见错误是CDN接入时只添加CNAME,忽略源站A记录的TTL。当源站切换IP时,客户端可能因为本地DNS缓存继续访问旧地址。建议在计划变更前24小时将TTL降低到300秒,变更完成后再恢复为3600或更高。
HTTPS证书签发通常需要验证域名控制权。Let’s Encrypt等证书机构会要求添加TXT记录或让域名的HTTP请求返回特定内容。如果TXT记录未生效,证书签发会反复失败。验证前需要用dig命令确认新记录已经传播到公共解析器。
四、解析生效机制与验证方法
DNS修改后不会立即全局生效,原因是各级解析器和用户本地缓存都会把查询结果保存一段时间。这个时间由TTL控制,默认从几分钟到一天不等。修改记录后,影响生效速度的因素包括旧TTL剩余时间、本地路由器缓存、运营商递归缓存等。
验证A记录是否生效,可以使用以下命令。其中+short表示只输出简洁结果,@8.8.8.8指定使用Google公共DNS,避免本地缓存干扰。
dig ipipp.com A +short @8.8.8.8 nslookup -type=MX ipipp.com 1.1.1.1
Windows用户可以在命令提示符中使用nslookup,通过set type=mx查看邮件记录。如果返回内容与预期不一致,可以使用ipconfig /flushdns清除本地DNS缓存,但注意这不会影响运营商缓存。
总之,域名解析记录类型的选择必须与业务目标严格匹配。A记录解决IPv4地址问题,CNAME提供灵活的别名转发,MX专门负责邮件路由,TXT则支撑验证与安全策略。配合合理的TTL和定期验证,才能保证域名解析稳定可靠。