跳转至

内网 DNS 解析失败决策树:外网能上但打不开内部 OA 怎么查

我在企业办公网现场见过不止一次:某部门多人同时反馈"微信能正常聊、网页也能开,就是内部 OA 系统打不开"。第一反应往往是"OA 服务器宕了"或者"OA 前端出 bug",结果运维扑过去查半天服务器,最后发现服务器根本没毛病——是终端解析不出内网域名。

这类故障最坑的地方在于:它长得像服务器故障,其实根子在终端的 DNS 配置。下面这张决策树专门处理"外网正常、内网域名不通"这一类,避免你一上来就误判。

60 秒判断:是不是 DNS 问题

先别急着动服务器。用一句话自测:

外网(百度、微信网页版、github)都能开,唯独公司内网域名(oa.xxx.com、git.xxx.com)打不开 → 高度怀疑 DNS 下发错误。

如果连外网也打不开,那不是本文范围,先查网关和物理链路。

排障决策树

用户反馈:OA 网页打不开,但外网正常
  │
  ├─ 先确认范围
  │    ├─ 只有一个人打不开?→ 多半是他本机 DNS 缓存/配置问题(看本机)
  │    └─ 多人同时打不开?  → 大概率是 DHCP 下发了错误 DNS(看 DHCP/网络)
  │
  ├─ ping OA 的 IP 地址(用 IP 直连,绕开域名)
  │    ├─ IP 能通、域名不通 → 坐实是 DNS 解析问题(不是服务器挂了)★入口最常见
  │    └─ IP 也不通        → 不是 DNS,去查 OA 服务器/网络连通性(本文不展开)
  │
  ├─ ipconfig /all 看"DNS Servers"一行
  │    ├─ 显示的是公网 DNS(114.114.114.114 / 8.8.8.8)?
  │    │     → 终端错拿了外网 DNS,内网域名自然解析不出 → 切回内网 DNS
  │    └─ 显示的确实是内网 DNS?
  │          ├─ 但 nslookup oa.xxx.com 仍失败 → 内网 DNS 本身没这条记录/转发坏了
  │          └─ nslookup 正常            → 是终端缓存作怪,flushdns 即可
  │
  └─ 根因定位(多人场景)
       ├─ 私接小路由器抢 DHCP?→ 关掉它,保留唯一受控 DHCP
       ├─ Option 43 配错下发外网 DNS?→ 修正作用域选项
       └─ 终端残留旧网络 DNS?→ 释放重获 / 组策略固化

决策树的核心就一句:先分清"服务器挂了"还是"域名解析不出",再决定去查服务器还是查 DNS 配置。前面那步 ping IP 是整个判断的支点——IP 通说明服务器活着,问题立刻收敛到 DNS。

三步定位命令

按这个顺序跑,基本能在五分钟内定性。

第一步:确认是不是只卡在域名上

ping oa.xxx.com      :: 用域名 ping,大概率超时或解析失败
ping 10.20.30.40     :: 换成 OA 服务器的真实内网 IP,IP 能通 → 坐实 DNS 问题

说明:用 IP 直连绕开了域名解析。IP 能通、域名不通,就等于证明了"服务器活着,是名字查不出来"。

第二步:看终端到底拿到了哪个 DNS

ipconfig /all

找"DNS Servers"那一行。正常应该显示公司内网 DNS(例如 10.20.30.10)。如果显示的是 114.114.114.114、8.8.8.8 或手机热点的 DNS,那就是错拿了外网 DNS。

第三步:针对性验证解析

nslookup oa.xxx.com                       :: 用系统默认 DNS 查,失败说明默认 DNS 不认内网域名
nslookup oa.xxx.com 10.20.30.10           :: 指定内网 DNS 查,能通 → 证明内网 DNS 本身没问题,是终端没用它
ipconfig /displaydns                      :: 看系统缓存里 oa.xxx.com 是不是停在了错误记录
ipconfig /flushdns                        :: 清缓存后重试,排除"旧缓存作怪"

一键修复脚本(应急用,复制即用)

下面这段 PowerShell 在靠 DHCP 下发 DNS 的终端上最稳妥:释放旧地址、重获新地址(拿到正确的内网 DNS),再清一次缓存。

# 一键切回内网 DNS(应急脚本,需以管理员运行)
# 仅适用于"DHCP 自动获取 DNS"的终端;固定 IP 环境请勿直接用,见下文说明
Write-Host ">> 释放当前 IP 与 DNS 租约..." -ForegroundColor Cyan
ipconfig /release | Out-Null
Write-Host ">> 重新获取地址(含正确的内网 DNS)..." -ForegroundColor Cyan
ipconfig /renew   | Out-Null
Write-Host ">> 清空 DNS 缓存..." -ForegroundColor Cyan
ipconfig /flushdns | Out-Null

# 校验结果
$dns = (Get-DnsClientServerAddress -AddressFamily IPv4 | Where-Object { $_.ServerAddresses } | Select-Object -ExpandProperty ServerAddresses) -join ", "
Write-Host ">> 当前 DNS 服务器: $dns" -ForegroundColor Yellow
Write-Host ">> 请再次尝试打开内部 OA;若仍失败,检查 DHCP Option 43 下发是否正确。" -ForegroundColor Green

诚实说明:这段脚本只做"释放/重获 DHCP + 清缓存",它不在任何 HA/网络设备上执行,也不模拟你的网络。它解决的是"终端残留错误 DNS"这一类;如果根因在 DHCP 下发本身(多人同时中招),脚本治标不治本,必须去 DHCP 侧修(见下节)。

固定 IP 环境的机器不要跑上面的 /release /renew,那会把静态配置冲掉。这类机器应改用组策略或手动在"网络连接→IPv4→DNS"里指定内网 DNS,再用 Set-DnsClientServerAddress 固化:

# 固定 IP 终端:直接指定内网 DNS(示例,按你内网实际地址改)
Set-DnsClientServerAddress -InterfaceIndex (Get-NetAdapter | Where-Object { $_.Status -eq 'Up' }).ifIndex `
  -ServerAddresses ("10.20.30.10","10.20.30.11")

治本:让"错的下发"不再发生

单台修完只是止血。多人同时中招,根因一定在 DHCP 或网络结构,按这三层收口:

层级 动作 防的是什么
网络层 全网只允许一台受控 DHCP 服务器;关掉私接小路由器的 DHCP 私接设备抢答、把外网 DNS 塞给终端
配置层 DHCP 作用域 Option 43 固定下发内网 DNS;域环境用 GPO 强制指定 Option 配错把公网 DNS 当内网下发
终端层 固定 IP 机器做 DNS 基线检查,纳入装机模板 单台终端残留旧网络 DNS

一个常被忽略的点:DHCP Option 43 不只是给 AP/电话用的。很多企业在 Option 43 里顺手写了 DNS,结果写成了外网地址,终端拿到就错。改 Option 43 前先 ipconfig /all 抓一台正常的终端,照着它"对的那行"去配,别凭记忆填。

决策速查表(拿来即用)

现象 第一反应(误判) 真实根因 该去查哪
外网正常、OA 打不开 OA 服务器宕机 终端 DNS 错拿外网 本机 ipconfig /all
单人打不开、别人正常 OA 前端 bug 本机 DNS 缓存/残留 flushdns + 重获 DHCP
多人同时打不开 OA 系统挂了 DHCP 下发错误 DNS DHCP Option 43 / 私接路由
IP 能通域名不通 网络不通 域名解析失败 DNS 服务器与转发
IP 也不通 一定是 DNS 其实是服务器/链路 OA 服务器本身

这张表就是"最容易被误判成什么"的落地版——前五条故障里,八成工单一开始都被报成了"OA 坏了",按表反着查能省掉一大半无效排查。

常见问题(FAQ)

Q:为什么外网正常、偏偏内网 OA 打不开?
A:内网 OA 用的是公司内网域名(如 oa.corp.local),只有内网 DNS 服务器认得怎么解析;公网 DNS(114、8.8.8.8)根本不认这个域名。终端一旦错拿公网 DNS,外网照常、内网域名全失效,表现就是"微信能聊、OA 打不开"。

Q:ipconfig /all 和 /displaydns 看哪个?
A:/all 看"终端当前从 DHCP 拿到了哪个 DNS 服务器",用来判断下发对不对;/displaydns 看"系统已缓存了哪些解析结果",用来排查旧缓存。排障第一步看 /all 确认 DNS 服务器本身,第二步才清 /flushdns 缓存。

Q:一键修复脚本会不会把正常的网络配置搞坏?
A:脚本只做释放并重获 DHCP、把 DNS 切回指定内网服务器,不删驱动、不改注册表。但固定 IP 环境本就不靠 DHCP 下发 DNS,"重获 DHCP"反而可能清空静态配置,这种环境应改用组策略或手动指定,脚本仅作应急参考。

Q:为什么 DHCP 会下发错误的 DNS?
A:常见三种:① 网络里混入了非受控 DHCP 服务器(如私接小路由器)抢答;② 多 DHCP 作用域的 Option 43/51 配错,把外网 DNS 当内网下发;③ 终端曾连过别的网络,残留旧 DNS 配置没清。根因通常在 DHCP 侧,不是终端侧。

Q:修复完怎么防止再犯?
A:三层固化:网络层确保只有受控 DHCP 能下发、关掉私接路由器的 DHCP;配置层用 Option 43 固定下发内网 DNS、必要时域控 GPO 强制指定;终端层对固定 IP 机器做基线检查。治标是切回 DNS,治本是让"错的下发"根本不发生。

延伸阅读与参考

本文是面向运维排障的决策资产,外部链接仅作权威概念出处;具体命令以你内网实际地址与作用域为准。

相关教程与工具

本文故障案例来自一线办公网现场,作为判断依据的可信锚点;具体命令以你内网实际地址与作用域为准。