WireGuard AllowedIPs配置咨询:保留本地连接并将其余流量路由至VPN
嗨,我来帮你梳理下WireGuard AllowedIPs的配置问题,针对你的核心需求——保留192.168.45.x本地Wi-Fi网络访问,同时将所有其他互联网流量(IPv4+IPv6)路由到VPN,咱们一步步拆解分析:
先说说你遇到的IPv6问题根源
你提到用::/0会导致所有连接(包括IPv4本地)都走VPN,这是因为WireGuard的路由优先级很高,当你指定::/0(全IPv6地址空间)时,Windows的路由表会被覆盖,连带影响IPv4的路由逻辑。而改成::/1加8000::/1其实就相当于覆盖了整个IPv6地址空间(::/1是前半段,8000::/1是后半段),这样既不会破坏本地IPv4路由,又能让所有IPv6流量走VPN。
分析你尝试的三个配置
第一个配置
- IPv6部分用了
::/1 + 8000::/2,这里8000::/2只覆盖了IPv6后半段的一部分,导致部分IPv6地址没有被路由到VPN,所以Edge的IPv6功能异常,存在IPv6流量泄漏的风险。 - IPv4部分手动列出了一大堆要路由的网段,这种方式不仅冗余,还容易出错——比如我检查下来,你的本地网段192.168.45.x并没有被明确排除,理论上会被路由到VPN,这可能和你说的“works partly”存在矛盾,说明手动配置的规则大概率有疏漏。
- IPv6部分用了
第二个配置
- 把
8000::/2改成8000::/1后,IPv6地址空间被完全覆盖,所以Edge的IPv6恢复正常,这部分是没问题的。 - 但IPv4的手动网段列表依然存在冗余和出错风险,比如是否真的准确排除了所有本地相关网段?一旦有疏漏,要么本地流量走VPN(无法访问本地设备),要么部分互联网流量不走VPN(泄漏风险)。
- 把
第三个配置
- 把
128.0.0.0/3改成128.0.0.0/1,其实128.0.0.0/1已经覆盖了所有大于等于128.0.0.0的IPv4地址,和前面的规则叠加后,确实能覆盖大部分IPv4流量,但同样存在手动配置的冗余和疏漏问题,维护起来非常麻烦。
- 把
你的问题解答
会不会泄漏流量?
第一个配置的IPv6有明显遗漏,大概率会导致部分IPv6流量不走VPN,存在泄漏风险;第二个和第三个配置的IPv6覆盖完整,但IPv4的手动排除规则如果有疏漏,也可能出现泄漏或本地访问异常的情况。配置有没有问题?
三个配置都过于冗余,手动维护难度大,容易出现规则疏漏,不是最优解。最佳配置方案
WireGuard支持排除式语法,用这种方式配置会简洁很多,而且不容易出错,完全符合你的需求:AllowedIPs = 0.0.0.0/0, ::/0, !192.168.45.0/24, !fc00::/7解释下这个配置:
0.0.0.0/0:所有IPv4流量都路由到VPN::/0:所有IPv6流量都路由到VPN!192.168.45.0/24:排除你的本地IPv4网段,让这部分流量直接走本地Wi-Fi!fc00::/7:排除IPv6的本地唯一地址段(ULA),避免IPv6本地连接被VPN干扰
你只需要把WireGuard配置文件里的AllowedIPs替换成上面这一行,保存后重新连接VPN,就能实现:本地192.168.45.x设备正常访问,其他所有互联网流量(IPv4+IPv6)都通过VPN路由,同时不会出现之前的IPv6异常问题。
备注:内容来源于stack exchange,提问作者poqdavid

