デフォルトインターフェイス(eth0)では、IPv6を介して仮想タブネットワークインターフェイスをpingできません。

デフォルトインターフェイス(eth0)では、IPv6を介して仮想タブネットワークインターフェイスをpingできません。

私は友達とのコミュニケーションに問題があります仮想タブデバイスIPv6経由。本質的にはping6 -I eth0 <tap interface link-local ipv6 address>何も返しません。蛇口を介してホスト側のエンドポイントをpingすることもできません。

[user ~]$ ping6 -I eth0 fe80::88a2:f6ff:fe6f:90cb
PING fe80::88a2:f6ff:fe6f:90cb(fe80::88a2:f6ff:fe6f:90cb) from fe80::4f3:9ff:fec9:2032%eth0 eth0: 56 data bytes
^C
--- fe80::88a2:f6ff:fe6f:90cb ping statistics ---
8 packets transmitted, 0 received, 100% packet loss, time 7162ms

そして、eth0のtcpdump出力は次のようになります。

20:54:00.658849 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 1
20:54:01.673920 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 2
20:54:02.698029 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 3
20:54:03.722004 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 4
20:54:04.745974 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 5

予想どおり、Tapデバイスインターフェイスのtcpdumpエラーは空です。 eth0自体でpingを実行できます。eth0Tapインターフェイスでpingを実行できず、エラーが発生しますconnect: Network is unreachable。しかし、tcpdumpによると、pingはTapデバイスに到達しないように見えるので、これは別の問題だと思います。

私のネットワーク設定です

[user ~]$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001
        inet 172.30.255.7  netmask 255.255.255.240  broadcast 172.30.255.15
        inet6 2600:1f14:XXXX:XXXX:e134:ff0c:cccd:b262  prefixlen 128  scopeid 0x0<global>
        inet6 fe80::4f3:9ff:fec9:2032  prefixlen 64  scopeid 0x20<link>
        ether 06:f3:09:c9:20:32  txqueuelen 1000  (Ethernet)


[user ~]$ ifconfig tp-0ge-0000gf-0
tp-0ge-0000gf-0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 169.254.18.114  netmask 255.255.255.252  broadcast 0.0.0.0
        inet6 fe80::88a2:f6ff:fe6f:90cb  prefixlen 64  scopeid 0x20<link>
        ether 8a:a2:f6:6f:90:cb  txqueuelen 1000  (Ethernet)

現在のパスは次のとおりです。

[user ~]$ ip -6 r s
    2600:1f14:XXXX:XXXX:XXXX:ff0c:cccd:b262 dev eth0 proto kernel metric 256 expires 439sec pref medium
    fe80::4f3:9ff:fec9:2032 dev eth0 metric 1024 pref medium
    fe80::88a2:f6ff:fe6f:90cb dev tp-0ge-0000gf-0 metric 1024 pref medium
    default via fe80::460:a1ff:fec3:9cb6 dev eth0 metric 1024 pref medium

ip6tablesフィルタテーブルはすべてを通過します。

[user ~]$ sudo ip6tables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

Tapとeth0を有効にし、net.ipv6.conf.[inteface].forwarding明らかにipv6を有効にしました。他の重要なカーネルパラメータがある場合は、ここに追加します。

これはAmazon Linux 2にありますcat /etc/os-release

NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"

含める必要がある他の情報がある場合はお知らせください。どんなアドバイスも本当にありがとうございます。

答え1

ifconfigはじめに、IPv6をほとんど処理できない場合でも絶対に使用しないことに慣れる必要があります。を使用するのと同じ方法でip -6 route show常にip address show(and ip link show)を使用してください。ifconfigこれで、廃止された(廃止されたカーネルAPIの使用による)コマンドの制限(Linux上)による問題を回避できます。

情報が必要な場合がある3つのポイントがわかります。

  1. IPv6リンク - ローカルアドレスにもインターフェイスを完全にアドレス指定する必要があります。

IPv6インターフェイスに接続されているすべてのネットワークは同じリンクローカルアドレスを受け入れるため、アドレスが割り当てられているインターフェイスにはフルリンクレイヤアドレスが必要です。に指定されていますRFC 4007:

これらの文字列の候補候補の1つはインターフェイス名です。インターフェイスはすべての範囲を一意に明確にするからです。

システムに完全に割り当てられたリンク - ローカルアドレスは次のとおりです。

    fe80::4f3:9ff:fec9:2032%eth0
    fe80::88a2:f6ff:fe6f:90cb%tp-0ge-0000gf-0
  1. ローカルアドレスはホストに属します

loしたがって、これらのルーティングが許可されると、それらの間の(ループバック)インターフェイスを介してルーティングされます。しないでください。パケットを受信できない場所を介して強制的に送信されますping -I eth0eth0したがって、ping動作することは次のとおりです。

    ping fe80::88a2:f6ff:fe6f:90cb%tp-0ge-0000gf-0

そしてローカルなので、システムはデフォルトで同じソースを選択します。あるインターフェイスに接続されているローカルリンク - ローカルアドレスから別のインターフェイスに接続されている別のリンク - ローカルアドレスに移動することは許可されていません(ただし、すべてのインターフェイスのグローバルアドレスから別のインターフェイスローカルアドレスのリンク - ローカルアドレスへ)。または同じインターフェイスの2番目のローカルの場合)。だからこれは失敗します:

    ping -I fe80::4f3:9ff:fec9:2032%eth0 fe80::88a2:f6ff:fe6f:90cb%tp-0ge-0000gf-0

しかしこれはうまくいきます:

    ping -I 2600:1f14:XXXX:XXXX:e134:ff0c:cccd:b262 fe80::88a2:f6ff:fe6f:90cb%tp-0ge-0000gf-0

これは、TAP インターフェイスが動作しているという意味ではありません。ローカルシステム自体からローカルシステムをpingし、TAPインターフェイスをまったく使用しません。

  1. TUN / TAPインターフェースの重要な部分は、表示されるローカルアドレスではありません。

TUN/TAPインタフェースで重要なこと作業プロセス接続は、フレームまたはパケットを受信し、それを処理(またはトンネリング)するこのインターフェイスの背後にあります。チュートリアルでは、以下はステップ6で実行されるプロセスです。

    STEP#6 KVM qemu command to startup Guest using tap0 device

このオプションを使用します。前に設定したインターフェイス-net tap,script=no,ifname=tap0,vlan=0に接続します。tap0TUN/TAP インターフェースの鍵は、システム・ネットワークをプロセスに接続することです。

インターフェイスにtp-0ge-0000gf-0リンクローカルアドレスが自動的に割り当てられるため、これはそのインターフェイスに実行中のプロセスが接続されているか存在したことを意味しますtp-0ge-0000gf-0。使用中ip link show tp-0ge-0000gf-0またはip address show tp-0ge-0000gf-0存在するかどうかを確認できる場合LOWER_UP(ここでは次の翻訳)添付プロセス)変えるNO-CARRIERプロセスが添付されていません。)。ifconfigそのような情報は表示されません。たとえば、これらのプロセスはopenvpnQEMUまたはQEMUです。リレー/トンネルアプリケーションssh(チューニングまたはタブトンネルモードを使用)とsocatツールには追加のオプションもあります(ただしsocat、リレーのみ:組み込みネットワークスタックは含まれていません)。

IPv6を処理(またはトンネリング)するように設定されている場合は、(見えない)末尾にリンクローカルアドレスが割り当てられ、グローバルアドレスも割り当てられます。

pingを介してリモートリンクローカルIPv6アドレスを取得できる必要があります。リンクにローカルなすべてのノードのアドレス宛先(まだインターフェイスを指定):

    ping ff02::1%tp-0ge-0000gf-0

どのルータがあるかを検索するには(存在する場合)、リンクにローカルであるすべてのルータアドレスをpingできます。

    ping ff02::2%tp-0ge-0000gf-0

答え2

これはIPv6リンク - ローカルアドレスであり、リンク内にのみ「常駐」してtp-0ge-0000gf-0ルーティングすることはできませんeth0

pingするには、最後に次のようにデバイスを指定する必要があります。

$ ping6 fe80::88a2:f6ff:fe6f:90cb%tp-0ge-0000gf-0

関連情報