我最近使用 wg-easy 在服务器上设置了 WireGuard(因此配置文件是生成的,而不是手动输入的),并且我成功连接了几个对等点,包括 Linux 计算机。最后一台要设置的是我的带有 EndeavourOS 的笔记本电脑,我只是不明白为什么这个设备无法 ping 其他对等点(或访问这些对等点上托管的 http 服务)。假设我正在尝试连接到 PC。最重要的四个部分(我认为):
- ping 实际上到达 PC 并且 PC 确实响应(使用 tcpdump 验证),但笔记本电脑从未收到响应。我不是专家,但对我来说,这表明这不是 wg 配置的问题(
ip route get PC-IP
返回正确的接口)。 - 我禁用了firewalld,但它仍然不起作用(在执行此操作之前尝试查看日志,但它似乎也没有阻止任何内容)。 iptables 中没有规则。
- 与服务器(设置 wg-easy 的地方)的握手有效。
- 我能够通过 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
几天后,在没有我干预的情况下,连接开始工作,所以我不确定如何解决这个问题,但为了不要留下这个问题,而没有一些关于其他人可以做什么来找出问题所在的建议,这里有一些步骤:
- 检查 ping 是否到达对端。在您尝试 ping 的对等方上运行以下命令:(
sudo tcpdump -tttnei wg0 icmp
其中wg0
是 WireGuard 接口的名称)。如果是,这个相同的命令将告诉您对等点是否响应您期望的 IP:它应该与 ping 对等点的 WireGuard conf 文件的地址字段中的 IP 相同(在我的例子中10.155.129.6
)。 - 检查连接是否通过 VPN 服务器。即使您在 docker 中运行 wg-easy,您也可以
tcpdump
直接在主机上运行:sudo tcpdump -ttttni any 'udp port 51820'
,这-i any
意味着它会侦听您的所有接口(如果像我一样,您不确定数据包将通过哪个接口)是您在 docker 中为 wg-easy51820
绑定的端口。51820
如果你已经有很多同伴,那么你可能会在那里看到相当多的噪音。如果可能,您可以在调试时尝试断开与其他对等点上的 VPN 的连接。 - 仔细检查您的发行版上的防火墙是什么,对于 EndeavourOS,它是firewalld。确保它不会阻塞您的数据包。
祝你好运!
答案2
在wireguard服务器上,添加以下规则:
sudo iptables -A FORWARD -i wg0 -o wg0 -j ACCEPT