WireGuard 中的 AllowedIPs 是什么意思?

WireGuard 中的 AllowedIPs 是什么意思?

Ryan Foster
2026年9月12日· 更新于 2026年9月13日· 7 分钟阅读

WireGuard AllowedIPs 把 IP 前缀关联到密码学 peer。对出站流量,WireGuard 用最具体的匹配前缀选择负责加密该包的 peer;对入站流量,只有解密包的内层源地址属于发送方 peer 获准前缀时,它才接受该包。

这组双向含义就是 WireGuard“密码学路由”的核心。它与操作系统路由表有关,但并不相同。VPN 完整指南解释完整路径,本文则分开每次决策,避免把路由、peer 规则和防火墙误认为同一设置。

关键要点

  • 出站 AllowedIPs 把内层目的前缀映射到 peer。
  • 入站 AllowedIPs 授权来自相应 peer 的解密包可使用哪些内层源前缀。
  • 重叠条目使用最长前缀匹配,更具体的前缀优先。
  • 0.0.0.0/0 与 ::/0 分别匹配全部 IPv4 和 IPv6 地址,但本身不保证系统路由已经安装。
  • wg-quick 可从 AllowedIPs 推导路由;底层 peer 表和操作系统路由仍是不同层。

WireGuard AllowedIPs 的双向含义

wg(8) 明确赋予 AllowedIPs 两个角色:发送时,该列表标识哪些目的地址要路由给 peer;接收时,它标识该 peer 可以使用哪些源地址。[1]同一前缀表会从两个相反视角参与判断。

假设 peer A 配置 AllowedIPs = 10.0.1.0/24。当本地 WireGuard 接口收到一个内层目的地为 10.0.1.42 的包,这个前缀可以选择 peer A 来加密。若 peer A 的认证包解密后,内层源地址是 10.0.1.42,它也通过来源规则;若声称源地址是 10.0.2.42,则不会通过。

公钥是绑定中心。WireGuard 白皮书把公钥与隧道地址之间的映射称为密码学路由表。[2]成功解密证明包由哪个已配置密钥发送,AllowedIPs 随后限制该密钥可以代表哪些内层地址。

这并不表示 peer 在整个网络中“拥有”这些地址,只表示当前 WireGuard 接口针对出站选择和入站验证,把这些前缀与相应 peer 关联。

最长前缀如何选择 peer?

多个前缀同时匹配目的地时,WireGuard 选择最具体的一个。前缀长度代表具体程度:/24 固定的前导位比 /16 多,/32 则表示单个 IPv4 地址。IPv6 使用相同原则,/128 表示单个地址。

若 peer A 有 10.0.0.0/8,peer B 有 10.0.1.0/24,发往 10.0.1.50 的包同时匹配两项,但 /24 更长,因此选择 peer B。发往 10.2.0.5 的包只匹配 /8,所以选择 peer A。结果由前缀决定,而不是由配置书写顺序决定。

图例:1 是交给 WireGuard 的内层目的地;2 是 AllowedIPs 查找;3 是更具体的 10.0.1.0/24 匹配;4 是作为后备的 0.0.0.0/0 匹配。图中表示 WireGuard 内部 peer 选择,不是操作系统之前进行的路由查找。

目的地址可用前缀最终匹配
10.0.1.5010.0.0.0/8、10.0.1.0/2410.0.1.0/24
10.2.0.510.0.0.0/8、0.0.0.0/010.0.0.0/8
198.51.100.2010.0.0.0/8、0.0.0.0/00.0.0.0/0
2001:db8::20只有 IPv4 条目没有 IPv6 匹配

不要把不同 peer 的相同前缀当成负载均衡方法。WireGuard peer 配置需要清晰关联;若流量需要动态分发,应设计不同前缀或在 WireGuard 之外增加路由层。

全隧道与分流示例

全隧道 peer 常为 IPv4 使用 0.0.0.0/0,为 IPv6 使用 ::/0。它们是默认前缀:除非有更具体的 peer 关联,否则相应地址族中的任何地址都能匹配。它们只表达 peer 选择,不承诺 DNS、本地网络例外、策略路由或泄漏防护已正确配置。

分流则列出较窄目的地,例如公司私有子网或一个主机。只有既被系统送到 WireGuard 接口、又匹配这些前缀的流量,才会加密给该 peer。AllowedIPs 不填写应用名称;按应用排除需要操作系统或客户端在字段之外提供策略。

双栈系统必须分别考虑两个地址族。IPv4 默认前缀不会匹配 IPv6。如果目标是两者都受保护,就需要完整的 peer 关联与系统路由;若决定让 IPv6 留在隧道之外,那应是明确分流策略,而非意外遗漏。

VPN 协议对比有助于把这些路由机制放到其他协议设计旁比较。但字段本身始终只是网络前缀列表,不是“所有应用”或“仅浏览器”这样的用户层声明。

AllowedIPs 与系统路由表的区别

WireGuard 选择 peer 之前,操作系统通常先决定由哪个接口接收包。例如系统路由可以把 10.0.1.0/24 指向 wg0。包到达 wg0 后,WireGuard 的 AllowedIPs 查找才选择密码学 peer。如果系统路由指向别处,即便 peer 表完美匹配,WireGuard 也看不到该包。

wg-quick(8) 会从所有 peers 的 AllowedIPs 推导路由并加入系统,对默认路由还会特殊处理。[3]这种便利让两个层次看似一体,但它只是 helper 行为,并不证明每种 WireGuard 工具都会安装相同路由。wg、NetworkManager、移动客户端或自定义脚本可以用不同方式管理外围路由。

分层后可得到四种常见状态:

  1. 系统路由与 AllowedIPs 都匹配,包可以到达选中 peer。
  2. 缺少系统路由,包在 WireGuard 判断前就走向其他接口。
  3. 系统路由进入 WireGuard,但没有 peer 前缀匹配,无法选择 peer。
  4. 两次查找都正确,但 peer Endpoint 不可达,选择和加密成功而外层交付失败。

Endpoint 指南说明最后这个外层目的地。把 Endpoint 误当路由,或不理解内层策略就把公网服务器 IP 加入 AllowedIPs,可能造成循环或意外捕获流量。

入站授权不是通用防火墙

WireGuard 认证并解密一个包后,会检查其内层源地址是否属于发送 peer 的 AllowedIPs。这能防止一个已配置 peer 冒用分配给另一 peer 的内层地址。若远程用户只获准 10.0.0.7/32,它就不能通过该关联注入一个声称来自 10.0.0.8 的解密包。

该检查很重要,但范围有限。它不判断 TCP 端口、应用身份、用户、时间、连接状态、域名或服务是否应接收流量。这些政策仍由主机或网络防火墙执行。它也不会自动启用接口间 IP 转发。

它同样不是 DNS 设置。解析器可能返回前缀内或前缀外地址,但 AllowedIPs 不选择解析器,也无法保护被系统发往另一接口的 DNS 请求。路由和 DNS 需要分别验证。

很多人修改 AllowedIPs 只为一个决定:所有流量都走隧道,还是本地目标保持直连。如果目标只是这个,AethoVPN 把它变成一个开关,而不是前缀列表。开启全局模式时,所有应用都经加密隧道传输,效果与上文的全隧道示例相同;关闭后,访问你所在地区网站的请求会绕过中转。切换开关,再用 IP 或路由检查确认实际路径。开始 3 天免费试用,对比两种状态。需要按应用或按前缀划分的规则,仍要靠你自己维护的 WireGuard peer。

怎样排查 AllowedIPs 错误?

从一个内层目的地开始逐层跟踪。先查看获胜的操作系统路由,确认它指向预期接口,再在各 peers 中寻找最长 AllowedIPs 匹配。确定 peer 后,才检查 Endpoint、最近握手、计数器与返回路径。

对于入站故障,检查解密包计划使用的源前缀,以及接收接口上该 peer 的关联。不要通过给每个 peer 都加 0.0.0.0/0 来“修复”现象。过宽条目会抢走出站目的地,也会扩大该 peer 获准声明的源地址范围。

应使用自己控制的测试前缀,并记录两个地址族。ping 成功只证明一个窄的双向案例,无法证明所有路由、应用、DNS 或防火墙策略正确。若只有一个目的地失败,先比较它与正常目的地的最长前缀,再修改密钥或保活计时器。

为什么返回路径也必须匹配?

请求到达正确 peer 只是交换的一半。远端系统还须有返回内层源地址的路由,其自身 AllowedIPs 也须选择并授权预期 peer;非对称配置可能送达请求,却让回复从另一接口丢失。

应分别检查出站包目的地、解密入站包源地址及回复目的地。过宽前缀可能因捕获过多地址而掩盖返回路径错误;诊断后应恢复最小必要前缀,并复测相邻网络。

总结

  • AllowedIPs 把内层 IP 前缀映射到 WireGuard 公钥 peer。
  • 出站查找按最长匹配目的前缀选择 peer。
  • 入站查找授权解密包可从哪些源地址到达。
  • 系统路由先决定包是否会进入 WireGuard 接口。
  • wg-quick 可以从列表安装路由,但 helper 行为仍是独立层次。

常见问题

AllowedIPs 是指允许哪些 IP 使用 VPN 吗?

不完全是。它按内层目的地选择出站 peer,并允许认证入站包使用指定内层源前缀。用户和服务访问仍需额外控制。

0.0.0.0/0 在 AllowedIPs 中表示什么?

它匹配所有 IPv4 地址,可以让某个 peer 成为 IPv4 默认选择,但操作系统仍需正确路由,IPv6 也要另行处理。

::/0 是否包含 IPv4?

不包含。它是 IPv6 默认前缀。双栈全隧道通常要同时考虑 0.0.0.0/0 与 ::/0。

AllowedIPs 可以包含重叠前缀吗?

可以,不同前缀长度可形成明确的最长前缀决策。对一个出站目的地,更具体的匹配优先。

AllowedIPs 是防火墙吗?

它会对认证入站 WireGuard 包进行源前缀授权,但不是管理端口、应用、用户或连接状态的通用防火墙。

修改 AllowedIPs 会改变 Endpoint 吗?

不会。AllowedIPs 处理内层前缀与 peer 选择;Endpoint 是联系 peer 所用的当前外层地址和 UDP 端口。

为什么设置 AllowedIPs 后 wg-quick 会添加路由?

wg-quick 把这些前缀推导为操作系统路由,以便简化设置。这是 helper 的文档行为,WireGuard peer 表在概念上仍然独立。

来源:

  1. WireGuard Tools, wg(8): https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
  2. WireGuard, “WireGuard: Next Generation Kernel Network Tunnel”: https://www.wireguard.com/papers/wireguard.pdf
  3. WireGuard Tools, wg-quick(8): https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8

Sources checked 2026 年 9 月 12 日。


延伸阅读:

开启 3 天免费试用

注册即可免费体验全部高级功能。

*仅限新用户;每位用户只能获得一次试用。

WireGuard 中的 AllowedIPs 是什么意思? | AethoVPN