
1. 项目概述DNS不是玄学是互联网的“门牌号分发系统”你有没有试过给朋友寄快递却只写了“北京市朝阳区某大厦B座”没写楼号、单元门、房间号快递员大概率会站在楼下打电话问“您说的‘某大厦’到底是哪一栋B座在哪儿我怎么找”——这和你在浏览器里输入www.example.com却打不开网站本质是一回事。DNSDomain Name System干的就是那个“查楼号、找单元门、核对房间号”的活儿。它不生产内容不托管网站不发邮件但它决定了你的用户能不能找到你的内容、邮件能不能投递到正确的邮箱服务器、API请求会不会被路由到失效的后端节点。很多人一听到DNS就头皮发紧A记录、CNAME、MX、SOA、TTL……字母组合像密码本文档里全是“权威服务器”“递归查询”“缓存刷新”这类术语仿佛进了通信工程系期末考场。但真相是DNS的设计哲学极其朴素——它就是一套分布式的、带缓存的、可配置的地址映射目录。它的核心目标只有一个把人类好记的域名比如blog.mycompany.com在毫秒级内准确无误地翻译成机器能直接通信的IP地址比如203.0.113.45。这个过程看似简单但一旦出错表现就是“网站打不开”“邮件收不到”“CDN回源失败”“监控告警狂响”而排查起来却常像在迷宫里摸黑找开关。我做Web系统运维和架构支持十多年经手过从日活千人的内部工具到峰值QPS超20万的电商主站所有故障里有近15%的根因都绕不开DNS配置错误或理解偏差。最典型的一次客户投诉“新上线的管理后台完全无法访问”我们层层排查网络、防火墙、负载均衡、应用日志耗时三小时最后发现只是他把admin.mycompany.com的A记录指向了测试环境的IP而生产环境的CNAME记录被误删了。问题本身两分钟就能改完但因为对DNS“谁管什么、什么时候生效、改了影响谁”没概念硬生生拖成了P1级事故。所以这篇内容不讲RFC标准不画OSI七层模型图也不堆砌协议字段。我就用修水管、寄快递、开餐厅这三类生活场景把DNS每个组件掰开揉碎告诉你它到底在系统里扮演什么角色、为什么这么设计、改错一个记录会引发什么连锁反应。尤其要强调的是DNS的“性能”从来不是指单次查询快0.1毫秒而是指整个映射链条的稳定性、变更生效的确定性、以及故障时的容错能力。一个TTL设成1秒的DNS理论上查询快但会压垮你的权威服务器一个MX记录只配一台邮件服务器看似简洁实则等于把公司邮箱命脉悬在一根线上。接下来我们就从最底层的逻辑开始一层层剥开这个“互联网门牌号系统”的真实面目。2. DNS整体设计与思路拆解为什么需要这套“分布式地址簿”2.1 核心矛盾人类记忆习惯 vs 机器通信需求想象一下如果互联网没有DNS我们每天得记住什么不是google.com而是142.250.191.14不是github.com而是140.82.121.4你公司的CRM系统可能是一串更长的IPv6地址2001:db8:abcd:0012::1。这显然不现实。人类大脑擅长处理语义化、有规律、带情感关联的信息比如“我的博客”“客户管理系统”但对纯数字字符串的记忆力极差且极易出错。而计算机网络通信的底层协议TCP/IP又必须依赖精确的IP地址才能建立连接。这个根本性的矛盾就是DNS诞生的全部理由——它是一个语义到数值的翻译中间件。但请注意DNS绝不是简单的“字典查词”。一本纸质字典你查“apple”翻到对应页码看到解释这个过程是静态、单点、无状态的。而DNS是动态、分布式、带状态缓存的。为什么不能搞一个全球统一的中央数据库原因有三第一是规模不可承受。全球有超过4亿个注册域名每秒新增数千个如果所有查询都涌向一个中心服务器带宽、计算、存储压力会瞬间击穿任何硬件极限第二是单点故障风险。一旦中心库宕机整个互联网的“门牌号系统”就瘫痪了这是绝对不能接受的系统性风险第三是延迟与效率。假设你在北京每次访问taobao.com都要先连到美国弗吉尼亚州的某个中心服务器查IP光是网络往返时间RTT就可能超过200ms用户体验直接崩盘。DNS的解决方案非常精妙它把“地址簿”拆分成无数本按层级分发每一本只管自己那一小块“辖区”并且允许下级“抄录”上级的记录缓存形成一张巨大的、自组织的、有冗余的映射网络。这个设计本质上是在一致性、可用性、分区容忍度CAP理论之间做的务实取舍——它牺牲了强一致性比如你刚改完记录全球并非立刻同步但换来了极致的可用性和极低的查询延迟。2.2 分层结构解析根域、顶级域、权威域谁在管什么DNS的层级结构可以类比中国邮政的地址管理体系。你寄一封信到“北京市朝阳区建国路87号招商局大厦A座1201室”邮局不会拿着整张中国地图从省开始一级级往下查。它有一套预设的路由规则先看“北京市”相当于DNS的根域.知道这是华北片区再看“朝阳区”相当于顶级域.cn或.com知道这是北京下属的行政区最后才根据“建国路87号”这个具体地址相当于权威域zhaoshangju.com投递到指定大楼。DNS的层级正是如此根域Root Zone符号是单独一个点.它是整个DNS树的起点全球只有13组根服务器实际是13个逻辑地址背后由数百台物理服务器组成的集群支撑。它们不存储www.google.com的IP只存储所有顶级域.com,.org,.cn,.io等的权威服务器地址。就像国家邮政总局只发布各省邮政管理局的联系方式。顶级域Top-Level Domain, TLD如.com,.net,.org,.cn,.xyz。每个TLD都有自己的管理机构比如Verisign管理.com它们维护着该后缀下所有已注册域名的权威服务器列表。例如当你查询example.com根服务器会告诉你“去问.com的服务器”.com服务器再告诉你“example.com这个域名找ns1.example-dns.com和ns2.example-dns.com这两台服务器问。”权威域Authoritative Zone这是真正存储你域名具体记录的地方。比如你买了myapp.io并把DNS托管给Cloudflare那么Cloudflare的服务器如lucy.ns.cloudflare.com就是myapp.io的权威服务器。它里面存着你配置的所有A、CNAME、MX等记录。这才是你真正需要登录、修改、调试的地方。提示很多新手混淆“域名注册商”和“DNS托管商”。注册商如GoDaddy、Namecheap是你买下myapp.io这个名字的“房产中介”它负责在.ioTLD库里登记你是所有者而DNS托管商如Cloudflare、AWS Route 53、你的IDC服务商才是你请来管理这栋“房子”门牌号即DNS记录的“物业管家”。你可以把域名在GoDaddy注册但把DNS托管权交给Cloudflare两者完全解耦。这种分离恰恰是DNS分布式设计的体现——所有权和管理权可以分开。2.3 “性能”的真实含义稳定、确定、容错而非单纯的速度回到关键词“Performance”。在DNS语境下它绝非指“查询响应时间越短越好”。我见过太多团队为了追求“极致性能”把TTLTime to Live从默认的3600秒1小时改成60秒甚至10秒。结果呢他们的权威DNS服务器QPS暴增10倍CPU持续95%以上最终在一次促销活动前夜彻底雪崩导致所有用户无法解析域名。这就是典型的对“性能”理解偏差。DNS的性能应从三个维度衡量稳定性Stability系统能否7x24小时不间断提供解析服务这取决于权威服务器的冗余度、DDoS防护能力、以及TLD和根服务器的健壮性。一个高可用的DNS架构必然包含至少2台独立的权威服务器NS记录且部署在不同物理位置和网络出口。确定性Determinism当你修改了一条记录你能否准确预知它何时、在哪些地方生效这取决于TTL的合理设置和缓存行为的可预测性。TTL不是越小越好而是要匹配你的业务变更节奏。比如一个常年不变的静态资源CDN域名TTL设为8640024小时很合理而一个正在灰度发布的API网关域名TTL设为3005分钟以便快速回滚才是真正的“高性能”。容错性Fault Tolerance当某条记录配置错误、某台权威服务器宕机、或某段网络中断时系统是否有降级方案这体现在MX记录的多优先级配置、CNAME链的长度控制、以及NS记录的健康检查机制上。一个只配了一个MX记录的邮箱系统其“性能”再高也等于零——因为单点故障就是最高优先级的性能瓶颈。3. 核心细节解析与实操要点A记录、CNAME、MX、SOA、TXT、TTL全解3.1 A记录Address Record最直白的“IP绑定”A记录是DNS里最基础、最常用的记录类型它的作用一句话概括将一个主机名hostname直接映射到一个IPv4地址。语法非常简单主机名IN AIPv4地址。例如www.myapp.io. IN A 203.0.113.45 api.myapp.io. IN A 203.0.113.46这里要注意几个关键细节主机名Hostname左边的部分。www.myapp.io.结尾的点.是FQDNFully Qualified Domain Name完全限定域名的标志表示这是绝对路径不是相对路径。很多DNS管理界面会自动帮你加但手动编辑zone文件时漏掉这个点是常见错误会导致解析异常。IN代表Internet Class是历史遗留字段现在基本固定为IN可忽略。A记录类型明确标识这是IPv4地址记录。IPv4地址必须是合法的四段式IP如192.168.1.1。不能是域名不能是IPv6地址IPv6用AAAA记录。实操心得A记录的“直白”既是优点也是陷阱。优点是解析链路最短性能最好一次查询直达IP陷阱在于缺乏灵活性。如果你的Web服务器IP变了比如云主机重建、弹性IP切换你必须手动去DNS后台修改每一个A记录。对于有几十个子域名的大型应用这简直是灾难。因此业界最佳实践是A记录只用于指向基础设施的“锚点”比如负载均衡器SLB或CDN的入口IP而不是直接指向应用服务器。这样后端服务器IP的变更完全不需要动DNS。3.2 CNAME记录Canonical Name Record优雅的“别名跳转”CNAME记录解决了A记录灵活性不足的问题。它的作用是为一个主机名创建一个别名该别名指向另一个主机名canonical name而不是直接指向IP。语法是别名IN CNAME目标主机名。例如blog.myapp.io. IN CNAME myapp-blog.s3-website-us-east-1.amazonaws.com. cdn.myapp.io. IN CNAME d1234567890abc.cloudfront.net.当用户查询blog.myapp.io时DNS服务器会返回一条CNAME响应告诉客户端“别查我去查myapp-blog.s3-website-us-east-1.amazonaws.com.这个地址”。客户端收到后会立刻发起第二次查询最终得到S3的IP。这个过程叫“CNAME链”。注意CNAME记录有严格限制。一个主机名只能有一个CNAME记录且不能同时存在其他类型的记录如A、MX、TXT。比如你不能既给www.myapp.io设CNAME又给它设MX记录。这是因为CNAME的本质是“这个主机名完全等同于另一个主机名”它的所有属性包括邮件接收、文本信息都应该继承自目标主机名。所以www这种通常需要独立配置的子域名一般不用CNAME而用A记录而blog、docs、status这类功能明确、无需收发邮件的子域名则非常适合用CNAME指向第三方SaaS服务。3.3 MX记录Mail Exchanger Record邮件投递的“智能分拣线”MX记录专为电子邮件设计它定义了“当有人给usermyapp.io发邮件时应该把这封信投递给哪台邮件服务器”。它的语法比A/CNAME复杂一点包含优先级Preference和邮件交换器Exchange两个核心字段myapp.io. IN MX 10 mail1.myapp.io. myapp.io. IN MX 20 mail2.myapp.io. myapp.io. IN MX 30 aspmx.l.google.com.这里的数字10、20、30就是优先级数值越小优先级越高。邮件发送方比如Gmail在发信前会先查myapp.io的MX记录然后按优先级从高到低尝试连接。它会先连mail1.myapp.io如果这台服务器在5秒内无响应就自动降级到mail2.myapp.io如果mail2也挂了再试aspmx.l.google.comGoogle Workspace的邮件服务器。这是一种典型的主备兜底容错策略。实操心得MX记录的配置是企业邮箱安全的生命线。我处理过一个案例客户把MX记录的优先级全设成了0导致所有邮件服务器被视为同等优先级Gmail随机选择一台投递结果一半邮件进生产服务器一半进测试服务器数据彻底混乱。另外MX记录的目标必须是A记录或CNAME指向的主机名不能是IP地址。这是SMTP协议的强制要求违反会导致邮件被拒收。3.4 SOA记录Start of Authority整个DNS区域的“户口本”SOA记录不是一个供你日常配置的记录而是每个DNS区域Zone自动生成、强制存在的“元数据”记录。它不参与日常解析但定义了整个区域的“治理规则”。一个典型的SOA记录长这样myapp.io. IN SOA ns1.myapp.io. admin.myapp.io. ( 2023091501 ; serial number 3600 ; refresh (1 hour) 1800 ; retry (30 minutes) 1209600 ; expire (2 weeks) 86400 ; minimum TTL (1 day) )括号内是5个关键参数每个都至关重要Serial Number序列号这是区域文件的版本号。每次你修改DNS记录都必须手动或自动更新这个数字通常用年月日序号如2023091501。下游的辅助DNS服务器Secondary NS就是靠对比这个数字来判断“上游的主DNSPrimary NS有没有新数据”从而决定是否要执行区域传输AXFR。Refresh刷新间隔辅助DNS服务器每隔多久秒主动向主DNS服务器查询一次SOA检查序列号是否更新。默认3600秒1小时。Retry重试间隔如果辅助DNS在Refresh时连不上主DNS它会等待Retry时间后再次尝试。默认1800秒30分钟。Expire过期时间如果辅助DNS在Expire时间内比如2周一直无法联系上主DNS并获取新数据它就会宣布自己掌握的区域数据“过期”停止对外提供解析服务。这是防止陈旧数据长期污染网络的关键保险。Minimum TTL最小TTL这个值有两个作用一是作为该区域内所有记录的默认TTL如果某条记录没显式设置TTL二是作为负缓存Negative Caching的TTL即当查询一个不存在的子域名如xxx.myapp.io时DNS服务器会缓存“不存在”这个结果缓存时间就是这个Minimum TTL。提示SOA记录里的admin.myapp.io.是管理员邮箱但格式是admin.myapp.io.而不是adminmyapp.io。因为符号在DNS中是特殊字符必须用点号代替。3.5 TXT记录Text RecordDNS里的“便签纸”TXT记录是DNS里最自由、用途最广的记录类型它允许你为一个域名添加任意的、人类可读的文本字符串。早期它只是用来放“这个域名是谁的”这种备注但现在已成为各种安全协议和验证机制的基石。最常见的三种用途SPFSender Policy Framework防止别人伪造你的域名发垃圾邮件。一条典型的SPF记录myapp.io. IN TXT vspf1 include:_spf.google.com include:sendgrid.net ~all它告诉全世界“只有Google Workspace和SendGrid这两家服务被授权用myapp.io的邮箱发信其他来源都是可疑的~all表示软拒绝”。DKIMDomainKeys Identified Mail为每封发出的邮件添加数字签名收件方可以用TXT记录里的公钥来验证签名真伪确保邮件在传输中未被篡改。DMARCDomain-based Message Authentication, Reporting ConformanceSPF和DKIM的“指挥官”它通过TXT记录告诉收件方“如果一封邮件声称来自myapp.io但SPF或DKIM验证失败你应该怎么做拒绝/隔离/放行”并指定报告发送地址。注意TXT记录的值必须用英文双引号括起来如果字符串太长超过255字符DNS协议要求将其分割成多个用空格分隔的引号段如vDKIM1; krsa; pMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...。很多DNS管理界面会自动处理这个分割但手动编辑时务必注意。3.6 TTLTime to LiveDNS缓存的“保质期”TTL是DNS里最常被误解也最影响“性能”的参数。它不是一个全局开关而是附加在每一条DNS记录上的一个数字单位是秒表示这条记录被其他DNS服务器或本地操作系统缓存的最长时间。例如www.myapp.io. IN A 203.0.113.45 ; TTL 300 api.myapp.io. IN A 203.0.113.46 ; TTL 60这意味着当一个用户的电脑第一次查询www.myapp.io得到IP203.0.113.45后它的操作系统会把这个结果缓存5分钟300秒。在这5分钟内无论你后台把A记录改成什么这个用户的电脑都还会用旧的IP直到缓存过期。实操心得TTL不是越小越好也不是越大越好而是一个业务权衡。我给自己定的铁律是长期稳定的服务如主站、静态资源TTL设为36001小时或8640024小时。这能极大减轻权威DNS服务器压力提升全球解析速度。即将变更的服务如蓝绿发布、灾备切换提前24-48小时把TTL逐步降低到3005分钟或601分钟。等变更窗口到来时旧缓存已基本清空新记录能快速生效。绝对不能变的服务如根域名NS记录TTL必须设为最大值如86400因为一旦NS记录出错整个域名的解析都会瘫痪你根本没有机会“快速修复”。4. 实操过程与核心环节实现从查记录到改配置的完整闭环4.1 第一步诊断——如何快速定位DNS问题当用户报告“网站打不开”不要急着改DNS先做三步诊断90%的问题能当场定位确认是DNS问题还是其他问题在用户电脑上打开命令行Windows用CMDMac/Linux用Terminal执行ping www.myapp.io如果返回Ping request could not find host www.myapp.io说明域名根本没解析出来100%是DNS问题。如果返回Reply from 203.0.113.45: bytes32 time15ms TTL56说明DNS解析成功问题出在网络、服务器或应用层。查当前解析结果——用dig命令Mac/Linux或nslookupWindowsdig是更专业的工具。执行dig www.myapp.io A shortshort参数让输出只显示IP干净利落。如果返回空说明A记录不存在或配置错误。再查NS记录dig myapp.io NS short看返回的权威服务器是不是你预期的比如ns1.cloudflare.com。如果不是说明DNS托管权没切过去。查全球缓存状态——用在线工具本地dig查到的是你本地ISP的缓存不代表全球。用 DNS Checker 或 ViewDNS.info 输入你的域名和记录类型它会从全球数十个地点并发查询生成一张热力图。如果只有你本地查不到而全球其他地方都正常那问题就在你的本地网络或ISP如果全球大部分地方都查不到那就是你的权威DNS配置错了。提示dig命令还能指定查询特定的DNS服务器这对排查问题极有用。比如你想绕过本地ISP的DNS直接问Cloudflare的公共DNSdig 1.1.1.1 www.myapp.io A或者直接问你的权威服务器假设是ns1.myapp.iodig ns1.myapp.io www.myapp.io A如果ns1.myapp.io能查到正确IP但1.1.1.1查不到说明问题出在区域传输AXFR没成功或者SOA的serial没更新。4.2 第二步修改——在主流DNS托管平台上的操作实录不同平台UI差异大但核心逻辑一致。以下以三个最常用平台为例演示如何添加一条A记录Cloudflare最推荐新手登录Cloudflare控制台选择你的域名myapp.io。左侧菜单点DNS→ 右上角点 Add record。类型选A名称填wwwCloudflare会自动补全为www.myapp.ioIPv4地址填203.0.113.45代理状态Proxy status选Proxied橙色云朵走Cloudflare CDN或DNS only灰色云朵仅解析。TTL选Auto它会根据你的账户等级自动设为300秒或更长点击Save。关键细节Cloudflare的“Proxied”模式意味着所有流量先经过Cloudflare的全球边缘节点再转发到你的源站。这不仅能加速还能隐藏你的真实IP提供WAF防护。但如果你的应用依赖客户端真实IP比如某些风控系统就必须关掉代理用DNS only模式。AWS Route 53适合深度集成AWS生态登录AWS控制台进入Route 53→Hosted zones→ 找到myapp.io的托管区域。点Create record。名称填www.myapp.io.注意结尾的点记录类型选A – IPv4 address值填203.0.113.45TTL填300路由策略选Simple最常用。点Create records。关键细节Route 53的“托管区域”Hosted Zone就是DNS里的“权威域”。你在这里创建的所有记录都由Route 53的全球DNS服务器集群权威响应。它的优势是和EC2、ALB、S3等服务深度集成比如你可以直接创建一条A记录类型选Alias然后指向一个ELB的DNS名称这样就不需要手动维护IP了。国内常见IDC平台如阿里云DNS、腾讯云DNSPod登录控制台进入云解析DNS→ 找到你的域名。点添加记录。主机记录填www记录类型选A记录值填203.0.113.45TTL选60010分钟国内平台默认较保守线路类型选默认全网。点确认添加。关键细节国内平台普遍有“线路类型”功能比如你可以为www.myapp.io创建两条A记录一条线路是“电信”值为电信机房IP另一条线路是“联通”值为联通机房IP。这样电信用户访问时自动解析到电信IP联通用户解析到联通IP实现智能调度。这是A记录的高级用法但对新手来说先用“默认”即可。4.3 第三步验证与生效——如何确认修改已全球生效改完DNS千万别立刻关页面。必须验证否则就是埋雷。验证分三步立即验证查你的权威服务器用dig直接问你的NS服务器dig ns1.myapp.io www.myapp.io A short如果返回你刚填的IP说明你的修改已成功写入权威服务器第一步完成。短期验证查本地缓存清除你电脑的DNS缓存Windows:ipconfig /flushdnsMac:sudo killall -HUP mDNSResponderLinux:sudo systemd-resolve --flush-caches然后重新dig www.myapp.io A short看是否已是新IP。长期验证查全球缓存回到 DNS Checker 输入www.myapp.io和A记录点击查询。它会显示全球各节点的查询结果。重点关注几个关键地区北京、上海、深圳国内、硅谷、纽约、伦敦、东京、新加坡。如果这些主要节点在10-30分钟内取决于你设的TTL都返回了新IP恭喜你全球生效了。如果某个节点迟迟不更新比如“莫斯科”节点还显示旧IP别慌这很正常——那是当地ISP的缓存还没过期等TTL时间一到它会自动刷新。实操心得我给自己定的“变更黄金时间窗”是提前24小时降TTL → 变更窗口选在业务低峰期如凌晨2-4点→ 变更后15分钟内用DNS Checker盯住全球热力图 → 确认核心地区中美欧全部生效 → 再观察1小时看监控告警是否归零。这套流程跑下来至今零失误。5. 常见问题与排查技巧实录那些让你抓狂的DNS坑我都踩过了5.1 典型问题速查表问题现象最可能原因快速排查命令解决方案ping domain.com报错“找不到主机”A记录缺失或拼写错误dig domain.com A short检查DNS后台确认A记录存在且主机名正确注意www和根域名区别网站能打开但图片/JS/CSS加载失败子域名如static.domain.com的A记录未配置dig static.domain.com A short为所有用到的子域名单独添加A或CNAME记录邮件能发不能收MX记录未配置或优先级全为0dig domain.com MX short删除所有MX记录重新添加优先级设为10/20/30递增新IP生效后部分用户仍访问旧服务器本地或ISP DNS缓存未过期dig 8.8.8.8 domain.com A问谷歌DNS等待TTL过期或让用户清除本地DNS缓存Cloudflare显示“DNS only”但网站打不开源站服务器防火墙未放行Cloudflare IP段curl -I http://your-server-ip从服务器本地测将Cloudflare的 IP段列表 加入服务器白名单5.2 我踩过的最深的三个坑坑一根域名的CNAME陷阱有一次客户想把myapp.io根域名直接指向一个SaaS平台我在DNS后台毫不犹豫地加了一条CNAME→myapp.saasplatform.com。结果第二天整个公司邮箱全崩了。为什么因为CNAME记录禁止与其他记录共存。我加了CNAME系统就自动删除了之前配置的MX记录和NS记录。根域名的MX没了邮件自然收不到NS记录没了整个域名的权威服务器都丢了DNS解析直接瘫痪。血泪教训根域名或myapp.io.永远不要用CNAME必须用A记录指向SLB或CDN或ALIAS/ANAME记录Cloudflare、Route 53等平台提供的CNAME-like功能但底层是自动解析并返回A记录规避了CNAME限制。坑二TTL设得太小反向压垮自己为了“快速回滚”我把一个核心API域名的TTL从3600秒改成60秒。结果在一次大促期间API调用量激增DNS查询量跟着暴涨我们的权威DNS服务器一台小VPSCPU飙到100%响应超时导致大量客户端解析失败APP大面积报错。反思TTL是双刃剑。它缩短了变更生效时间但也放大了查询洪峰。对于高流量域名TTL不应低于300秒真正的“快速回滚”应该靠服务发现Service Discovery或API网关的动态路由而不是DNS。坑三NS记录迁移忘了改注册商我们把DNS从老IDC迁到Cloudflare后台一切配置妥当dig ns1.cloudflare.com myapp.io A返回正确IP。但全球DNS Checker显示大部分地区还是解析到老IP。查了半天发现是注册商GoDaddy后台的NS记录还指向老IDC的ns1.oldidc.com。DNS查询的第一步是问根服务器“.com的NS是谁”根服务器回答“去问GoDaddy的NS”GoDaddy的NS再告诉用户“myapp.io的NS是ns1.oldidc.com”于是所有人还是去找老服务器。关键动作DNS迁移必须做两件事1. 在新DNS平台Cloudflare配置好所有记录2.登录域名注册商后台把NS记录全部替换成新平台提供的NS地址。缺一不可。5.3 终极排查口诀DNS故障五步定位法当遇到一个诡异的DNS问题别乱猜按这个顺序一步步来99%能定位查本地ping domain和dig domain A short。如果本地都失败问题在你本地网络或DNS设置。查权威dig your-ns-server domain A short。如果权威服务器返回错误说明你后台配置错了。查TLDdig domain NS short。看返回的NS是不是你预期的。如果不是说明注册商NS没改。查缓存用DNS Checker看全球分布。如果只有局部地区失败是缓存问题