我正在运行 Manjaro,在其中我设置了一个 wireguard 对等点来连接到我家里的 Raspberry Pi,但它无法 ping 通我本地网络上的任何机器,甚至无法 ping wireguard 对等点。它甚至可能没有连接,尽管它声称已经连接。我有第二个客户端,完全没有问题。
这是我的接口配置,它与我的客户端安装脚本吐出的配置文件相同:
除了私钥和预共享密钥不同之外,这与我的其他客户端上使用的配置非常相似。
据我所知,客户端在服务器端设置正确,如我的/etc/wireguard/wg0.conf
文件所示。
每当我启用时tun0
,我无法 ping 任何本地地址,包括 wireguard 隧道的另一端。
这到底发生了什么事?
答案1
当您使用 AllowedIPs 0.0.0.0 时,wireguard 会绑定到所有 IP 地址。如果您有两个端点,则需要更具体地使用此字段。来自“非官方”github 上的 wireguard 文档,请参阅下面的第 3 点:
允许IP
这定义了对等方将路由流量的 IP 范围。在简单客户端上,这通常是一个地址(简单客户端本身的 VPN 地址)。对于反弹服务器,这将是中继服务器能够路由流量的 IP 或子网范围。可以使用逗号分隔的 IPv4 或 IPv6 CIDR 表示法指定多个 IP 和子网(从单个 /32 或 /128 地址,一直到 0.0.0.0/0 和 ::/0 以指示通过该对等方发送所有互联网和 VPN 流量的默认路由)。可以多次指定此选项。
在决定如何路由数据包时,系统会首先选择最具体的路由,然后再选择更广泛的路由。因此,对于目的地为 192.0.2.3 的数据包,系统会首先寻找专门通告 192.0.2.3/32 的对等体,最后再选择通告 192.0.2.1/24 或更大范围(如 0.0.0.0/0)的对等体。
例子
- peer 是一个简单的客户端,它只接受来自自身的流量:AllowedIPs = 192.0.2.3/32
- 对等体是一个中继服务器,可以将 VPN 流量反弹到所有其他对等体:AllowedIPs = 192.0.2.1/24
- peer 是一个中继服务器,可反弹所有互联网和 VPN 流量(如代理),包括 IPv6:AllowedIPs = 0.0.0.0/0,::/0
- peer 是一个中继服务器,它路由到自身和仅一个其他对等体:AllowedIPs = 192.0.2.3/32,192.0.2.4/32
- peer 是一个中继服务器,它路由到自身及其本地 LAN 上的所有节点:AllowedIPs = 192.0.2.3/32,192.168.1.1/24