내 로봇에는 이더넷을 통해 직접 연결된 두 대의 컴퓨터가 있습니다. "마그니"와 "제이슨"으로 알려져 있습니다. Magni가 무선 네트워크에 연결되어 있습니다. 이 무선 네트워크에는 Wireguard VPN을 통해 Magni에 연결된 세 번째 컴퓨터 "PC"가 있습니다. 내 로봇에는 이더넷을 통해 직접 연결된 두 대의 컴퓨터가 있습니다. "마그니"와 "제이슨"으로 알려져 있습니다. Magni가 무선 네트워크에 연결되어 있습니다. 이 무선 네트워크에는 Wireguard VPN을 통해 Magni에 연결된 세 번째 컴퓨터 "PC"가 있습니다.
목표는 시스템의 모든 구성 요소에서 서로 메시지를 보내고 받을 수 있는 것입니다. Magni - Jetson 및 Magni - PC 쌍은 서로 핑하고 검색하고 게시할 수 있습니다. 내가 겪고 있는 문제는 내 컴퓨터와 Jetson 간의 통신입니다. IP 포워딩을 하려고 합니다. 먼저, 정적 192.168.131.1 IP에서 Magni의 VPN 10.0.0.161로 jetson의 경로를 추가했습니다. 그런 다음 jetson에서 Magni의 VPN 주소 10.0.0.161을 ping할 수 있습니다.
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
그런 다음 내 컴퓨터에서 (ping을 통해) jetson과 통신을 시도합니다. 하지만 Jetson과 성공적으로 통신할 수 없습니다. 현재 설정에서는 PC에서 Jetson을 ping하려고 할 때 이 오류가 발생합니다.
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에서 Magni(192.168.131.1)를 ping할 수 있다면 Magni가 라우터로 설정되어 있다는 가정 하에 충분할 것입니다.
또는 다른 WireGuard 피어인 Magni에서도 동일한 작업을 수행할 수 있습니다. PC와 일치하도록 PC의 피어 공개 키 항목에서 동일한 작업을 수행합니다.
AllowedIPs = 10.0.0.0/24
이번에도 AllowedIPs = 10.0.0.66
PC에 연결하는 것만으로도 충분합니다.
wg
이 작업은 즉각적인(저장 대신) 효과 없이 명령을 사용하여 직접 수행할 수 있습니다 (예를 들어, ukFU7nbX5NoEJTLb5rizqcfB093fv8VfuLFA57q3oG4=
여기에서는 무작위로 생성된 피어 공개 키 값이 사용됩니다. PC의 공개 키로 변경하십시오).
wg set wg0 peer ukFU7nbX5NoEJTLb5rizqcfB093fv8VfuLFA57q3oG4= allowed-ips 10.0.0.0/24