现在很多企业部署的远程接入VPN都同时支持IPv4和IPv6双栈转发,不少运维人员完成基础部署后,蜜蜂经常遇到单栈域名解析失败、DNS请求泄露到隧道外的隐性问题,本文从实际运维操作场景出发,梳理VPN双栈DNS解析配置检查的全流程实操步骤,同步说明常见故障的排查思路,帮大家避开常规配置误区,保障双栈接入场景下的域名解析链路符合预设规则。
配置前置条件核验
首先要确认VPN服务端本身已经开启双栈转发支持,不管是开源的IPsec、OpenVPN方案还是商用的SSL VPN系统,都要先在服务端后台确认IPv4和IPv6的虚拟地址池已经正常启用,没有出现地址池耗尽、路由规则冲突的运行报错,这是后续DNS配置能正常生效的基础前提。
接下来要确认待测试的接入终端本地网络本身支持对应栈的访问能力,不要在仅支持IPv4的本地家庭网络环境里,强制要求VPN下发IPv6 DNS规则做验证,这种场景下本身就会出现IPv6解析请求无响应的冲突,很多新手运维容易忽略这一步,直接反复修改VPN服务端配置,反而浪费大量排查时间。

运维人员现场开展VPN双栈DNS解析配置的核验排查工作
分栈DNS解析配置逐项检查
首先检查VPN服务端的DNS下发规则,要分别确认IPv4地址池对应的DNS服务器地址,和IPv6地址池对应的DNS服务器地址,都填写了内网指定的递归DNS地址,不要随意混用公网DNS和内网DNS的条目,避免不同栈的解析请求被路由到预设之外的链路。
完成服务端核验之后,在已经成功接入VPN的终端上,分别查看IPv4和IPv6两个网络接口下的DNS服务器列表,蜜蜂加速器Windows系统可以用ipconfig /all指令查询,Linux和macOS系统可以用ipconfig或者对应的网络状态指令查看,确认VPN虚拟网卡的DNS条目优先级高于本地物理网卡的DNS条目,不然本地原有DNS会优先接管解析请求,出现双栈下的DNS泄露问题。
这里要注意多数现代终端系统默认会开启DNS并行查询机制,也就是同时向所有已配置的DNS服务器发送解析请求,哪怕其中一个栈的链路不通也会尝试发起请求,所以配置检查的时候要把非VPN指定的DNS条目从虚拟网卡的配置列表里剔除,避免并行查询带来的非预期解析行为。
双栈解析有效性验证实操
验证的时候要分别选择仅返回A记录的IPv4专属域名、仅返回AAAA记录的IPv6专属域名,还有同时支持双栈的常用内网域名做三轮测试,用nslookup或者dig指令分别指定IPv4的DNS服务器和IPv6的DNS服务器发起解析请求,不要直接用浏览器访问做验证,浏览器本身的缓存和预解析机制会干扰结果判断。
测试的时候要观察解析返回的IP地址是不是属于VPN内网分配地址段对应的可访问范围,如果解析返回了公网非VPN链路下的地址,就说明对应栈的DNS配置没有生效,解析请求绕开了VPN隧道,需要回溯检查对应栈的下发规则是否存在遗漏。
常见配置误区与故障排查
最常见的配置误区是运维人员只配置了单栈的DNS下发规则,却开启了VPN的双栈地址分配,这种场景下没有配置DNS的那个栈的终端会自动获取本地公网的DNS服务器地址,直接导致该栈的DNS请求泄露到VPN隧道之外,不符合企业的内网访问安全规范。
还有一种常见故障是部分老旧版本的VPN客户端不支持双栈DNS的同时下发,哪怕服务端配置完全正确,客户端也只能识别其中一个栈的DNS规则,这种时候可以先升级客户端到官方最新的稳定版本,蜜蜂加速器再重新做接入测试,不要强行修改终端本地的系统DNS配置,容易引发后续的系统权限冲突问题。
如果排查完所有配置之后还是出现间歇性解析失败的问题,可以分别在VPN服务端和终端侧开启对应接口的抓包,观察DNS请求的进出路径,确认双栈的DNS请求都完整走在VPN隧道的封装报文里,没有被自定义路由规则转发到物理网卡的公网链路上。
整个VPN双栈DNS解析配置检查的流程不需要依赖特殊的第三方工具,用操作系统自带的网络指令就可以完成全流程核验,每次调整完配置之后都要重新做双栈的分别验证,不要只测试单栈就确认配置生效,避免留下隐性的网络访问风险。
蜜蜂加速器APP官网入口 
