改了解析为什么不生效?华为云DNS解析配置实战与五个常见坑

举报
yd_282720827 发表于 2026/10/29 10:33:46 2026/10/29
【摘要】 改了解析却不生效?本文梳理华为云云解析服务DNS配置实战:NS切换、A/CNAME/MX/TXT记录选择、TTL与生效时间、内网域名与智能线路解析,用dig分层验证,并剖析CNAME冲突、漏配www等常见坑,附排障清单。

在华为云上部署完网站,最后一步往往是“配个域名解析”。这一步看起来只是在控制台填几个字段,却是线上事故的高发区:明明改了记录,访问的还是旧服务器;添加 CNAME 时提示“与已有解析记录冲突”;内网域名在 ECS 上怎么也解析不出来;用户输入不带 www 的域名直接打不开……本文围绕云解析服务(DNS),从公网域名解析、内网域名、记录类型选择、TTL 与生效时间、智能线路解析,到用 dig/nslookup 验证结果,系统梳理一套可落地的配置方法,并总结五个最常见的坑。

一、先理解一次 DNS 解析经过了哪些环节

用户在浏览器输入 www.example.com 后,大致经历这样一条链路:

  1. 本地缓存:浏览器、操作系统(以及部分路由器)会先查自己的缓存;
  2. 递归 DNS(LocalDNS):缓存未命中时,请求发给运营商或公共 DNS 等递归服务器;
  3. 根与顶级域服务器:递归服务器逐级查询,从 .com 顶级域服务器得知该域名的 NS 记录,也就是“谁负责解析这个域名”;
  4. 权威 DNS:递归服务器向 NS 指向的权威服务器(例如华为云 DNS)查询,拿到最终记录并按 TTL 缓存。

这条链路决定了两件事:第一,只有 NS 指向华为云,你在华为云控制台里配置的记录才会被公网用到;第二,链路上每一层都有缓存,修改记录后不会瞬间全网生效。后面大部分“坑”都源于这两点。

二、公网域名解析:从添加域名到 NS 切换

公网域名解析的基本流程如下:

  1. 在云解析服务控制台的“公网域名”页面添加域名(如 example.com),系统会自动生成 NS 和 SOA 类型的记录集;
  2. 在“管理解析”中添加需要的记录集,如 A、CNAME、MX、TXT 等;
  3. 到域名注册商处,把域名的 DNS 服务器(NS)修改为华为云 DNS 的地址(具体地址以控制台中 NS 记录显示为准);
  4. 等待 NS 变更在顶级域生效后,用命令验证。

如果域名本身就在华为云注册,通常可以在域名管理中直接设置;如果域名在其他注册商处,就必须去对方控制台修改 NS。只在华为云添加了记录却没改 NS,是“配了不生效”的头号原因。

三、记录类型怎么选

记录类型 作用 典型场景 注意事项
A 域名指向 IPv4 地址 指向 ECS 弹性公网 IP、ELB 公网地址 IP 变更需同步修改
AAAA 域名指向 IPv6 地址 开启 IPv6 的业务 与 A 记录可共存
CNAME 域名指向另一个域名 接入 CDN、WAF、OBS 静态网站等 同一主机记录下与 A、AAAA 等冲突
MX 指定邮件服务器及优先级 企业邮箱 数值越小优先级越高,值填域名而非 IP
TXT 任意文本 SPF、证书 DNS 验证、域名归属校验 多条用途可共存,注意引号与格式
NS 指定权威服务器 子域名委派给其他 DNS 主域名 NS 由系统生成

选择原则可以概括为一句话:自己掌握 IP 的用 A,接入第三方云服务(CDN、WAF 等)按服务给出的 CNAME 地址配置。CNAME 的好处是服务方变更后端 IP 时你不用跟着改,代价是多一次解析跳转。

四、TTL 设置与生效时间

TTL(Time To Live)表示递归 DNS 可以缓存这条记录多少秒。华为云记录集默认 TTL 为 300 秒,可按需调整。TTL 的取舍:

  • TTL 小(如 60~300 秒):修改后更快生效,适合即将迁移、频繁切换的记录,但递归服务器回源查询更频繁;
  • TTL 大(如 3600 秒以上):缓存命中率高、解析更稳定,适合长期不变的记录,例如 MX、TXT 校验记录。

一个实用技巧是**“先降 TTL,再改记录”**:计划迁移服务器前,提前把 TTL 从 3600 改为 60,并至少等待一个旧 TTL 周期(让旧缓存自然过期),再修改记录值;迁移稳定后再把 TTL 调回去。否则,即使改了记录,部分用户仍可能在最长一个旧 TTL 周期内访问到旧地址。

还要注意:部分递归 DNS 并不严格遵守 TTL,可能缓存得更久;浏览器和操作系统也有自己的缓存。因此“生效时间”只能估算,不能保证精确到秒。

五、内网域名(Private Zone)

内网域名用于 VPC 内部的服务发现,例如把 db.internal 解析到数据库私网 IP,应用配置里写域名而不是写死 IP,后端迁移时只改一条记录即可。配置要点:

  1. 在“内网域名”页面创建域名,并关联需要解析该域名的 VPC;
  2. 添加记录集,记录值填私网 IP;
  3. 确认 ECS 所在子网的 DNS 服务器地址是华为云内网 DNS 地址(不同区域地址不同,以控制台显示为准)。

根据官方文档的约束:只有内网域名关联的 VPC 中的 ECS 才能解析该内网域名。同时,内网 DNS 对非内网域名的请求会继续转发到公网解析,所以正常访问外网不受影响。如果同一个域名同时存在公网和内网解析,VPC 内的机器会优先得到内网结果,这正好可以实现“内外网分离”的访问方式。

在 ECS 内检查当前使用的 DNS:

# 查看系统使用的 DNS 服务器
cat /etc/resolv.conf

# 使用 systemd-resolved 的系统可以这样查看
resolvectl status | grep -i "DNS Servers"

# 测试内网域名解析
nslookup db.internal

六、智能线路解析

普通解析对所有访问者返回相同结果。智能线路解析则可以根据访问者来源,对同一域名返回不同地址,常见维度包括:

  • 运营商线路:电信、联通、移动用户分别解析到对应线路的服务器;
  • 地域线路:不同省份或境内/境外用户解析到就近节点;
  • 自定义线路:按 IP 网段划分,适合企业办公网等特殊场景。

配置时有一条硬规则:务必保留一条“全网默认”线路的记录。智能线路是“匹配则返回对应线路,匹配不上则走默认”,如果没有默认记录,未被任何线路覆盖的用户可能解析不到结果。另外需要知道,线路判断通常依据的是递归 DNS 的出口 IP 而非用户真实 IP,使用公共 DNS 的用户可能被识别到与其实际网络不一致的线路。

七、用 dig 和 nslookup 验证解析

配置完成后,不要只用浏览器“刷一下”,应该分层验证:

# 1. 查看 NS 是否已切到华为云
dig example.com NS +short

# 2. 直接向权威服务器查询(绕过所有缓存,确认控制台配置是否正确)
#    NS 地址以控制台显示为准
dig @ns1.huaweicloud-dns.com www.example.com A +short

# 3. 向公共递归 DNS 查询,观察返回结果与剩余 TTL
dig @8.8.8.8 www.example.com A
dig @114.114.114.114 www.example.com A

# 4. 追踪完整解析链路,定位是哪一层出了问题
dig +trace www.example.com

# 5. 查看 CNAME、MX、TXT 记录
dig www.example.com CNAME +short
dig example.com MX +short
dig example.com TXT +short

Windows 下可以使用 nslookup:

nslookup -type=NS example.com
nslookup -type=MX example.com
nslookup www.example.com 8.8.8.8

# 清除本机 DNS 缓存
ipconfig /flushdns

判断思路:权威服务器返回新值、递归 DNS 返回旧值,说明是缓存未过期,等 TTL 到期即可;权威服务器返回的就是旧值或没有结果,说明控制台配置有问题或 NS 没有切换。dig 结果 ANSWER SECTION 中的第二列数字就是该递归服务器上的剩余 TTL,可以据此估算何时刷新。

八、五个常见坑

坑一:CNAME 与其他记录冲突。 按照 DNS 标准,一个主机记录如果配置了 CNAME,就不应再有其他类型的记录。在华为云添加记录时,同一主机记录、同一线路下 CNAME 与 A、AAAA 等类型会提示“与已有解析记录冲突”。常见场景是 www 原本有 A 记录,接入 CDN 时要改成 CNAME。正确做法是先删除或修改原有 A 记录再添加 CNAME,注意在业务低峰期操作,或者先用一个测试子域名验证 CDN 配置。

坑二:改了记录不生效。 按顺序排查三层:一查 NS,dig example.com NS 是否已经指向华为云,没切换的话控制台怎么改都没用;二查权威,用 dig @权威服务器 确认新记录已经生效;三查缓存,递归 DNS 在旧 TTL 内仍会返回旧值,本机和浏览器也有缓存,可以清除本地缓存或换一个递归 DNS 对比。还有一种情况是本机 hosts 文件里写死了旧地址,同样会让人误以为“解析没生效”。

坑三:内网域名没有关联 VPC。 创建了内网域名、记录也添加了,ECS 上却解析失败。原因往往是内网域名没有关联该 ECS 所在的 VPC,或者子网的 DNS 服务器被改成了公共 DNS(如 8.8.8.8),请求根本没有到达华为云内网 DNS。检查内网域名的关联 VPC 列表和子网的 DNS 设置,修改子网 DNS 后,ECS 可能需要重新获取 DHCP 配置或重启网络服务才会生效。

坑四:根域名配置 CNAME。 根域名(主机记录为 @ 或空)本身就有系统生成的 NS、SOA 记录,通常还需要 MX、TXT,按照 RFC 标准不应再配置 CNAME。华为云对主域名的 CNAME 与 MX、TXT 做了兼容,但官方文档也提示存在邮件收信异常、TXT 校验失败的风险。更稳妥的做法是:根域名使用 A 记录指向服务器或负载均衡的 IP,主要服务通过 www 子域名做 CNAME,再在 Web 服务器上把根域名重定向到 www。

坑五:漏配 www 或根域名。 example.com 和 www.example.com 是两个不同的域名,需要分别添加记录。只配了 www,用户直接输入 example.com 就打不开;反过来也一样。同时还要确认 HTTPS 证书覆盖了这两个域名,Web 服务器(如 Nginx 的 server_name)也同时监听了两者,否则会出现“解析通了但证书报错或返回默认站点”的情况。

九、排障清单

  • [ ] 域名 NS 是否已切换到华为云 DNS,dig NS 结果是否正确;
  • [ ] 直接查询权威服务器,返回值是否为最新配置;
  • [ ] 记录类型、主机记录、线路是否填写正确,是否存在冲突记录;
  • [ ] 旧记录的 TTL 有多长,是否已过一个完整 TTL 周期;
  • [ ] 本机 hosts、浏览器缓存、操作系统 DNS 缓存是否已排除;
  • [ ] 内网域名是否关联了正确的 VPC;
  • [ ] ECS 子网 DNS 是否为华为云内网 DNS 地址;
  • [ ] 智能线路是否保留了“全网默认”记录;
  • [ ] 根域名和 www 是否都已配置解析,证书与 Web 服务器是否同时覆盖;
  • [ ] 根域名是否避免了 CNAME,MX、TXT 是否能正常查询。

结语

DNS 配置本身不复杂,难的是理解“NS 决定谁说了算、TTL 决定多久生效”这两个核心概念。把权威查询、递归查询、本地缓存分层验证的习惯养成,再配合“先降 TTL 再改记录”的变更方法,绝大多数“改了解析不生效”的问题都能在几分钟内定位。下次切换域名前,不妨先对照本文的清单逐项检查一遍。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。