LinuxでIPv6用のGUE受信トンネルを設定する方法

LinuxでIPv6用のGUE受信トンネルを設定する方法

GUEカプセル化されたIPv4パケットを含むIPv6パケットを受信するようにGUEトンネルを設定しようとしていますが、パケットのカプセル化を無効にするのに問題があります。 IPv6パケットには、内部にIPv4パケットを含むGUEカプセル化パケットがあります。内側には受信トンネルが設定されています。

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

生成されたip6tnl0は次のとおりです。

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

私の他のコンピュータではIPv4アドレスである$ VIPを呼び出し、私のコンピュータではtcp-dumpを介してカプセル化されたパケットを見ることができます。

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

したがって、そのUDPパケットが正しく開かれたら、$ VIPの送信元IPv4と一致するIPv4パケットを含めたいと思います。しかし、私が走るとき

tcpdump -i any host $VIP -n

私は何も見なかった。

受信トンネルについても同様の設定を使用して、IPv4とまったく同じ設定を繰り返しました(GUEを使用してIPv4パケット内にIPv4パケットをカプセル化します)。

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

この場合、封印されていないパケットを見ることができます。

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は、httpトラフィックを提供する仮想ipv4アドレスです。

IPv6受信トンネルの設定方法に問題がありますか?

ベストアンサー1

IPv6でIPv4をカプセル化するため、ip6tnl0インターフェイスでモードを設定する必要があることがわかりました。これは以下の目標を達成する。

ip -6 tunnel change ip6tnl0 mode ipip6

おすすめ記事