WireGuard LAN 访问不适用于 Linux,但适用于手机

WireGuard LAN 访问不适用于 Linux,但适用于手机

我正在尝试使用 PiVPN 连接我的笔记本电脑(运行 fedora 或 manjaro)以始终连接到我的树莓派。我已经设置了 IP 表和端口转发。

我可以在 10.6.0.1 下访问我的 Pi,但不能访问我的普通子网 192.168.0.0/24。在我的手机上,我可以从其他网络访问我的本地 LAN,但不能从我的笔记本电脑访问。

我从 PiVPN 生成了 wg0.confwireguard 文件并将其放在 /etc/wireguard 下。它正在发挥作用。但我无法访问 LAN。它应该通过 Pi 路由所有流量。

我尝试向允许的 IP 添加更多内容,但这也没有帮助。我还在conf 文件中添加了IP 表。是操作系统或 Wireguard 的问题吗?

通过 WireGuard 连接时,我还可以从另一个网络 ping 10.6.0.1 (PI),但当我尝试 ping 196.168.178.35 (LAN PI) 时,它说无法到达主机。

Conf 文件: Pi 服务器:

[Interface]
PrivateKey = <private>
Address = 10.6.0.1/24
MTU = 1420
ListenPort = <port>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = <pubkey>
PresharedKey = <presharedkey>
AllowedIPs = 10.6.0.4/32

客户:

[Interface]
PrivateKey = <privatekey>
Address = 10.6.0.4/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
DNS = 10.6.0.1

[Peer]
PublicKey = <publickey>
PresharedKey = <sharedkey>
Endpoint = <my-external-ip>:<port>
AllowedIPs = 0.0.0.0/0
PersistentKeepalive=30

答案1

AllowedIPs = 0.0.0.0/0在客户端 WireGuard 配置中意味着所有没有显式路由的流量都将通过该 WireGuard 对等方发送。因此,您可能需要为 Pi 的 LAN 地址(或其所在的子网)添加显式路由。

在您的笔记本电脑上,运行以下命令:

$ ip route

输出将如下所示:

default via 192.168.0.1 dev eth0 proto dhcp metric 100
10.6.0.0/24 dev wg0 scope link
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.123 metric 100

如果您没有看到适用于 Pi 的 LAN 地址的路由,请添加它,并通过笔记本电脑的默认网关进行路由;像这样的东西:

$ sudo ip route add 192.168.178.0/24 via 192.168.0.1 dev eth0

与此无关:您可以删除在 iptables 中列出的 PostUp/PostDown 规则客户WireGuard 配置,它们不会为您做任何事情(这些规则仅适用于将数据包转发到其他主机的服务器 - 这就是为什么您在 Pi 服务器的配置中拥有它们的原因)。

相关内容