wireguard 握手,但 ping 不通

wireguard 握手,但 ping 不通

我有一个具有静态 IP 的服务器和一个位于我家本地网络中的客户端。我想要实现的是这两者之间的 VPN 连接(不过稍后可能会添加更多客户端)。我不需要能够通过 VPN 服务器连接到互联网,只需直接连接即可。

服务器运行的是Ubuntu 18.04 LTS,但我无法使用wireguard内核模块,因为该服务器是OpenVZ虚拟服务器,因此不允许修改内核。所以我在服务器上使用wireguard-go。看我之前的帖子以便就此事进行讨论。

服务器配置为

[Interface]
PrivateKey = ...
ListenPort = 51944

[Peer]
PublicKey = ...
AllowedIPs = 192.168.177.5/32

sudo ip addr add 192.168.177.4/32 dev wg0

设置其IP地址。

客户端(也是 Ubuntu 18.04 LTS)配置为

[Interface]
PrivateKey = ...
Address = 192.168.177.5/32

[Peer]
PublicKey = ...
AllowedIPs = 192.168.177.4/32
Endpoint = [static IP of my server]:51944
PersistentKeepalive = 25

并开始于

sudo wg-quick up wg0

在服务器和客户端的输出中sudo wg,我可以看到握手有效。但尝试以任何一种方式 ping 都会导致评论提示永远等待。

有谁知道我可能有什么问题吗?

答案1

该问题似乎是客户端和服务器上的路由丢失,而不是 WireGuard 问题。

当服务器指定为 192.168.177.4/32 时,没有提供到 192.168.177.5/32 的路由。对于标准路由部分,如有疑问,请运行命令询问内核路由的去向。例如关于服务器:

ip route get 192.168.177.5

如果答案中没有给出 WireGuard 接口,则意味着路由不会使用它(并且隧道中不会有任何流量)。

可能的选择包括:

  • 添加缺少的路线

    sudo ip route add 192.168.177.5/32 dev wg0
    
  • 以不同方式添加地址,以便包含自动路由并将由内核添加

    • 具有对等地址

      sudo ip address add 192.168.177.4 peer 192.168.177.5/32 dev wg0
      
    • 或者至少是 /31(以便将 192.168.177.5 包含在路由中)。 /24 也可以

      sudo ip address add 192.168.177.4/31 dev wg0
      
  • 或者简单地将地址添加到配置中,例如 /31,因为它是最简单的,或者任何更大的地址,例如 /24。服务器和客户端具有相同的角色,没有理由使用不同的方法配置它们的地址。

    Address = 192.168.177.4/31
    

同样,更正客户端配置:

Address = 192.168.177.5/31

标准路由和WireGuard 的加密密钥路由(使用 进行选择AllowedIPs,对于此处的此设置是正确的)对于工作结果必须是正确的。如果添加更多对等点,您可能必须使用更宽的路由,但保留更严格的AllowedIPs设置,因为加密密钥路由需要。

相关内容