修改hosts后为什么域名还是解析到旧IP?浏览器和DNS缓存排查

hosts只影响本机解析路径,不一定覆盖浏览器和代理的所有请求
发布于 更新于
9

迁移网站或调试新服务器时,很多人会在Windows的hosts文件里临时写入“新IP + 域名”。保存后,ping已经显示新地址,浏览器却仍然打开旧服务器;也可能是普通窗口无效,换一个浏览器反而正常。出现这种情况,不一定是hosts没有生效,而是系统解析、浏览器安全DNS、代理远程解析和现有连接走了不同路径。

hosts的作用,是在本机名称解析过程中为指定主机名提供静态映射。它只影响读取本机解析结果的程序,不会修改公网DNS,也不会让其他电脑同步切换。

Windows hosts文件应该怎么写

默认文件位于:

C:WindowsSystem32driversetchosts

一行写一个IP,后面用空格或制表符分隔主机名,例如:

203.0.113.25 example.com
203.0.113.25 www.example.com

示例中的IP属于文档保留网段,实际测试要替换为自己服务器的地址。域名不需要写协议、端口和路径,https://example.com/a 不是有效的hosts主机名。根域名和 www 也是两个名称,需要分别列出。

先排除文件本身的问题

  1. 使用管理员权限保存。普通编辑器可能提示保存成功,实际却写到了别处,或只能另存为新文件。
  2. 确认文件名就是hosts。打开资源管理器的“文件扩展名”显示,排除 hosts.txt。文件应保留在原目录。
  3. 检查是否存在重复记录。搜索同一域名的所有行,清理旧映射;同时留意一条IPv4和一条IPv6记录造成的双栈差异。
  4. 检查语法。# 后面是注释,域名应写成纯主机名。全角空格、复制来的特殊字符和错误拼写都可能让记录失效。
  5. 重新读取并确认内容。保存后关闭编辑器,再从系统目录打开一次,确认改动确实落盘。

为什么ping变了,浏览器还是访问旧IP

环节 可能保留旧结果的原因 检查方向
系统解析缓存 此前查询结果仍在本机缓存 清理缓存并重新执行使用系统解析的程序
浏览器 浏览器自己的主机缓存或现有连接仍在复用 完全退出全部进程后重开,查看网络请求目标
安全DNS/DoH 应用直接向指定递归DNS查询,可能绕过预期路径 临时关闭相关选项做对照,而非永久降低安全性
HTTP代理 代理端接收域名后在远端解析 检查代理模式与“远程DNS”设置
SOCKS代理 socks5h 等模式会把域名交给代理解析 对比本地解析与远程解析模式
CDN或反向代理 已到新入口,但入口仍回源到旧服务器 查看响应头、回源配置和两边访问日志

还要区分“名称解析”和“页面内容”。浏览器显示旧页面,可能是CDN缓存、页面缓存或服务工作线程缓存,并不一定真的连接了旧IP。最可靠的证据是浏览器开发者工具里的远程地址、响应头,以及新旧服务器访问日志。

一套从本机到服务器的验证顺序

  1. 清理Windows DNS缓存。在命令提示符执行 ipconfig /flushdns,然后关闭所有浏览器进程。
  2. 用系统解析路径测试。执行 ping example.com 观察显示的目标地址。ping是否收到回包不重要,有些服务器禁用ICMP;这里主要看解析出的IP。
  3. 不要只看nslookup。nslookup通常直接询问DNS服务器,结果可能仍是公网旧记录,这恰好说明公网DNS没有被hosts修改,并不能单独证明hosts失败。
  4. 查看真实HTTPS连接。在浏览器开发者工具网络面板核对请求域名、远程地址、状态码和响应头;新旧服务器也可以临时添加便于识别且不泄露敏感信息的响应标记。
  5. 绕开DNS做受控验证。在自己管理的站点上,可使用 curl --resolve example.com:443:目标IP https://example.com/。它同时保留域名、TLS SNI和Host信息,比直接用IP打开HTTPS更准确。
  6. 检查代理和安全软件。暂时停用浏览器代理做对照,查看杀毒软件、家长控制或企业终端代理是否接管DNS或HTTPS。受管设备不要绕过组织策略。

IPv6和HTTPS是两个常见盲点

如果hosts只写IPv4,而域名仍有可用AAAA记录,部分应用可能优先尝试IPv6。测试时应明确当前连接使用IPv4还是IPv6,不要为了省事长期禁用整个IPv6。确需测试IPv6,应写入服务器真实可用的IPv6地址并确认路由与防火墙。

直接访问新IP出现证书错误也不等于服务器配置失败。HTTPS证书通常签发给域名,TLS握手还依赖SNI。使用域名加hosts或 curl --resolve,才能在连接新IP的同时发送正确域名。

测试完成后必须恢复

hosts记录不会随DNS TTL自动过期。迁移结束后若忘记删除,电脑可能数月后仍访问已下线的服务器。清理临时行、再次刷新缓存,并通过公网DNS和正常浏览器验证最终解析。需要查询公网DNS、当前出口或站长工具时,可从极跃圈网址导航按用途选择。

排障记录至少保留修改时间、hosts原始与测试内容、系统解析结果、浏览器远程地址、新旧服务器日志以及代理状态。这样能明确问题发生在本机解析、应用连接还是服务器回源,而不是反复修改同一个文件。

常见问题(FAQ)

修改hosts需要重启电脑吗?
通常不必,但需清理相关DNS和应用缓存,并重新建立连接。
浏览器安全DNS会绕过hosts吗?
具体行为依浏览器与系统实现而定,排查时应关闭或统一DoH设置后对比。
代理会影响hosts吗?
如果由代理端远程解析域名,本机hosts可能不会参与。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600