web-dev-qa-db-ja.com

マシンのping可能なIPv6アドレスを取得するにはどうすればよいですか?

私が試したとき:$ 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

何が悪いのですか?

14
marathon

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
...
24
telcoM

man ping6から、使用しているインターフェースをpingに伝える必要があります。

-Iインターフェースアドレス

送信元アドレスを指定されたインターフェイスアドレスに設定します。引数は数値のIPアドレスまたはデバイスの名前です。 IPv6リンクローカルアドレスにpingする場合、このオプションは必須です。

たとえば、インターフェースがeth0の場合:

ping6 -I eth0 fe80::xxxxxx

または、-Iオプションなし:

ping6 fe80:xxxxxx%eth0
4
garethTheRed