服务公告

服务公告 > 常见问题 > 内网域名解析走错出口:hosts 与内网 DNS

内网域名解析走错出口:hosts 与内网 DNS

发布时间:2026-08-09 15:51
## 症状现象 内网服务用域名访问,解析出来的却是公网 IP,请求出了公网绕一大圈再回来,延迟高且行为怪异;更糟的情况是解析到一个已经失效的旧公网地址,直接不通。ping 域名看到的地址与内网真实地址对不上,问题出在解析顺序上。 ## 定位过程 系统的名字解析有优先级:先查本地 hosts 文件,再按解析配置依次查域名服务器。排查沿这条链走三步。第一步看 hosts:历史调试留下的记录把内网域名钉在某个公网 IP 上,机器换过环境后这条记录变成毒药。第二步看解析配置:域名服务器指向公网公共 DNS 时,它根本不知道内网域名的存在,按公网权威记录返回公网地址,这正是内网域名必须配内网 DNS 的原因。第三步验证归属:分别向不同服务器查同一域名,比对返回。 ``` grep -v "^#" /etc/hosts cat /etc/resolv.conf dig @192.168.10.10 git.internal +short dig @223.5.5.5 git.internal +short ``` ## 解决方法 清理 hosts 里的过期内网记录,规范用法是临时调试用完即删。域名服务器改为内网 DNS,或在公共 DNS 之外补充内网解析的搜索域配置。多层缓存要注意:系统解析缓存与浏览器缓存都可能存旧结果,改完配置后清缓存再验证。验证以 dig 指定内网 DNS 查询返回内网地址为准。 ## 预防建议 内网域名用专属后缀命名,与公网域名彻底分离,公共 DNS 永远查不到它,配置错误立即暴露而不是静默走错。机器初始化模板统一写入内网 DNS 配置,顺云云服务器批量部署时用镜像市场固化解析配置,减少逐台漂移。 排查解析问题的通用心法再提炼一次:先确认问题机器的解析来源,hosts、本地缓存、配置的服务器,一层层看它到底问了谁;再分别向各来源查询同一域名,看各自返回什么。两个动作做完,解析走错的路径完全暴露。把常用查询命令做成一键脚本,排查从十分钟缩到一分钟。新建机器的解析配置纳入基线检查,环境再怎么变,解析来源始终受控。