Odpowiedzi:
Każdy adres IPv6, który zaczyna się od, fe80:
jest równoważny 169.254.*.*
adresowi IPv4 , tzn. Jest to adres lokalny dla łącza, dostępny tylko w segmencie sieci, z którym jest bezpośrednio połączony, przy użyciu karty sieciowej, która łączy się z tym segmentem. Jednak w przeciwieństwie do IPv4, karta sieciowa ma jednocześnie zarówno lokalny adres IPv6, jak i jeden lub więcej globalnych adresów IPv6.
Ponieważ fe80:
adres IPv6 jest lokalny dla łącza, musisz określić interfejs sieciowy, którego chcesz używać podczas pingowania.
Przykład:
$ 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
...
Można również dołączyć do interfejsu na końcu adresu za pomocą %
znaku: ping6 fe80::beae:c5ff:febe:a742%eth0
.
To wymaganie dotyczy tylko adresów IPv6 lokalnych dla łącza: możesz pingować globalnie routowalne adresy IPv6 bez określania interfejsu.
$ 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
...
ping6 fe80::beae:c5ff:febe:a742%eth0
ping6: UDP connect: No route to host
Od man ping6
, musisz powiedzieć pingowi, którego interfejsu używasz:
-I adres interfejsu
Ustaw adres źródłowy na określony adres interfejsu. Argumentem może być numeryczny adres IP lub nazwa urządzenia. Podczas pingowania adresu lokalnego łącza IPv6 ta opcja jest wymagana.
Na przykład jeśli twój interfejs to eth0
:
ping6 -I eth0 fe80::xxxxxx
lub bez -I
opcji:
ping6 fe80:xxxxxx%eth0
scope link
bezpośrednio na wyjściu :)