我的机器人上有两台计算机,它们通过以太网直接连接。被称为“麦格尼”和“杰森”。 Magni 已连接至无线网络。在此无线网络上,有第三台计算机“PC”通过 Wireguard VPN 连接到 Magni。我的机器人上有两台计算机,它们通过以太网直接连接。被称为“麦格尼”和“杰森”。 Magni 已连接至无线网络。在此无线网络上,有第三台计算机“PC”通过 Wireguard VPN 连接到 Magni。
目标是能够从系统的所有组件相互发送和接收消息。 Magni - Jetson 和 Magni - PC 对可以互相 ping、发现和发布。我遇到的问题是我的电脑和 Jetson 之间的通信。我尝试做一些IP转发。首先,我在 jetson 上添加了一条从静态 192.168.131.1 IP 到 Magni 的 VPN 10.0.0.161 的路由。完成此操作后,我可以从 jetson ping 通 Magni 的 VPN 地址 10.0.0.161。
sudo route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.131.1
然后在我的电脑上,我尝试添加类似的路线......
sudo route add -net 192.168.131.0 netmask 255.255.255.0 gw 10.0.0.161
然后我尝试从我的电脑与 jetson 进行通信(通过 ping)。但是,我无法与 Jetson 成功通信。当我尝试从 PC 上 ping Jetson 时,我当前的设置出现此错误。
PING 192.168.131.2 (10.0.0.66) 56(84) bytes of data.
From 10.0.0.66 icmp_seq=1 Destination Host Unreachable
ping: sendmsg: Required key not available
我也尝试过其他路线,但没有成功。我想知道是否有人可以为我指明如何解决此问题的正确方向,因为我在网络方面经验不足。
PC 的内核 IP 路由表
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.147.x.x 0.0.0.0 UG 600 0 0 wlp2s0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
10.147.x.x 0.0.0.0 255.255.0.0 U 600 0 0 wlp2s0
169.xxx.x.x 0.0.0.0 255.255.0.0 U 1000 0 0 wlp2s0
192.168.131.0 10.0.0.161 255.255.255.0 UG 0 0 0 wg0
Magni 的内核 IP 路由表
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.147.x.x 0.0.0.0 UG 600 0 0 wlan0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
10.19.xxx.xxx 10.147.x.x 255.255.255.255 UGH 600 0 0 wlan0
10.147.x.x 0.0.0.0 255.255.0.0 U 600 0 0 wlan0
192.168.131.0 0.0.0.0 255.255.255.0 U 0 0 0 enxb827eb452fa3
Jetson的内核IP路由表
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 192.168.131.1 255.255.255.0 UG 0 0 0 eth0
169.xxx.x.x 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
192.168.131.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
答案1
ping: sendmsg: Required key not available
意味着它是 WireGuard密钥路由问题。在 WireGuard 中,密钥与路由关联,反之亦然。这是除标准布线之外的内部 WireGuard 布线:
WireGuard 的核心是一个称为加密密钥路由的概念,它的工作原理是将公钥与隧道内允许的隧道 IP 地址列表相关联。
这意味着您没有添加所需的AllowedIPs
( wg-quick
) / allowed-ips
(直接wg
命令)参数。
当 WG 接口即将发送数据包时,它会将目标 IP 与公钥进行匹配,AllowedIPs
以便使用此密钥对其进行加密。当 WG 接口收到数据包时,它会使用对等方的公钥来验证源 IP AllowedIPs
:此值双向使用。
要解决此问题,请在 PC 上的 wg-quick 配置中的相关 Magni Peer 公钥条目下添加配置并重新启动隧道:
AllowedIPs = 192.168.131.0/24
实际上对于这个具体情况AllowedIPs = 192.168.131.1,192.168.131.2
就足够了。
如果您已经可以从 PC ping Magni (192.168.131.1),则应该足够了,假设 Magni 已设置为路由器。
另外,在另一个 WireGuard 对等点 Magni 上也可以执行相同的操作。在 PC 的对等公钥条目下执行等效操作以匹配 PC:
AllowedIPs = 10.0.0.0/24
同样,AllowedIPs = 10.0.0.66
仅连接到此处的 PC 就足够了。
可以直接使用wg
命令来完成,而不是立即(而不是保存)效果(例如,ukFU7nbX5NoEJTLb5rizqcfB093fv8VfuLFA57q3oG4=
这里使用随机生成的 Peer 公钥值,请将其更改为 PC 的公钥):
wg set wg0 peer ukFU7nbX5NoEJTLb5rizqcfB093fv8VfuLFA57q3oG4= allowed-ips 10.0.0.0/24