Jak uzyskać pingowany adres IPv6 mojego komputera?

14

kiedy próbuję: $ ip -6 addr dostaję coś takiego:

inet6 fe80::d773:9cf0:b0fd:572d/64 scope link

jeśli spróbuję pingować to z samego komputera:

$ ping6 fe80::d773:9cf0:b0fd:572d/64
unknown host

$ ping6 fe80::d773:9cf0:b0fd:572d
connect: Invalid argument

Co ja robię źle?

maraton
źródło

Odpowiedzi:

24

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
...
telcoM
źródło
Mówi także scope linkbezpośrednio na wyjściu :)
hobbs
4
Podobnie jak dodatek do odpowiedzi: możesz również określić interfejs na końcu adresu:ping6 fe80::beae:c5ff:febe:a742%eth0
Ferrybig
@ Ferrybig: dziękuję za przypomnienie, zaktualizowałem moją odpowiedź.
telcoM,
1
Pamiętaj, że jeśli chcesz pingować zdalny adres IPv6, router domowy musi również obsługiwać ipv6. Starsze routery nie zawsze mają aktualizację oprogramowania / oprogramowania układowego w celu obsługi połączenia przez ipv6. Najprawdopodobniej otrzymasz następującą wiadomość:ping6: UDP connect: No route to host
Daniel Gelling
4

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 -Iopcji:

ping6 fe80:xxxxxx%eth0
garethTheRed
źródło