Ubuntu

wireguard 會握手,但 ping 不通

  • April 19, 2022

我有一個具有靜態 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 都會使評論提示永遠等待。

有誰知道問題可能是什麼?

該問題似乎是客戶端和伺服器上缺少路由,而不是 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設置,因為加密密鑰路由需要。

引用自:https://unix.stackexchange.com/questions/626547