很多刚接触WireGuard配置的用户,经常会遇到明明密钥、监听端口、Endpoint地址都填写正确,却出现VPN连接后部分网站打不开、本地局域网设备访问不了、甚至所有对外流量都断连的问题,这类故障九成以上都和AllowedIPs字段的填写失误有关。作为WireGuard路由规则的核心配置项,AllowedIPs直接决定了哪些网段的流量会被送入VPN隧道转发,哪些流量走本地原有网关,很多用户对它的最长前缀匹配逻辑理解不到位,很容易踩中各类隐性的配置坑,甚至排查很久都找不到问题根源。
错误1:直接填写0.0.0.0/0却漏了排除本地局域网网段
很多用户想要实现全流量走VPN隧道,就直接在AllowedIPs里填了0.0.0.0/0和::/0覆盖所有IPv4和IPv6地址,完全没考虑本地本身的局域网网段,比如家里的NAS、局域网打印机、同子网的其他设备所在的192.168.x.0/24这类常见内网段。
这种配置的典型现象就是WireGuard连接成功后,你再也访问不到本地局域网里的任何其他设备,甚至部分场景下连WireGuard本身的握手数据包都没法正常发往远端节点,直接导致隧道刚建立就触发超时断开。
正确的配置逻辑是,如果要走全流量隧道,需要先把你本地当前所在的所有局域网段,还有WireGuard远端节点的公网IP单独从AllowedIPs的匹配范围内排除,或者在AllowedIPs里先写本地局域网的精确路由条目,再写0.0.0.0/0,保证本地网段的流量不会被错误导入隧道。
错误2:AllowedIPs填写了和本地子网冲突的重叠网段
不少用户家里的局域网网段和VPN远端服务端的内网网段刚好是同一个,比如两边都用了192.168.1.0/24,这时候如果直接把远端的192.168.1.0/24填进AllowedIPs,系统的路由表就会出现两条完全相同的目标网段条目,操作系统不知道该把对应流量发给本地物理网卡还是WireGuard隧道。
这类故障的现象非常隐蔽,你可能能正常访问公网所有站点,但是只要尝试访问远端内网里的设备,实际打开的却是本地家里的同IP设备的管理后台,完全达不到跨网访问远端资源的目的。
排查的时候你可以先在本地执行路由表查看命令,确认对应网段的下一跳是不是指向WireGuard的虚拟网卡,如果发现下一跳还是本地物理网卡的网关,就说明出现了路由冲突,这时候要么修改本地局域网的网段,要么修改VPN远端的内网网段,避免两边网段重叠。
错误3:给不同对端的AllowedIPs填写了完全重叠的网段
很多用户的WireGuard配置里同时加了多个对等节点,比如一个节点用来访问企业内网办公资源,另一个节点用来访问部署在其他区域的云服务器资源,这时候如果给两个不同的Peer都填了相同的公网网段作为AllowedIPs,操作系统的路由规则就会出现优先级冲突,流量会随机走任意一个隧道,完全不符合你的预期。
这类问题的现象就是你访问部分业务站点的时候随机出现连接超时,有时候能打开有时候完全没响应,抓包之后才发现本该走A节点的流量被送到了B节点的隧道里,根本没法到达目标服务地址。
正确的配置方式是给每个对等节点分配完全不重叠的专属网段,比如访问企业内网的Peer只填公司内网的专属网段,访问国内云服务器的Peer只填云服务器对应的单独IP段,不要出现任何重叠的匹配范围,路由匹配就不会出现混乱。
错误4:把AllowedIPs当成访问控制列表填写
很多新手用户望文生义,误以为AllowedIPs是用来限制哪些IP可以连接到自己的WireGuard节点,实际上这个字段是本地端用来定义哪些流量要发往对端的路由规则,和服务端的IP准入控制完全没有关系。
不少用户为了限制只有指定IP能访问自己的WireGuard服务端,就在客户端的AllowedIPs里只填了服务端的WireGuard虚拟IP,结果就是连接成功之后除了能ping通服务端的虚拟网卡地址,其他任何内网或者公网地址都没法访问,完全达不到使用目的。
如果要做WireGuard的访问控制,应该在服务端配置防火墙规则,或者在服务端Peer配置段里的AllowedIPs只给对应客户端分配允许它使用的专属虚拟IP地址,而不是在客户端侧乱改AllowedIPs的匹配范围。
配置完AllowedIPs之后,你可以先在本地查看生成的路由表,逐条核对每个目标网段的下一跳是不是符合自己的预期,确认没有冲突、没有漏写必要的排除网段之后再启动WireGuard连接,就能避免绝大多数的路由类故障,不需要反复排查密钥、端口这类已经确认正常的配置项。


