다음과 같이 Linux에서 IPV6 주소를 사용하여 GRE를 헤더로 사용하는 전송 GUE 터널을 추가하려고 합니다.
ip -6 link add name gue1 type ip6gre remote $REMOTE_IPV6 local $LOCAL_IPV6 dev eth0 encap gue encap-dport 42424
$REMOTE_IPV6 및 $LOCAL_IPV6은 모두 유효한 IPV6 주소입니다. 하지만 계속해서 다음 오류가 발생합니다.
RTNETLINK answers: Invalid argument
제거하면 encap gue
캡슐화되지 않은 유형이 기본값이므로 해당 오류가 발생하지 않습니다. 그러나 도움말 텍스트는 ip link help ip6gre
유효한 캡슐 유형이 임을 암시하는 것 같습니다 encap { fou | gue | none }
. 캡슐 유형이 유효하지 않게 되는 문제는 무엇입니까?
답변1
간단히 말해서:
먼저 이것을 실행하십시오 :
modprobe fou6
자세한 내용은
Linux 커널 5.10.x에서 테스트됨
두 가지 문제가 있습니다. 하나는 구성 문제(오류는 발생하지 않지만 향후 올바른 작동을 방해할 수 있음)이고 다른 하나는 사소한 버그라고 가정할 수 있습니다.
GUE 수신 포트를 먼저 선언해야 하는 것 같습니다.
등의 온라인 블로그에 따르면Linux 가상 인터페이스 소개: 터널링 |:
# ip fou add port 5555 gue # ip link add name tun1 type ipip remote 192.168.1.1 local 192.168.1.2 ttl 225 encap gue encap-sport auto encap-dport 5555
이는 IPIP 바인딩에 대한 GUE 수신 포트를 5555로 설정하고 GUE 캡슐화를 위한 IPIP 터널을 구성합니다.
따라서 수신 포트는 먼저 명령을 사용하여 선언해야 하며
ip fou add port XXXX gue
포트encap-dport XXXX
는 두 번째 명령 섹션에서 재사용됩니다. 첫 번째 명령에 대한 설명은 다음을 참조하세요.ip fou(8)
더 많은 제한 사항을 추가해야 하는 경우.하지만
ip fou add port 42424 gue
그것도 작동하지 않습니다# ip fou add port 42424 gue RTNETLINK answers: No such file or directory Error talking to the kernel
이것은 나에게 버그인 것 같습니다. 커널 모듈은
fou
이 명령을 사용하여 자동으로 로드되지 않습니다. GUE는 동일한 커널 모듈에 의해 처리되는 FOU의 추가 모드일 뿐입니다fou
.# modprobe fou # ip fou add port 42424 gue # ip -6 link add name gue1 type ip6gre remote $REMOTE_IPV6 local $LOCAL_IPV6 dev eth0 encap gue encap-dport 42424 RTNETLINK answers: Invalid argument
fou6
IPv6 부분에 대해 로드된 커널 모듈도 없습니다...실제로
-6
이 옵션을 명령에 추가해야 합니다ip fou
. 그렇지 않으면 포트가 IPv4 소켓에서 열립니다.# modprobe fou6 # ip -6 fou add port 42424 gue # ip -6 link add name gue1 type ip6gre remote $REMOTE_IPV6 local $LOCAL_IPV6 dev eth0 encap gue encap-dport 42424 #