MotionPro VPN 隧道内的 DNS 解析机制与缓存管理
VPN 下有两套 DNS
连接 MotionPro VPN 后,你的设备上会同时存在两套 DNS 解析体系:
| 解析目标 | 使用哪套 DNS | DNS 服务器来源 |
|---|---|---|
内网域名(如 portal.example.edu.cn) | VPN 隧道内的 DNS | AG 网关下发的 DNS 服务器 |
公网域名(如 www.baidu.com) | 本地网络的 DNS | 家里路由器 / 运营商 DNS / 公共 DNS |
为什么要分开?因为内网域名只有组织内部的 DNS 服务器能解析——公网 DNS 服务器根本不知道 portal.example.edu.cn 的 IP 地址(它可能是一个仅在内网有效的私有 IP)。
DNS 下发流程
L3VPN 隧道建立后,AG 网关会向客户端下发以下 DNS 参数:
- DNS 服务器地址:通常是内网 DNS 服务器的 IP(如
10.0.0.53) - DNS 搜索域:内网的 DNS 后缀(如
example.edu.cn)
客户端收到这些参数后:
- 在虚拟网卡上配置 DNS 服务器
- 把 VPN DNS 服务器添加到系统 DNS 列表
- 应用 DNS 搜索域策略
Windows 的 DNS 处理
Windows 使用智能 DNS 客户端(Smart DNS Client)机制:
- 通过路由表判断目标域名对应的 IP 网段
- 如果目标 IP 在 VPN 路由范围内 → 用 VPN DNS 解析
- 如果目标 IP 在公网范围 → 用本地 DNS 解析
这种机制在 Split Tunnel 模式下工作良好,但在 Full Tunnel 模式下会有不同表现。
macOS 的 DNS 处理
macOS 通过 Network Extension 处理:
- VPN 接口有独立的 DNS 配置
- 系统会根据网络服务顺序决定 DNS 查询顺序
- Split Tunnel 下内网域名走 VPN DNS,公网域名走本地 DNS
常见 DNS 问题
问题 1:VPN 显示已连接,但内网域名解析不了
原因:DNS 缓存里保存了错误的解析记录(比如之前解析公网 DNS 时返回的结果)。
解决:清空 DNS 缓存
# Windows(命令提示符,管理员权限)
ipconfig /flushdns
# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
清空后重新尝试访问内网域名。
问题 2:连接 VPN 后公网域名变慢
原因:Windows 的智能 DNS 客户端可能偶尔会先走 VPN DNS 尝试解析公网域名,失败后才回退到本地 DNS,导致额外延迟。
解决:确保网关的 DNS 搜索域策略正确配置(网关端问题,联系 IT);或断开 VPN 后检查本地 DNS 是否有问题。
问题 3:多个 VPN 客户端的 DNS 冲突
原因:系统里同时装了多个 VPN 客户端(如 MotionPro + OpenVPN + Cisco AnyConnect),各自下发 DNS 参数,可能导致 DNS 查询走到错误的接口。
解决:
- 同时只连接一个 VPN
- 断开所有 VPN 后手动清空 DNS 缓存再重新连一个
- 必要时卸载不用的 VPN 客户端
DNS 主机映射(DNS Hostmap)
部分 AG 网关支持 DNS Hostmap 功能——在网关端维护一个静态域名到 IP 的映射表,下发给客户端。这可以用于:
- 给内网服务器分配易记的域名
- 解决某些内部系统不支持 DNS 动态更新的问题
在 MotionPro 客户端上,DNS Hostmap 记录会被写入系统的 hosts 文件或 VPN 专用的 DNS 缓存中。