很多企业在分支站点部署IPsec VPN静态路由的时候,经常遇到内网资源能通但是域名解析异常,或者公网DNS请求误走VPN隧道导致解析失败的问题,本文就围绕VPN静态路由:DNS配合方式的实际落地场景,结合华为AR系列路由器、Windows终端、Linux服务器三类常见环境拆解可落地的配置逻辑、验证方法和排障思路,覆盖绝大多数中小站点的实际部署需求。
配置前的基础场景判定
首先要明确当前VPN静态路由的部署形态,最常见的是总部和分支之间走IPsec VPN,静态路由仅指向总部内网网段,没有配置全流量走隧道的默认路由,这种场景下DNS的分流需求是:内网业务域名走总部内网DNS解析,公网普通域名走分支本地运营商DNS解析。
很多管理员初期容易把所有终端的DNS都手动指向总部DNS,结果分支用户访问公网域名的时候,DNS请求会匹配到VPN静态路由之外的公网路由,要么被总部安全策略拦截,要么解析回包路径异常,直接导致公网网页打不开,免费梯子这类问题占VPN场景DNS故障的六成以上。

运维现场调试VPN静态路由场景下DNS分流配置的工作画面
三类主流VPN静态路由DNS配合实现路径
第一种是在VPN网关侧配置DNS分流策略,以华为AR6500系列网关为例,先在静态路由配置里明确仅总部10.0.0.0/8网段的路由下一跳指向VPN隧道接口,其余网段走本地运营商网关,从底层路由层面先把流量的转发边界划清。
接着在网关的DNS配置模块里,添加域名匹配规则,把企业内部的专属域名后缀比如*.corp.local,指定DNS服务器地址为总部内网的域控DNS,其余所有域名的解析请求直接转发到分支本地的运营商DNS地址,这种方案不需要改动终端配置,适合终端数量多的分支站点,后续调整规则也只需要在网关侧统一修改。
第二种是终端侧手动配置双DNS的适配方式,适合VPN静态路由是在终端虚拟网卡上配置的场景,比如员工用OpenVPN客户端接入总部,客户端仅推送10.0.0.0/8的静态路由到终端路由表,此时终端的IPv4属性里,首选DNS填总部内网DNS,备用DNS填本地家用运营商DNS,注意不要把备用DNS设置成公共DNS,避免内网域名解析请求被转发到公网泄露内网资源标识。
第三种是用DNS视图配合静态路由优先级的方案,适合总部有多条VPN专线对接不同分支的场景,在总部内网DNS服务器上配置DNS视图,把不同分支的内网域名解析请求,ProtonVPN官网返回对应分支网段的内网地址,同时在总部VPN网关的静态路由里给每个分支的网段配置独立下一跳,避免跨分支的DNS解析回包走错隧道。
分步验证配置有效性的操作方法
配置完成后第一步先做路由匹配校验,在终端上执行tracert访问一个内网业务域名的IP,确认前几跳的路径是走VPN隧道的虚拟接口,没有跳转到本地公网网关,确保内网相关的流量没有被错误转发到公网链路。
第二步做解析结果校验,先nslookup测试一个内网专属域名,看返回的IP地址属于总部内网网段,再nslookup测试一个公网普通域名,看返回的DNS响应源地址是本地运营商DNS的地址,不是总部DNS的公网出口地址,确认两类域名的解析路径都符合预设规则。
第三步做边界场景校验,断开VPN连接之后,测试内网域名直接解析失败,公网域名解析不受影响,重新拨号VPN之后,内网域名快速恢复解析,没有出现长时间等待的缓存异常问题,排除终端本地DNS缓存导致的配置不生效问题。
常见配置误区的定位思路
最常见的误区是把VPN静态路由的目标网段配置成了0.0.0.0/1,误以为只有部分流量走隧道,结果所有DNS请求都被转发到总部,分支本地的DNS配置完全失效,此时在网关路由表里查看静态路由条目,就能发现公网DNS的IP段已经被VPN路由覆盖,调整静态路由的目标网段为精确的内网业务网段即可修复。
第二个误区是没有配置DNS反向代理的安全限制,部分终端会自动发起DNS请求到未指定的DNS服务器,ProtonVPN官网导致内网域名的解析请求泄露到公网,此时可以在VPN网关的出口安全策略里添加规则,仅允许内网用户访问指定的总部DNS和本地DNS地址,拦截所有其他目的端口为53的出站请求。
整体来看VPN静态路由:DNS配合方式没有通用的最优解,所有配置都要贴合当前站点的路由规划和业务访问需求,不需要盲目套用全流量DNS走隧道的方案,也不能完全忽略内网域名的解析路径校验,才能在保障内网资源访问的同时,不影响公网用户的正常上网体验。


