不少用户在连接VPN之后经常遇到本地局域网设备无法访问的问题,比如连不上家里部署的NAS、找不到办公室的网络打印机、无法访问本地开发环境的测试服务,这类问题大多和VPN默认的全隧道转发逻辑有关,而VPN排除局域网规则就是专门针对这类场景设计的流量分流机制,本文围绕VPN排除局域网规则:工作原理展开,拆解其运行逻辑、配置前提和实际使用中的各类注意事项。
VPN排除局域网规则的核心运行逻辑
普通VPN连接建立之后,系统会自动生成优先级最高的默认路由条目,把所有对外的网络流量全部导向VPN虚拟网卡,经由加密隧道转发到远端的VPN服务器,再由服务器代为访问外部网络。这种全隧道模式下,原本应该发往本地局域网私网地址的数据包,也会被错误转发到加密隧道中,根本无法抵达本地网关,自然也就访问不到局域网内的各类设备。
VPN排除局域网规则:工作原理的核心,本质是在VPN生成的全隧道路由之外,额外生成一组优先级更高的明细路由条目,将所有符合RFC1918规范的私网地址段,全部指向本地的物理网卡而非VPN虚拟网卡,让发往局域网的流量直接走本地链路转发,完全不进入VPN的加密隧道。
配置排除规则的前置校验前提
在启用相关规则之前,首先要确认本地局域网的实际私网段范围,不少用户会手动修改路由器的默认网段,部分运营商的光猫也会使用非通用的私网段,如果规则预设的排除列表没有覆盖当前本地使用的自定义网段,排除功能就无法正常生效。
还要提前确认当前使用的VPN客户端的路由权限设置,部分强制全隧道模式的企业级VPN,默认会锁定路由表的修改权限,不允许用户自定义分流规则,这种情况下就算手动在系统路由表中添加排除条目,也会被VPN客户端的高优先级路由覆盖,完全无法起到分流效果。
规则生效的分步检查流程
连接VPN之前,先查看本地设备当前的路由表,确认所有本地私网段的下一跳都指向本地物理网卡对应的网关,没有被其他虚拟网卡的路由条目抢占优先级。
成功建立VPN连接之后,不要第一时间测试局域网设备的访问,先重新打开系统路由表核对所有私网段的下一跳地址,确认其指向的是本地物理网关,而非VPN远端服务器分配的虚拟隧道地址。
可以借助系统自带的路由追踪工具,追踪任意一个本地局域网内的设备IP,查看追踪路径的第一跳是否直接指向本地网关,如果第一跳就跳转到了VPN远端的节点地址,就说明排除规则没有被正常加载。
实际使用中的常见误区与故障定位
正常生效的排除规则下,所有访问本地局域网设备的流量都不会进入VPN加密隧道,直接通过本地物理链路完成转发,不会产生不必要的隧道转发开销。
很多用户误以为开启VPN排除局域网规则之后,所有本地流量都不会走VPN隧道,这个认知存在明显偏差,如果本地局域网内部本身部署了站点到站点的VPN设备,对应网段没有被加入排除列表的话,相关流量依然会被转发到VPN隧道中。
还有不少用户手动添加自定义排除网段之后,没有断开重连VPN客户端,绝大多数VPN的路由规则只会在连接建立的瞬间完成加载,连接存续期间修改的规则不会被实时调用,必须断开VPN重新连接之后,新的排除规则才能正常生效。
如果确认规则配置完全正确,但依然无法正常访问局域网设备,优先排查是否存在网段冲突问题,如果本地局域网的私网段和VPN远端内网的网段完全重合,路由规则会出现优先级冲突,只需要修改本地局域网的网段为不冲突的私网地址段,就能解决这类异常问题。
翻墙 
