确认子域名解析生效,不能只看域名服务商控制台里显示“已保存”。真正要验证的是:递归DNS能否查到记录、返回的IP或目标是否与预期一致、目标服务器是否接受该子域名的请求。最直接的做法是用dig或nslookup查询,再结合本机解析和HTTP访问结果交叉判断。
子域名解析的“生效”至少包含三层含义,任何一层不通过,用户都可能打不开页面。
只看到第一层,不能称为生效。只看到第二层,也不能保证访问成功。
以Linux或macOS为例,查询A记录:
dig sub.example.com A +short
如果返回一个或多个IP,说明递归DNS已经能拿到记录。若返回空,继续指定权威服务器查询:
dig sub.example.com A @ns1.example-dns.com +short
把ns1.example-dns.com替换为域名实际使用的权威DNS。如果权威服务器能返回、默认递归查询却返回空,问题更可能在缓存或递归链路,而不是记录本身。
查询CNAME时,把类型改为CNAME。需要注意,CNAME记录的目标主机名本身也必须能继续解析,否则整条链路仍然不通。
Windows下可用:
nslookup sub.example.com
若想指定DNS服务器:
nslookup sub.example.com 8.8.8.8
公共查询正常、自己电脑却打不开,常见原因是本机缓存了旧结果,或系统使用了不同的DNS服务器。
ipconfig /flushdns清理本机DNS缓存。sudo dscacheutil -flushcache,必要时再重启相关解析服务。systemd-resolved,或直接查看/etc/resolv.conf确认当前使用的DNS地址。清理后重新查询。如果结果立即变成预期值,说明是缓存问题;如果仍然返回旧IP,需要回到权威记录和TTL设置上排查。
解析正确不等于访问正常。拿到IP后,继续检查目标端:
curl -I http://sub.example.com或curl -I https://sub.example.com查看返回状态码和响应头。server_name或虚拟主机绑定是否配置正确。这一步能区分“解析没生效”和“解析生效但服务没接住”。两者处理方向完全不同。
假设你负责把一个子域名指向一台新服务器。要确认配置实际生效,验收时应同时满足以下条件:
如果其中一项不满足,不要笼统地说“解析没生效”,而应记录具体是哪一层失败。例如“权威返回正确,但递归仍返回旧IP”,或“解析正确,但443端口连接超时”。这样下一步才有明确方向。
下一步:选一个你正在处理的子域名,先执行一次指定权威服务器的查询,再执行一次默认递归查询,把两次结果并排记录下来,再决定是继续等缓存过期,还是回到DNS记录或服务器配置上修改。