不少搭建双路由器网络的家庭用户、小型工作室运维人员,经常会遇到接入VPN后出现异常的问题:有的能连上VPN但打不开对端内网的服务器资源,有的甚至直接断流,连本地的路由器管理后台都无法访问,这类故障绝大多数都和IP地址段冲突有关。很多人排查故障时只盯着VPN客户端的参数设置,完全忽略了双路由嵌套架构下的三层网段重叠问题,走了很多不必要的弯路,下面就从现象确认到分步校验,给出可直接落地的冲突排查实操思路。
第一步:确认双路由环境下VPN冲突的典型现象
很多用户遇到故障第一反应是VPN节点本身出问题,其实双路由场景下的地址冲突有非常明确的识别特征,你可以先断开VPN,测试本地所有设备的跨路由访问是否正常,比如子路由下的手机能不能正常访问主路由下的NAS存储,如果本地网络的所有互访功能完全正常,一启动VPN客户端就出现要么连不上VPN服务器,要么连上之后既不能访问VPN对端的内网资源,也不能正常加载公网页面,就基本可以锁定是地址冲突类故障,而非VPN账号本身的权限问题。
还要区分普通单路由场景的VPN冲突和双路由场景的差异,单路由下的冲突一般只是VPN分配的虚拟网段和本地路由网段重叠,双路由场景下会出现三层重叠风险:主路由LAN网段、子路由LAN网段、VPN虚拟网段这三个任意两个重叠,都会触发不同程度的系统路由规则紊乱,很多用户之前只修改了主路由的网段,没注意子路由的默认网段,排查半天找不到故障根源。
分层校验三个核心网段的配置前提
排查的第一步不需要动VPN相关设置,先把双路由各自的LAN口地址、子网掩码记录下来,正常来说双路由如果是二级路由模式,子路由的WAN口是接在主路由的LAN口下的,那么子路由本身的WAN口会从主路由的DHCP地址池拿到一个属于主路由网段的地址,这时候你需要分别登录两个路由器的管理后台,查看它们的LAN侧默认网段参数。
很多主流家用路由器的出厂默认LAN网段都是192.168.1.0/24,如果用户搭建双路由的时候没有修改过子路由的LAN地址,就会出现主路由LAN是192.168.1.0/24,子路由LAN也是192.168.1.0/24的情况,这时候哪怕你不接入VPN,本地网络也会出现莫名的IP分配异常,接入VPN之后如果VPN对端的内网刚好也是192.168.1.0/24,三层网段完全重叠,操作系统的路由表根本不知道该把访问请求发往本地哪一层路由,还是VPN隧道。
这一步操作的预期结果是三个网段完全不重叠,比如主路由用192.168.1.0/24,子路由改成192.168.2.0/24,提前把两个本地网段错开,就能排除一半以上的双路由VPN冲突隐患,这里要注意不要把网段改得太偏,部分老旧VPN客户端不支持非常规C类私网地址的路由转发,不要随便用10.0.0.0/8的大段做本地LAN网段。
路由表定向排查的实操步骤
改完本地双路由的网段之后,你可以启动VPN客户端,正常连接之后打开本地设备的路由表,Windows系统用route print命令,macOS和Linux系统用route -n命令,查看系统自动生成的路由规则。如果发现有两条目标地址完全一致的路由条目,一条指向本地的物理网卡网关,另一条指向VPN的虚拟网卡网关,就说明地址冲突确实发生了,系统会优先选用路由优先级高的条目,大概率会把本该发往VPN对端的请求发到本地内网,导致VPN访问失败。
这时候不要直接手动删除路由条目,手动修改的规则重启VPN客户端之后就会自动恢复,正确的做法是登录VPN服务端的管理后台,修改VPN客户端分配的虚拟地址池,把地址池的网段改成和本地两个路由LAN网段都不重叠的新段,比如本地已经用了192.168.1.0/24和192.168.2.0/24,VPN地址池就可以设置成192.168.18.0/24,这样三个网段完全独立,路由表就不会出现重复的目标条目。
常见排查误区规避
很多用户遇到冲突之后,会直接把子路由改成AP模式,以为这样就去掉了一层路由,不会再有地址冲突,其实AP模式下子路由的DHCP服务是关闭的,所有设备都从主路由拿地址,要是VPN的网段刚好和主路由网段重叠,冲突还是会发生,这种改法只是简化了网络架构,没有从根源解决网段重叠的问题。
还有部分用户为了图方便,直接在VPN客户端里开启了“全流量走隧道”的强制规则,遇到冲突的时候反而会把本地访问双路由后台的请求也导去VPN隧道,导致自己连路由器管理后台都打不开,遇到这种情况可以先断开VPN,把设备直接接在主路由的LAN口上,再登录后台修改配置,不需要重置路由器。
最后排查完成之后,要分别测试子路由下的设备、主路由下的设备接入VPN之后的访问效果,既要验证VPN对端资源的可访问性,也要验证本地双路由之间的设备互访没有受影响,避免改完配置解决了VPN的问题,反而把本地内网文件共享、设备投屏这类常用功能弄失效。


