IP 通、域名不通,就锁在这一层
先做一个判断:找一个公网 IP 直接 ping,比如 1.1.1.1,能通;再打开任意网页,打不开。这两条同时成立,基本就把问题锁在域名解析上了,后面所有动作都围着这一层。
接着确认现在归谁解析。开着 TUN 或者配置里打开了 DNS 覆写时,解析由客户端接管,你去改网卡的 DNS 地址没有任何意义;反过来两边都关着,客户端这里怎么调也不影响系统的解析结果。搞反了会白折腾很久。
先看现象再动手
解析问题和节点故障在浏览器上看起来很像,但 ping IP 通不通这一条就能把两者分开。
三类最常见的解析故障
- 1
缓存里的旧结果
换了节点、改了配置之后,系统和浏览器可能还在用旧的解析结果,看起来就像「明明改好了还是错的」。Windows 执行
ipconfig /flushdns,macOS 执行sudo killall -HUP mDNSResponder。浏览器自己还有一层缓存,清完最好把浏览器整个关掉重开。 - 2
残留的假 IP
程序上次异常退出时,系统里可能还留着指向
198.18.0.0/16这个假 IP 段的路由或缓存。症状很好认:某几个域名解析到一个根本连不上的地址,其他一切正常。重新启动客户端让它把这一层接管回去,再清一次缓存。 - 3
内网域名被送去外面查
公司内部域名、局域网的设备名被当成公网域名送出去解析,外面当然查不到。在配置的 DNS 段里把这些后缀交给内网 nameserver,或者放进不做假 IP 的名单,让它们解析回真实地址。
确认解析结果真的变了
改完别只看网页开不开得了。在命令行里对同一个域名再查一次,看返回的地址是不是你预期的;如果某个域名解析到明显不对的地区,说明这条查询走的路和你以为的不一样,去日志里找是哪个 nameserver 回的它。
- 同一个域名连查两次结果一致,而且不再是 198.18 开头
- 内网地址和公网域名都打得开,不是顾此失彼
- 浏览器完全重开之后仍然正常,说明不是残留缓存造成的假象
常见问题
换了节点,域名还是解析到旧地址,怎么回事?
多半是缓存。解析结果在系统和浏览器里各存一份,切换节点不会主动清掉。Windows 跑一次 ipconfig /flushdns,macOS 跑 sudo killall -HUP mDNSResponder,再把浏览器完全退出重开。还不行就重启客户端,让它重新接管解析。
把 Clash Verge 关掉之后反而完全上不了网,是什么原因?
程序退出时没把接管的那一层还回去,系统里留下了指向客户端的 DNS 设置或路由。重新打开客户端再正常退出一次,通常就恢复了。也可以手动把网卡的 DNS 改回自动获取,然后清一次缓存。