域名无法解析至IPv6服务器导致访问失败,nslookup正常该如何排查?
兄弟,我之前也遇到过类似的头疼问题,咱们一步步拆解排查,应该能找到原因:
先清Chrome的本地DNS缓存:浏览器自己会缓存DNS记录,有时候系统nslookup已经拿到正确结果了,但Chrome还抱着旧缓存不放。你可以在Chrome地址栏输入
chrome://net-internals/#dns,找到「清除主机缓存」按钮点一下,或者直接重启浏览器再试试访问域名。检查Chrome的DNS服务器是否和系统一致:现在很多浏览器默认开启了「安全DNS(DoH)」,可能用的是谷歌、Cloudflare这类公共DNS,而你用nslookup查的是系统默认的DNS服务器——如果你的域名刚配置好AAAA记录(IPv6对应的解析记录),公共DNS可能还没同步更新,就会返回NXDOMAIN。你可以去Chrome设置里搜索「安全DNS」,暂时关掉这个功能,或者把Chrome的DNS设置改成和系统一样的,再测试访问。
确认域名的AAAA记录是否正确配置:虽然nslookup正常,但你得确认查的是不是AAAA记录(IPv6对应的解析记录)。可以在命令行里执行
nslookup -type=AAAA mydomain,看看返回的IPv6地址是不是你服务器的那个aa:bb:cc:dd。如果返回空或者不对,那就是DNS解析记录没配置对,得去域名服务商那边检查AAAA记录的设置。刷新系统层面的DNS缓存:有时候系统DNS缓存也会拖后腿,尤其是刚改完解析记录的情况下。Windows用户可以打开命令提示符执行
ipconfig /flushdns,Linux用户执行systemd-resolve --flush-caches(不同发行版可能略有差异),Mac用户执行sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder,刷新完再用Chrome试试。检查本地hosts文件:虽然概率不高,但还是得确认下hosts文件里有没有给你的域名配置错误的条目。Windows的hosts在
C:\Windows\System32\drivers\etc\hosts,Linux和Mac在/etc/hosts,打开看看有没有mydomain相关的行,要是有错误的IP或者没配置IPv6记录,改过来就行。核对域名拼写:别笑,有时候真的会手滑多打个字母或者符号!仔细看看Chrome地址栏里的域名和你nslookup用的是不是完全一致,有没有空格、大小写(虽然域名不区分大小写,但还是确认下)。
备注:内容来源于stack exchange,提问作者Ordit Gross




