很多用户在启用全局VPN之后,经常遇到访问家里的NAS、公司内网的共享打印机、本地监控摄像头失败的问题,红星本质上是VPN默认接管了所有流量,连局域网段的请求也被转发到了远端VPN节点,而单独配置VPN排除局域网规则之后,还经常出现域名解析异常,要么内网域名打不开,要么外网走VPN的域名解析出错,这时候就需要用到VPN排除局域网规则:DNS配合方式来做完整的链路配置,既保证公网指定流量走VPN通道,又能正常访问所有本地局域网资源。
配置前的必要前提校验
首先要先明确自己当前所在局域网的网段范围,科学上网不能直接照搬网上通用的192.168.1.0/24规则,部分企业或者自建局域网会用10.0.0.0/8、172.16.0.0/12这类保留私网段,你得先在自己设备的本地网卡属性里,查到当前分配的IP地址对应的完整私网网段,把所有需要排除的局域网段都列出来,避免漏配。
还要先确认你的VPN客户端本身支持自定义排除路由规则,部分轻量化的消费级VPN客户端只提供全局分流、仅指定应用走VPN的选项,科学上网没有手动添加排除网段的入口,这类客户端暂时没法完整实现VPN排除局域网规则:DNS配合方式的配置,你需要先切换到支持自定义路由的客户端版本,或者用系统级的VPN配置界面来操作。
分步配置实操流程
第一步先在VPN客户端的分流规则里,添加所有提前梳理好的局域网排除网段,设置这些网段的所有流量都不经过VPN隧道,直接走本地物理网卡转发,这一步是基础的路由层面排除,保证访问局域网设备的数据包不会被发往远端VPN服务器。

配置VPN排除规则前先确认本地私网段与客户端规则支持状态,保障内网设备正常访问
接下来就是核心的DNS配合配置部分,你不能直接把全局DNS都改成VPN节点提供的DNS,也不能完全保留本地运营商的DNS,要做分流DNS设置:把所有内网专属的域名后缀,比如公司内网的*.corp.local、家里自建的*.lan这类域名,指定用本地局域网的DNS服务器来解析,剩下的所有公网域名,才走VPN分配的DNS服务器解析。
如果你用的是Windows系统,不需要额外安装第三方工具,直接在系统的高级TCP/IP设置里,添加多DNS后缀的匹配规则,把内网域名的解析请求定向到本地网关地址,其余请求默认走VPN虚拟网卡的DNS地址;如果是macOS或者Linux系统,可以在系统的DNS配置目录下添加匹配规则,不需要改动VPN客户端的全局设置。
这里要注意不要把局域网的DNS服务器地址本身也放进VPN排除规则里,不然本地DNS的请求还是会被转发到VPN远端,导致内网域名完全解析失败,很多用户配置完路由之后还是打不开内网设备,大多是漏了这一步的路由放行。
配置完成后的校验与故障定位方法
配置完所有规则之后,先不要直接访问业务系统,先做分段测试:首先ping你本地局域网里的NAS设备的固定IP地址,如果能正常通,科学上网说明路由层面的排除规则已经生效,问题只可能出在DNS配置部分。
接下来测试内网域名的解析结果,用系统自带的nslookup工具查询内网专属域名,看返回的IP是不是局域网内的私网地址,如果返回的是公网IP或者解析超时,说明内网DNS的分流规则没有生效,你需要检查内网域名的后缀匹配规则有没有写错。
最后测试公网走VPN的域名解析,查询普通公网域名的解析结果,确认返回的是VPN节点分配的DNS解析地址,没有出现本地运营商DNS泄露的问题,这样就完成了VPN排除局域网规则:DNS配合方式的全链路校验。
常见配置误区规避
很多用户为了省事,直接把所有私网保留段都全部加到VPN排除规则里,这种操作在你连接多个不同局域网的时候很容易出现冲突,比如你远端VPN节点的内网刚好也用了192.168.1.0/24网段,这时候你本地就完全没法访问VPN对端的同网段资源,正确的做法是只把你当前实际使用的本地局域网网段加进去,不要批量添加所有私网保留段。
还有不少用户配置DNS的时候,直接把本地DNS地址放在VPN虚拟网卡的DNS列表第一位,这种操作会导致所有公网域名都先请求本地运营商DNS,完全绕过VPN的DNS通道,出现DNS泄露的问题,违背了原本使用VPN的流量规划需求。
另外不要随意关闭VPN客户端自带的DNS接管功能,部分用户觉得手动改系统DNS更方便,直接禁用了客户端的DNS管理,这种操作会导致VPN重启之后,之前配置的分流DNS规则被系统默认设置覆盖,之前调试好的排除规则也会随之失效,每次调整VPN配置之后,最好重新跑一遍之前的分段校验流程,避免规则被意外重置。
红星加速器 

