So konfigurieren Sie einen GUE-Empfangstunnel in Linux für IPv6

So konfigurieren Sie einen GUE-Empfangstunnel in Linux für IPv6

Ich versuche, einen GUE-Tunnel zum Empfangen von IPv6-Paketen zu konfigurieren, die GUE-gekapselte IPv4-Pakete enthalten, habe jedoch Probleme beim Entkapseln der Pakete. Die IPv6-Pakete enthalten ein GUE-gekapseltes Paket, in dem sich ein IPv4-Paket befindet. Ich habe auf meiner Seite einen Empfangstunnel eingerichtet.

sysctl net.ipv4.conf.all.rp_filter=2
modprobe fou
modprobe fou6
ip -6 fou add port 42428 gue -6
ip addr add $VIP/32 dev ip6tnl0
ip -6 link set ip6tnl0 up

So sieht das resultierende ip6tnl0 aus:

4: ip6tnl0@NONE: <NOARP,UP,LOWER_UP> mtu 1452 qdisc noqueue state UNKNOWN group default qlen 1000
    link/tunnel6 :: brd ::
    inet $VIP/32 scope global ip6tnl0
       valid_lft forever preferred_lft forever
    inet6 $LINK_LOCAL/64 scope link
       valid_lft forever preferred_lft forever

Auf meiner anderen Maschine kann ich die $VIP curlen, die eine IPv4-Adresse ist, und auf meiner Maschine kann ich über TCP-Dump die gekapselten Pakete sehen

tcpdump: listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
21:32:09.183750 IP6 (hlim 60, next-header UDP (17) payload length: 72) $IPV6_A.53322 > $IPV6_B.42428: [udp sum ok] UDP, length 64

Wenn dieses UDP-Paket also richtig decaptifiziert wird, würde ich erwarten, dass es ein IPv4-Paket enthält, das mit der Quell-IPv4 von $VIP übereinstimmt. Aber wenn ich

tcpdump -i any host $VIP -n

Ich sehe nichts.

Ich habe genau dasselbe Setup für IPv4 wiederholt (IPv4-Paket in IPv4-Paket gekapselt mithilfe von GUE), wobei das Setup für den Empfangstunnel ähnlich ist:

sysctl net.ipv4.conf.all.rp_filter=2
modprobe fou
ip fou add port 42428 gue
ip addr add $VIP/32 dev tunl0
ip link set tunl0 up

In diesem Fall kann ich die entkappten Pakete sehen

root@ipv4-control:~# tcpdump -i any host $VIP -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
23:12:04.749247 IP $VIP.43830 > $VIP.80: Flags [S], seq 2247712115, win 65495, options [mss 65495,sackOK,TS val 2120453320 ecr 0,nop,wscale 7], length 0

$VIP oben ist eine virtuelle IPv4-Adresse, die den HTTP-Verkehr bedient.

Irgendwelche Ideen, was an der Einrichtung meines IPv6-Empfangstunnels falsch ist?

Antwort1

Es stellte sich heraus, dass ich den Modus auf der Schnittstelle ip6tnl0 einstellen musste, da ich IPv4 in IPv6 kapselte. So funktionierte es:

ip -6 tunnel change ip6tnl0 mode ipip6

verwandte Informationen