内网服务连不上先查 DNS (Check DNS First When an Intranet Service Drops)
一句话:一个"突然连不上"的内网服务,多半不是服务挂了、也不是缺 VPN,而是本地 DNS 解析抖动。排查第一步永远是 Resolve-DnsName / nslookup,不是重启客户端,更不是先去搭代理。
发生条件
- 目标域名同时存在内网与公网两条 A 记录(split-DNS / 双 A 记录),校内 DNS 与公共 DNS 返回不同 IP
- 本地 DNS 由校园网 / VPN 下发,可能临时无响应或返回空
- 客户端此前一直正常,突然开始报连接错误
症状
getaddrinfo failed(Python)/ Could not resolve host(curl)/ NXDOMAIN,看起来像"服务不可达"。
关键误导点:把域名换成已知的内网 IP 去连端口,同样超时——于是很容易得出"内网断了、得挂 VPN"的结论。
这次的弯路(2026-09-15,ZWU 校园 AI 接口)
- 客户端突然连不上,手连内网 IP
10.70.61.183:443超时 → 判定"内网不可达" - 跑去远端服务器查
zju-connect(深信服 EasyConnect 的开源客户端,campus-vpn.service) - 发现该网关根本透不到这个服务:
jw.zwu.edu.cn200 / 0.44s,目标域名 25s 超时——它只下发了教务所在的10.10.66.x网段 - 转回本地一查:公共 DNS 一直能解析出公网 A 记录
61.153.150.54,直连该 IP 全链路正常
整条弯路源于第一步没做 DNS 判定。
根因
- 校园 DNS(
10.131.64.132)对该域名临时数分钟不返回记录,随后自行恢复 - 该域名实际有公网 A 记录
61.153.150.54,服务本身从未下线 - 内网那条记录
10.70.61.183当时不可达,进一步坐实了错误结论
判定方法(按顺序,30 秒出结论)
Resolve-DnsName <域名> # 系统解析结果
nslookup <域名> 223.5.5.5 # 公共 DNS 对照(AliDNS)
nslookup <域名> 114.114.114.114 # 注意:部分公共 DNS 会返回 NXDOMAIN,不代表域名不存在- 公共 DNS 能解析、本地不能 → 本地 DNS 的问题,换 DNS 或等恢复,与服务和 VPN 都无关
- 两边都解析不出 → 才去怀疑域名本身
- 想彻底绕开抖动:加一条 hosts 记录(需管理员)把域名钉到公网 IP
反面教训:不要用"解析不出 → 换 IP 直连 → 也超时"来证明服务不可达。这两步失败可能来自完全不同的原因(DNS 故障 + 内网路径不可达),叠加起来会指向一个错误结论。
顺带发现:WAF 下 SSE 只有响应头、没有 body
走公网入口时(该入口疑似经安恒 WAF),一次 SSE 请求返回 200 + Content-Type: text/event-stream,响应头 0.1s 就回来,但 body 一个字节都不来,120 秒读超时;补上 Origin / Referer / User-Agent 并放宽读超时后,同一请求正常返回。
因果未坐实(当时同时改了两个变量),但方向值得记:"响应头到了、body 不来"优先怀疑中间层 WAF 缓冲了 SSE,而不是服务端不产数据。
相关
- EasyConnect 掐死 53 端口 DNS 导致 Clash 节点全挂 (EasyConnect Port 53 Hijack Kills DNS and Clash Nodes) —— 另一种 DNS 被 VPN 客户端破坏的形态
- EZ4Connect 安装与配置——深信服校园网 VPN 替代客户端 (EZ4Connect Setup for Sangfor Campus VPN) —— 同族客户端的配置
- 校园导航 POI 功能化标注 (Campus Navigation POI Functional Annotation) —— 实际用到该接口的项目,其中"内网依赖 EasyConnect"的旧结论已按本笔记更正
本文归档于个人知识库 · 领域:CS & AI · 模块:04 Project_CS_AI/Network