远程办公

WireGuardAllowedIPs配置规则及连接故障

很多初次接触WireGuard的用户配置完密钥、端口、对等节点信息后,经常遇到要么完全连不上对端节点,要么部分内网资源、公网网站无法正常访问的问题,这类故障里超过半数都和WireGuard AllowedIPs与连接故障的关系直接相关,很多用户误把这个参数当成允许接入的IP白名单,实际上它是WireGuard内核模块生成路由规则的核心触发项,配置偏差会直接打乱本地数据包的转发逻辑。

AllowedIPs的基础配置规则和路由映射逻辑

很多用户对AllowedIPs的第一个误解,是把它当成允许对端设备访问本地的IP过滤规则,实际上这个参数的作用是声明当前对等节点对应的路由网段,操作系统会自动生成指向WireGuard虚拟网卡的路由条目,所有目的IP落在AllowedIPs声明网段里的数据包,都会被封装加密后发往对应的对等节点。

网络设备:WireGuard Allow

运维人员正在调试VPN路由规则,排查AllowedIPs配置偏差引发的连接故障

如果只需要通过WireGuard访问对端的内网办公网段,只需要把AllowedIPs设置为对应办公内网的CIDR地址段,比如192.168.9.0/24,此时本地其他公网流量还是走原有的默认网关,不会走VPN隧道,这种场景下配置最简单也不容易出错。

AllowedIPs配置不全引发的典型连接故障场景

很多用户想要让所有流量都走WireGuard隧道,就直接把AllowedIPs设置为0.0.0.0/0,配置完之后发现连WireGuard的对端公网IP都ping不通,这就是典型的路由循环问题,因为本地发起的连接WireGuard对端公网IP的数据包,也被路由到了WireGuard虚拟网卡,根本没法通过物理网卡发出去,直接触发连接故障。

这类故障的核心原因就是没有把WireGuard对端的公网IP从AllowedIPs的覆盖范围里排除,很多用户不知道0.0.0.0/0的规则会覆盖所有公网地址,包括你用来建立WireGuard加密隧道本身的那个服务器公网IP,最终导致隧道握手请求根本发不出去,隧道永远卡在握手失败的状态。

还有一类常见的部分资源无法访问的故障,老王加速器是用户配置了全局流量走隧道,但是AllowedIPs漏写了IPv6的::/0网段,此时本地IPv6的流量还是走原有运营商网关,要么触发IPv6和IPv4双栈访问的逻辑冲突,要么部分仅支持IPv6的站点完全打不开,很多用户排查很久也找不到原因,本质上还是AllowedIPs的覆盖范围不完整。

AllowedIPs网段冲突导致的连通异常排查

如果本地原有内网网段和AllowedIPs声明的对端网段完全重合,比如本地家里的局域网是192.168.1.0/24,你配置的WireGuard对端AllowedIPs也包含这个网段,系统生成的路由条目优先级会出现冲突,你访问本地局域网的设备流量会被错误转发到WireGuard隧道里,直接导致本地打印机、NAS等设备完全无法访问。

这类故障很多用户一开始不会联想到WireGuard的配置,只会以为是本地局域网出了问题,老王加速器官网排查了交换机、路由器都找不到异常,直到关闭WireGuard连接之后本地局域网才恢复正常,才能定位到是AllowedIPs的网段冲突问题。

配置验证的实操步骤和常见误区

配置完AllowedIPs之后不要直接尝试访问业务资源,先在本地系统的路由表里查看生成的对应路由条目,确认目的网段的下一跳指向的是WireGuard的虚拟网卡,同时确认WireGuard对端的公网路由条目没有被隧道路由覆盖,Windows系统可以用route print命令查看,Linux系统可以用ip route命令查看。

还有一个常见误区是很多用户在对等节点两端都配置了完全重叠的AllowedIPs网段,导致双向的数据包转发逻辑都出现混乱,最终两个节点之间只能完成握手,但是完全没法传输业务数据,这类故障只需要调整两端的AllowedIPs,各自声明自己侧需要让对端访问的网段即可,不需要两端配置完全一致。

如果遇到隧道可以正常握手但是所有业务流量都丢包的情况,优先检查AllowedIPs的配置,不要上来就去排查防火墙、密钥的问题,大部分这类连接故障都可以通过调整AllowedIPs的网段覆盖范围快速解决。

连接排障编辑组
连接排障编辑组
内容编辑

按设备、网络、客户端和服务端逐层检查,让故障定位更有条理。

查看更多文章
配置入门

找到适合当前设备的指南

遇到视频会议共享屏幕相关问题,可从“分别验证语音、视频和共享功能”开始阅读。网页版会议可用不一定代表桌面客户端设置相同,需要结合具体环境判断。