DNS解析记录详解:A、CNAME、MX、TXT、CAA,站长必备的一张表


导读:本站的建站教程里,“加一条A记录指向服务器IP”这句话出现过很多次,但DNS解析记录远不止A这一种。CNAME配在根域名上直接报错、MX少个点导致邮件全丢、TXT里的SPF写错格式进垃圾箱、TTL设成一天结果换服务器等了半天没生效——这些高频翻车,全都栽在“记录类型没搞懂”上。这篇把站长会用到的DNS记录类型逐个讲透:每种的用途、格式、限制和典型错误,最后给一个新站的标准配置清单,照抄即用。


一、先补地基:一次域名解析的完整旅程


讲记录类型之前,把解析流程走一遍,后面所有内容都会好懂。


你在浏览器输入 www.example.com,解析过程大致是:本机先查自己的缓存和hosts文件,没有;去问运营商配置的递归DNS服务器(比如8.8.8.8或114.114.114.114);递归服务器也没有的话,它替你去问根服务器“com 谁管”,再问 .com 的权威服务器“example.com 谁管”,最后问到 example.com 的权威DNS服务器,拿到 www 的记录值;这个答案逐层返回给你,同时在递归服务器上缓存一份,缓存多久由记录的TTL决定。


这趟链条里你要记住三个角色:注册商(你在哪买的域名)、权威DNS(域名解析记录实际存放的地方,可以在注册商也可以迁到Cloudflare等第三方)、递归DNS(访客的电脑实际去问的缓存服务器)。很多人混淆注册商和DNS服务:域名在A注册商买的,解析记录完全可以托管在B服务商,改一下NS记录就完成搬家。


TTL是整条链路的“缓存保质期”。本站VPS搬家教程里让你切换前把TTL降到300(5分钟),原理就在这:递归服务器缓存的旧记录最多再活5分钟,新IP全球生效就快。日常维护建议域名TTL设3600,重大切换前一天改成300,切完再改回来。


二、A与AAAA:最基础的两块砖


A记录:域名指向一个IPv4地址。 www.example.com A 1.2.3.4 ,含义直白。站点要上线,核心就是这一条。


AAAA记录:域名指向一个IPv6地址。本站IPv6教程讲过给网站加AAAA解析,这里补充规则:加AAAA后,支持v6的访客会优先走v6,你的服务器v6配置没弄好就直接翻车。所以原则是:v4的A记录先通,v6测稳了再加AAAA,顺序别反。


一个域名可以配多条A记录指向不同IP,这就是最原始的DNS负载均衡:访客解析时随机拿到其中一个。注意它没有健康检查,一台机器挂了DNS照样把人往火坑里送,高可用需求请配合本站讲过的监控告警方案手动或半自动切换。


三、CNAME:别名跳转,好用但规矩多


CNAME记录:把一个域名指向另一个域名,而不是IP。 www.example.com CNAME target.example.net ,解析时先拿到target的地址再返回。用途是“跟着别人走”:你的站点托管在第三方平台(平台给你的是一个域名而非固定IP),或者你把某个子域交给CDN托管,都靠CNAME。


三条铁律,条条都是新手坑。


铁律一:CNAME不能与其他记录共存于同一主机名。一个主机名要么是CNAME,要么是A等其他记录,不能既是CNAME又配MX——因为CNAME的含义是“我就是那个域名的别名,一切查询去找它”,别的记录根本轮不到被查。


铁律二:根域名(Zone Apex)不能用CNAME。你想把 example.com 直接CNAME到某CDN?DNS标准不允许,因为根域名上还必须存在SOA和NS记录,违反铁律一。这是最常见的一类报错,解法是各大云厂商提供的ALIAS或ANAME类私有方案,或让CDN给你分配专属IP配A记录。


铁律三:CNAME可以链式跳转但别套娃。a CNAME b,b CNAME c,解析会一路追下去,每层增加解析耗时和故障面。两层封顶,层数多了排查困难。


实操建议:自己服务器上的站点,老老实实用A记录直连IP,简单直接可控;只有指向第三方服务时才用CNAME。


四、MX:邮件投递的地址簿


MX记录:告诉全世界“发往 example.com 的邮件请投递到哪台服务器”。格式有个反直觉的细节:目标必须是主机名(不能是IP),而且专业写法里主机名末尾要加点,例如:


example.com MX 10 mail.example.com.

mail.example.com A 1.2.3.4


那个末尾的点是“绝对域名”标记;不写在注册商面板里通常也能被自动补全,但自己写配置文件(如BIND)时漏了点,mail.example.com 会被解析成 mail.example.com.example.com,邮件直接全灭。经典灾难,出过事故的人都懂。


优先级数字:MX可配多条,数字越小优先级越高。对方邮件服务器先投优先级10的,失败退而求其次投20的。自建单机就配一条,数字随意(习惯用10)。想配备用,再加一条指向备用机器。


前置警告:如果你没有认真运行邮件服务器的打算,就不要配MX记录。配了MX但25端口不通或服务没起,发往你的邮件会在对方队列里反复重试数天后退信。本站之前那篇“为什么不推荐用VPS发邮件”的避坑实录,把这事讲得很透,配MX之前先去复习。


五、TXT:万能的口袋


TXT记录:给域名挂一段任意文本。设计初衷是放人类可读的说明,如今被各种验证体系征用成了万能字段。站长会遇到的四种用途。


域名所有权验证:各类云服务要求你证明域名是你的,方式就是让你加一条特定内容的TXT,如 _verify.example.com TXT abc123xyz。


SPF:声明哪些服务器有权以你的域名发邮件,防止被冒名。格式:


example.com TXT v=spf1 ip4:1.2.3.4 include:_spf.google.com ~all


v=spf1是版本头,ip4列出你的发信服务器,include引入第三方(用Google Workspace发信就要包含它),~all表示“其他来源标记为可疑”。只有一个硬限制:SPF的DNS查询次数上限是10,include嵌套太深会超标导致整条SPF失效。


DKIM:邮件签名公钥,格式形如 selector._domainkey TXT v=DKIM1; k=rsa; p=公钥。由你的邮件服务生成后贴进DNS。


DMARC:告诉收件方对未通过SPF或DKIM的邮件怎么处理,通常配 _dmarc TXT v=DMARC1; p=quarantine; rua=mailto:报告邮箱。先设 p=none 只收报告观察,再逐步收紧,是标准节奏。


SPF、DKIM、DMARC三件套配齐,你的域名邮件信誉才算入门。自建邮件艰苦卓绝,但即便你只用第三方(比如企业邮箱、Resend发信),这三条TXT同样要在你的DNS里配,因为验证的是域名而非服务器。


六、NS与SOA:权力的移交


NS记录:声明这个域名的权威DNS服务器是谁。你域名默认的NS指向注册商的DNS;迁到Cloudflare托管时,注册商面板里改的就是NS记录,改成Cloudflare分配的两个地址,全球递归服务器最多花你旧TTL的时间逐层更新缓存。NS搬家后,原DNS上的所有记录要在新家重建,别以为记录会跟着走。


SOA记录:域的管理信息(主服务器、管理员邮箱、序列号、刷新参数),一般由DNS服务商自动维护,个人极少手工碰。知道它存在即可。


顺带一条安全提醒:NS记录是域名体系里权力最大的钥匙,DNS账号务必开两步验证。历史上多起“域名被劫持挂赌博广告”事件,突破口都是注册商或DNS账号的弱密码。


七、CAA:谁能给你的域名签证书


CAA记录:声明哪些证书颁发机构(CA)有权为你的域名签发SSL证书。 example.com CAA 0 issue letsencrypt.org 。配置后,合规的CA在给你签证书前会先查CAA,不在名单里的机构直接拒签。


价值在于防误签:防止冒充者向不知名CA申请你域名的证书。Let's Encrypt这类大CA都强制遵守CAA,所以这条记录实际有效。


个人站起步可以不配(默认任何CA可签),追求严谨就配两条:一条issue给letsencrypt.org,一条issuewild给letsencrypt.org允许泛域名。本站SSL证书选型教程讲过怎么挑证书,无论你最终用哪家的,把CAA收紧到那一家,攻击面又小一格。


八、实战:新站标准DNS配置清单


拿一个 example.com 的新站过一遍,全流程照抄。


前提:网站跑在自己VPS(IP 1.2.3.4),邮件用第三方(发信IP 5.6.7.8),DNS托管在Cloudflare,证书走Let's Encrypt。


第1步(基础解析):


example.com A 1.2.3.4(TTL 3600)

www CNAME example.com

mail A 5.6.7.8(若发信服务器另有其IP)


第2步(邮件信誉):


example.com MX 10 mail.example.com.

example.com TXT v=spf1 ip4:5.6.7.8 ~all

selector._domainkey TXT (DKIM公钥,由邮件服务商提供)

_dmarc TXT v=DMARC1; p=none; rua=mailto:admin@example.com


第3步(证书管控,可选加固):


example.com CAA 0 issue letsencrypt.org

example.com CAA 0 issuewild letsencrypt.org


第4步(验证):dig命令逐条验。dig example.com A +short 应返回1.2.3.4;dig example.com MX +short 应返回10 mail.example.com.。别信注册商面板的“已生效”,全球生效以递归查询为准。


九、排障速查:DNS不生效的排查顺序


网站打不开,按这个顺序查,五分钟定位。先dig域名A记录——返回旧IP是TTL缓存未过期,等;返回NXDOMAIN是记录没建成或NS没生效;返回正确IP但网站不通,问题已不在DNS,去查服务器(本站Nginx排查篇伺候)。dig @8.8.8.8 域名 可以绕开本地缓存直接问公共递归,是判断“全球生效了没”的标准姿势。


结语


DNS是建站的地基,平时隐形,出事就是全局瘫痪。把这篇的记录类型表吃透,你就从“跟着教程抄A记录”进阶到“看得懂自己的DNS面板”:知道每条记录为什么存在、什么情况会冲突、排障从哪下手。地基打好,楼上随便盖。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

网站优化完怎么验证?wrk、ab压力测试实战,给性能算笔账

网站访客数据自己收:Umami自建统计面板,不靠第三方也能看清流量

评 论
更换验证码