WireGuard:其中一个对等点无法 ping 通其他对等点,但握手有效并且其他对等点可以互相 ping 通

WireGuard:其中一个对等点无法 ping 通其他对等点,但握手有效并且其他对等点可以互相 ping 通

我最近使用 wg-easy 在服务器上设置了 WireGuard(因此配置文件是生成的,而不是手动输入的),并且我成功连接了几个对等点,包括 Linux 计算机。最后一台要设置的是我的带有 EndeavourOS 的笔记本电脑,我只是不明白为什么这个设备无法 ping 其他对等点(或访问这些对等点上托管的 http 服务)。假设我正在尝试连接到 PC。最重要的四个部分(我认为):

  1. ping 实际上到达 PC 并且 PC 确实响应(使用 tcpdump 验证),但笔记本电脑从未收到响应。我不是专家,但对我来说,这表明这不是 wg 配置的问题(ip route get PC-IP返回正确的接口)。
  2. 我禁用了firewalld,但它仍然不起作用(在执行此操作之前尝试查看日志,但它似乎也没有阻止任何内容)。 iptables 中没有规则。
  3. 与服务器(设置 wg-easy 的地方)的握手有效。
  4. 我能够通过 PC 的非 WireGuard IP 对 PC 执行 ping 操作。

我还尝试了其他一些常识性的解决方案,例如使用 wg-quick 重新启动界面、重新启动、切换到另一个网络,但没有任何帮助。我不知道这里可能出现什么问题,所以任何帮助将不胜感激。

编辑:以下是相关对等点的配置:

wg-easy 服务器配置:

# Server
[Interface]
PrivateKey = (a key)
Address = 10.8.0.1/24
ListenPort = 51820
PreUp = 
PostUp =  iptables -t nat -A POSTROUTING -s 10.155.129.0/24 -o eth0 -j MASQUERADE; iptables -A INPUT -p udp -m udp --dport 51820 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; 
PreDown = 
PostDown = 


# Client: PC
[Peer]
PublicKey = (a key)
PresharedKey = (a key)
AllowedIPs = 10.155.129.2/32

# Client: laptop
[Peer]
PublicKey = (a key)
PresharedKey = (a key)
AllowedIPs = 10.155.129.6/32

电脑配置:

[Interface]
PrivateKey = (a key)
Address = 10.155.129.2/24
DNS = 1.1.1.1


[Peer]
PublicKey = (a key)
PresharedKey = (a key)
AllowedIPs = 10.155.129.0/24
PersistentKeepalive = 25
Endpoint = (server's public IP):51820

最后是笔记本电脑的配置:

[Interface]
PrivateKey = (a key)
Address = 10.155.129.6/24
DNS = 1.1.1.1


[Peer]
PublicKey = (a key)
PresharedKey = (a key)
AllowedIPs = 10.155.129.0/24
PersistentKeepalive = 25
Endpoint = (server's public IP):51820

谢谢!

答案1

几天后,在没有我干预的情况下,连接开始工作,所以我不确定如何解决这个问题,但为了不要留下这个问题,而没有一些关于其他人可以做什么来找出问题所在的建议,这里有一些步骤:

  1. 检查 ping 是否到达对端。在您尝试 ping 的对等方上运行以下命令:(sudo tcpdump -tttnei wg0 icmp其中wg0是 WireGuard 接口的名称)。如果是,这个相同的命令将告诉您对等点是否响应您期望的 IP:它应该与 ping 对等点的 WireGuard conf 文件的地址字段中的 IP 相同(在我的例子中10.155.129.6)。
  2. 检查连接是否通过 VPN 服务器。即使您在 docker 中运行 wg-easy,您也可以tcpdump直接在主机上运行:sudo tcpdump -ttttni any 'udp port 51820',这-i any意味着它会侦听您的所有接口(如果像我一样,您不确定数据包将通过哪个接口)是您在 docker 中为 wg-easy51820绑定的端口。51820如果你已经有很多同伴,那么你可能会在那里看到相当多的噪音。如果可能,您可以在调试时尝试断开与其他对等点上的 VPN 的连接。
  3. 仔细检查您的发行版上的防火墙是什么,对于 EndeavourOS,它是firewalld。确保它不会阻塞您的数据包。

祝你好运!

答案2

在wireguard服务器上,添加以下规则:

sudo iptables -A FORWARD -i wg0 -o wg0 -j ACCEPT

相关内容