VPN 基础

WireGuardAllowedIPs修改后的路由连通性

WireGuardAllowedIPs修改后的路由连通性 | shadowrocket

很多用户在调整WireGuard的AllowedIPs参数后,经常遇到预期外的路由连通性异常,shadowrocket要么指定走隧道的网段访问失败,要么本地局域网资源突然失联,大部分这类问题都不是隧道本身的传输故障,而是路由规则匹配出现了偏差。本文围绕WireGuard AllowedIPs修改后的验证全流程,从异常现象定位到逐项排查步骤,帮你理清路由连通性的判断逻辑,避开常见的配置误区。

修改AllowedIPs后的常见异常现象确认

刚改完WireGuard配置重启服务后,常见的异常表现分为几类:原本能正常访问的对端内网资源全部失联,所有公网流量直接绕过VPN隧道走本地运营商链路,甚至本地的局域网共享设备、网络打印机都无法正常连接。很多新手遇到这类问题第一反应是WireGuard服务启动失败,或者隧道本身被防火墙拦截,直接开始排查端口放行规则,反而浪费了大量时间。

实际上绝大多数这类异常,都是AllowedIPs生成的内核路由表和本地原有路由规则冲突导致的,只要先确认异常现象对应的流量走向,就能快速缩小排查范围。比如本地设备能ping通WireGuard对端的公网Endpoint地址,但所有走隧道的流量都丢包,基本可以确定是路由规则配置出错,不是底层网络连通性的问题。

网络设备:WireGuard Allow

运维人员正在逐项排查WireGuard参数修改后的路由连通性异常问题

配置前提的前置校验

开展WireGuard AllowedIPs修改后的验证之前,首先要确认隧道本身的基础连通性正常,先在本地终端执行wg show命令,查看对端对等点的最新握手时间,如果握手时间超过几分钟没有更新,说明隧道还没完成密钥协商,这时候排查路由连通性没有意义,要先检查两端的公钥、监听端口、Endpoint地址配置是否正确,本地和对端的防火墙有没有放行WireGuard的UDP端口。

接下来要确认你修改的AllowedIPs配置已经真正生效,很多用户修改完/etc/wireguard目录下的配置文件后,只执行了wg reload命令,部分旧版本的WireGuard不会自动同步更新AllowedIPs对应的路由条目,运行态的规则还是之前的旧配置,你看到的修改只是保存在文件里的内容,没有真正写入内核路由表,这时候完全重启WireGuard服务就能解决大半的隐形配置不生效问题。

逐项路由连通性验证步骤

第一步先验证隧道虚拟网段的连通性,直接ping WireGuard对端配置的虚拟接口IP,这个IP肯定属于两端AllowedIPs的覆盖范围,如果这个地址都ping不通,说明要么对端没有放行虚拟接口的ICMP请求,要么你修改AllowedIPs的时候不小心删掉了这个虚拟网段的对应条目,把对应网段补回AllowedIPs列表里就能快速恢复。

第二步验证你新添加到AllowedIPs里的目标业务网段连通性,比如你刚把办公内网的10.8.0.0/24网段加入AllowedIPs列表,就直接访问这个网段内的网关地址,shadowrocket同时在本地执行路由跟踪命令,查看数据包的下一跳是不是指向WireGuard对应的虚拟网卡。如果路由跟踪的下一跳跳到了本地物理网卡的运营商网关,说明你写的AllowedIPs网段掩码有误,比如误把/24写成/16,导致路由匹配优先级出现冲突。

第三步验证不在AllowedIPs覆盖范围内的本地网段连通性,比如你家里的局域网是192.168.3.0/24,你没有把这个网段加入AllowedIPs列表,正常情况下访问这个网段的流量应该直接走本地物理网卡,不会进入WireGuard隧道。如果这部分本地资源访问失败,说明你写的AllowedIPs条目范围过宽,小火箭共享账号网站把本地直连网段也包含进了隧道路由,系统会优先把发往本地网段的数据包送进隧道,自然找不到对应的本地设备。

常见配置误区排查

很多用户为了实现全局流量走VPN,直接把AllowedIPs设置为0.0.0.0/0,却没有在配置文件里设置对应的策略路由规则,也没有调整WireGuard的Table参数,结果生成的默认路由优先级和本地直连路由冲突,甚至把WireGuard隧道本身的UDP流量也逼进隧道里,形成路由环路,直接导致隧道断开。这类问题不能只靠修改AllowedIPs解决,要配合WireGuard的路由配置参数做调整。

还有不少用户只修改了本地节点的AllowedIPs列表,忘了同步更新对端对等点的AllowedIPs配置,比如本地新增了一个网段想要访问对端的服务资源,但对端的AllowedIPs里没有添加本地的虚拟网段条目,对端收到访问请求后,返回的回包找不到对应的路由条目,就会出现单向通或者完全不通的情况,这是跨两端配置场景下最容易踩的隐形坑。

整个WireGuard AllowedIPs修改后的验证过程,本质上就是核对系统内核路由表和你预设的流量转发规则是否完全匹配,不需要用到过于复杂的抓包工具,只要逐段测试不同网段的转发路径,就能快速定位连通性问题,不需要随意改动其他不相关的WireGuard参数,避免引入新的配置错误。

VPN 基础编辑组 | shadowrocket
VPN 基础编辑组
内容编辑

解释加密隧道、连接协议与出口地址,帮助理解 VPN 的工作方式。

查看更多文章
配置入门

从一个连接问题开始

遇到WireGuard对端端口变更相关问题,可从“同步批准的配置并检查相关网络规则”开始阅读。开放一个端口不等于认证与路由配置正确,需要结合具体环境判断。