这种情况通常是本地 DNS 缓存未刷新或运营商 DNS 污染导致的,建议优先更换公共 DNS 并清除本地缓存,适用于个人开发测试或紧急恢复访问的场景。
先说结论:解析失败大多不是配置错误,而是网络链路中的 DNS 响应被干扰或缓存未更新。
- 先确认:本地 hosts 文件和 DNS 设置是否指向了正确的服务器。
- 先处理:切换至可信公共 DNS 并刷新本地 DNS 缓存。
- 再验证:使用 dig 或 nslookup 对比不同 DNS 服务器的解析结果。
核心原因分析
DNS 解析是一个分层查询的过程,配置生效后需要时间传播。国内访问海外 VPS 时,本地运营商 DNS 可能缓存了旧的 IP 地址,或者在查询过程中受到了网络干扰(DNS 污染),返回了错误的 IP。此外,浏览器本身也有 DNS 缓存,即使系统层面刷新了,浏览器可能仍在使用旧记录。
实操排查步骤
1. 检查本地 Hosts 文件
确认没有手动绑定错误的 IP。文件路径如下:
- Windows:
C:\Windows\System32\drivers\etc\hosts - macOS/Linux:
/etc/hosts
2. 修改网卡 DNS 服务器
将网卡 DNS 服务器修改为国内公共 DNS,如 223.5.5.5 或 114.114.114.114。
- Windows 10/11:控制面板 > 网络和 Internet > 网络连接 > 右键当前网卡 > 属性 > 双击"Internet 协议版本 4 (TCP/IPv4)" > 选择"使用下面的 DNS 服务器地址"。
- macOS:系统偏好设置 > 网络 > 高级 > DNS > 点击"+"添加新 DNS 服务器。
3. 清除 DNS 缓存
- Windows:
ipconfig /flushdns - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder - Linux:
sudo systemd-resolve `--flush-caches`或sudo service nscd restart
4. 清除浏览器 DNS 缓存
Chrome 浏览器地址栏输入 chrome://net-internals/#dns 点击"Clear host cache"。建议使用无痕模式访问排除干扰。
验证解析结果
在终端使用 dig 你的域名 查看返回的 IP 是否与 VPS 实际 IP 一致。
正常输出示例:
;; ANSWER SECTION:
example.com. 300 IN A 1.2.3.4异常输出示例:
;; ANSWER SECTION:
example.com. 300 IN A 5.6.7.8 (非预期 IP)
;; status: SERVFAIL如果 dig 返回 IP 正确但无法访问,可能是网络连通性问题而非 DNS 问题。
常见坑与注意事项
- TTL 设置:TTL 过长会导致全球生效慢,修改解析前建议调低 TTL。
- IPv6 优先级:系统可能优先尝试 IPv6 地址而失败,可尝试暂时禁用 IPv6 测试,但需注意可能影响本地其他 IPv6 服务。
- 安全软件:部分安全软件会接管 DNS 请求,需检查防火墙或安全软件设置。