Windows端PiVPN搭建的OpenVPN出现ERR_NAME_NOT_RESOLVED解析故障
OpenVPN环境下Windows自定义域名解析异常排查
已确认的运行基线
- PiVPN部署的OpenVPN服务链路连通正常,可顺畅访问家庭内网设备
- 服务端已配置DNS与路由推送规则,指定FritzBox路由器(192.168.178.1)为内网DNS服务器,对应配置片段:
push "route 192.168.178.0 255.255.255.0" push "dhcp-option DNS 192.168.178.1"
异常现象
- Windows客户端访问内网自定义域名时触发
ERR_NAME_NOT_RESOLVED错误,Chrome、Edge、Opera、IE等所有桌面浏览器均无法加载对应页面 - 同VPN配置下,Android客户端、WSL中的Ubuntu子系统均可正常完成自定义域名解析
- 已做排查操作:将VPN虚拟网络接口的跃点数调整为1,问题无改善
- 特殊测试结果:Windows命令行下执行
nslookup 自定义域名可成功返回正确的IP地址,但系统层面应用无法获取解析结果
核心原因与对应解决步骤
该异常的核心矛盾点在于:nslookup工具的解析逻辑是直连指定DNS服务器发请求,完全绕过Windows系统自带的DNS缓存、解析调度策略、网络接口安全规则,因此nslookup能正常返回结果不代表系统层面的应用能拿到正确的解析地址。
1. 强制刷新系统DNS缓存并重启DNS客户端服务
Windows的DNS Client服务(对应服务名Dnscache)会缓存历史解析结果,甚至会缓存公网DNS针对内网域名的“不存在”返回结果,直接拦截后续的合法解析请求。
操作方式:
- 以管理员身份打开命令提示符,执行缓存刷新命令:
ipconfig /flushdns - 如果刷新后仍然异常,重启DNS缓存服务:
net stop dnscache net start dnscache
2. 关闭Windows智能多宿主名称解析功能
Windows默认会对所有启用的网络接口(物理网卡、VPN虚拟网卡)的DNS服务器并行发送域名查询请求,优先采信最先返回的结果。由于物理网卡连接的公网DNS会第一时间返回“该内网域名不存在”的响应,系统会直接丢弃后续来自VPN下发的内网DNS的正确解析结果,不会等待内网DNS的响应。
操作方式:
- 打开注册表编辑器,定位到路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters - 新建两个32位DWORD值,分别为
DisableSmartNameResolution(数值设为1)、DisableParallelAandAAAA(数值设为1) - 重启系统使配置生效
3. 修正VPN虚拟网卡的网络配置文件类型
Windows会对不同网络配置文件(公用/专用)施加不同的DNS访问限制:如果VPN虚拟网卡被识别为“公用网络”,系统会默认拦截该接口下发的私网DNS查询结果。
操作方式:
- 打开Windows设置 → 网络和Internet → 高级网络设置
- 找到OpenVPN对应的Wintun/TAP虚拟网卡,将其网络类型修改为“专用网络”
4. 关闭浏览器内置的安全DNS(DoH)功能
当前主流Chromium内核浏览器默认开启内置DoH加密解析功能,会完全绕过系统层面的DNS配置,直接向公共DoH服务器发送查询请求,自然无法获取内网自定义域名的解析结果。
操作方式:
- 在浏览器的安全设置中,找到“安全DNS”选项,将其设置为“使用当前系统DNS服务”,或直接关闭该功能
- 可通过访问
chrome://net-internals/#dns路径,一键清理浏览器本地的DNS缓存
内容的提问来源于stack exchange,提问作者Jonaswinz
相关产品推荐
相关产品推荐

