私が試したとき:$ ip -6 addr
私は次のようなものを得ます:
inet6 fe80::d773:9cf0:b0fd:572d/64 scope link
マシン自体からそれをpingしようとすると:
$ ping6 fe80::d773:9cf0:b0fd:572d/64
unknown Host
$ ping6 fe80::d773:9cf0:b0fd:572d
connect: Invalid argument
何が悪いのですか?
fe80:
で始まるIPv6アドレスは、IPv4 169.254.*.*
アドレスに相当します。つまり、これはリンクローカルアドレスであり、NICそのセグメントに具体的に接続します。ただし、IPv4とは異なり、NICがリンクローカルIPv6アドレスの両方を持つことは完全に正常ですand one以上のグローバルIPv6アドレスを同時に。
fe80:
IPv6アドレスはリンクローカルであるため、pingを実行するときに使用するネットワークインターフェイスを指定する必要があります。
例:
$ ping6 fe80::beae:c5ff:febe:a742
connect: Invalid argument
$ ping6 -I eth0 fe80::beae:c5ff:febe:a742
PING fe80::beae:c5ff:febe:a742(fe80::beae:c5ff:febe:a742) from fe80::beae:c5ff:febe:a742%eth0 eth0: 56 data bytes
64 bytes from fe80::beae:c5ff:febe:a742%eth0: icmp_seq=1 ttl=64 time=0.182 ms
64 bytes from fe80::beae:c5ff:febe:a742%eth0: icmp_seq=2 ttl=64 time=0.167 ms
...
%
記号を使用して、アドレスの最後にインターフェイスを追加することもできます:ping6 fe80::beae:c5ff:febe:a742%eth0
。
この要件は、リンクローカルIPv6アドレスの場合のみです。インターフェイスを指定せずに、グローバルにルーティング可能なIPv6アドレスにpingを実行できます。
$ ping6 2a00:1450:400f:80a::200e # that's ipv6.google.com
PING 2a00:1450:400f:80a::200e(2a00:1450:400f:80a::200e) 56 data bytes
64 bytes from 2a00:1450:400f:80a::200e: icmp_seq=1 ttl=55 time=17.6 ms
64 bytes from 2a00:1450:400f:80a::200e: icmp_seq=2 ttl=55 time=19.6 ms
...
man ping6
から、使用しているインターフェースをpingに伝える必要があります。
-Iインターフェースアドレス
送信元アドレスを指定されたインターフェイスアドレスに設定します。引数は数値のIPアドレスまたはデバイスの名前です。 IPv6リンクローカルアドレスにpingする場合、このオプションは必須です。
たとえば、インターフェースがeth0
の場合:
ping6 -I eth0 fe80::xxxxxx
または、-I
オプションなし:
ping6 fe80:xxxxxx%eth0