连接排障

VPN排除局域网规则DNS配合实现分流配置方法详解

很多开启全局VPN的用户都会遇到类似问题:隧道连接成功后,远端加密网络访问正常,但本地家里的NAS、公司内网共享文件夹、局域网打印机等资源要么完全打不开,要么加载速度异常慢。多数人只在VPN客户端里添加了私有网段的路由排除规则,却忽略了DNS层面的联动配置,最终导致分流规则部分失效。本文详解VPN排除局域网规则配合DNS实现精准分流的完整方法,兼顾公网加密访问需求和本地局域网资源的正常调用。

局域网设备VPN排除局域网规则DNS配合 - shadowrocket

正确联动VPN排除规则与DNS配置,可同时实现公网加密访问和本地局域网资源的正常调用

配置前的基础原理梳理

不少用户的常见误区是,仅在VPN客户端中添加192.168.0.0/16、10.0.0.0/8、172.16.0.0/12这三个标准私有网段的排除规则,就认为所有局域网流量都不会走VPN隧道。但实际上如果VPN服务端下发的DNS服务器优先级高于本地局域网原有DNS,用户访问带.local、.corp等局域网专属后缀的设备域名时,解析请求会被发送到远端VPN的DNS服务器,这类公网DNS根本没有本地局域网的域名记录,自然会出现解析失败、无法访问的问题。

VPN排除局域网规则:DNS配合方式的核心逻辑是两层过滤机制,第一层在路由层面把所有私有网段的路由指向本地物理网卡的原有网关,保证局域网IP的流量直接从本地网卡转发,不经过VPN隧道;第二层在DNS层面做分流匹配,给局域网专属后缀的域名指定本地局域网的DNS服务器,其余公网域名走VPN分配的加密DNS,两层规则互相配合才能完全避免分流漏判的问题。

配置前的前置检查步骤

如果是Windows系统终端配置,先打开本地有线或无线网卡的属性面板,找到IPv4协议的属性页,记录当前局域网分配的DNS服务器地址,通常是家用路由器的网关地址,或是公司内网的域控服务器地址,不要直接用公共DNS替代本地局域网原有DNS。

如果是macOS系统终端配置,先打开系统设置的网络面板,点击当前在用的网络连接的「详细信息」选项,在DNS标签页里把现有DNS服务器列表截图留存,避免后续配置出错之后找不到可以恢复的原始配置参数。

如果是在主路由器上配置全局VPN客户端的场景,先登录路由器后台的局域网设置页,确认本地DHCP服务分配给终端设备的默认DNS地址,不要直接把VPN的远端DNS推送给所有内网终端,否则就算路由层面排除了局域网段,终端的DNS请求还是会被转发到VPN隧道里。

分步落地分流配置操作

首先配置路由层面的VPN排除规则,不管是系统级VPN客户端还是路由器上的VPN插件,先把三个标准私有IPv4网段全部加入排除路由表,标记这些网段的流量不经过VPN隧道,直接从本地物理网卡转发,不要漏加任意一个私有段,否则对应网段的局域网设备流量还是会走隧道转发。

接下来配置DNS配合规则,在支持DNS分流的VPN客户端设置页里,添加本地局域网的专属搜索域,比如家用场景常见的.local后缀、企业内网常见的.corp后缀,把这些后缀对应的解析请求指定为之前记录的本地局域网DNS地址,剩下所有没有匹配到这些后缀的公网域名,全部走VPN提供的加密DNS服务器完成解析。

如果使用的是不支持自定义DNS分流规则的轻量VPN客户端,也可以直接在本地网卡的DNS服务器优先级列表里,把本地局域网DNS的排序放到VPN下发的DNS前面,同时确认VPN的自定义路由列表里已经完整添加所有局域网排除网段,也能实现近似的分流效果,后续可以根据实际解析日志微调规则补全漏判场景。

配置完成后的验证方式

首先做路由规则验证,打开系统的命令提示符或者终端工具,traceroute局域网内任意一个设备的IP,比如本地路由器的网关地址,查看路由追踪的第一跳是不是本地局域网的原有网关,全程没有出现VPN远端节点的IP,就说明路由层面的排除规则已经正常生效。

然后做DNS解析验证,用nslookup工具查询局域网内带专属后缀的设备域名,比如内网打印机的printer.local,看返回的解析结果是不是局域网内打印机的内网IP,响应解析请求的服务器地址是不是之前指定的本地局域网DNS,没有走远端VPN的DNS服务器,就说明DNS配合规则已经正常工作。

最后做实际业务访问测试,打开对应的客户端访问本地NAS的管理页面、内网共享文件夹、智能家居网关后台,确认访问流畅度和没有开启VPN时没有明显差异,同时访问需要走加密隧道的公网站点,确认流量正常走VPN加密链路,没有出现公网流量泄露的情况。

常见配置误区排查

很多用户配置完成后发现部分局域网设备还是无法访问,排查的时候先检查本地系统的hosts文件,小火箭共享账号网站看有没有手动添加的自定义记录,指向的IP刚好属于被VPN默认路由覆盖的特殊网段,这种情况只需要把对应的IP单独加到VPN排除规则里就能解决。

还有部分用户手动把本地局域网DNS改成了公共DNS,就算路由排除规则配置完全正确,公共DNS也不可能存储本地局域网的私有域名记录,自然无法解析局域网设备域名,这种情况只需要把DNS地址改回本地局域网网关对应的原有地址就能恢复正常。

这套VPN排除局域网规则DNS配合方式不需要额外安装第三方软件,shadowrocket所有配置都基于系统和主流VPN客户端自带的功能,适配绝大多数标准VPN协议,不会破坏原有局域网的访问逻辑,也能保证指定公网流量的加密传输,适合同时有加密访问需求和本地局域网资源调用需求的普通用户和企业办公场景。

节点与线路编辑组(shadowrocket)
结合网络距离、运营商路径和时段变化,理解线路选择与测试方法。
查看更多文章
连接指南

从一个连接问题开始

遇到有线正常而无线异常相关问题,可从“固定节点和目标比较两种连接”开始阅读。不同时间和目标的对照可能混入线路变化,需要结合具体环境判断。