Come posso ottenere l'indirizzo IPv6 pingabile della mia macchina?


14

quando provo: $ ip -6 addr ottengo qualcosa del tipo:

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

se provo a eseguire il ping dalla macchina stessa:

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

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

Che cosa sto facendo di sbagliato?

Risposte:


24

Qualsiasi indirizzo IPv6 che inizia con fe80:è l'equivalente dell'indirizzo IPv4 169.254.*.*, ovvero è un indirizzo locale di collegamento, raggiungibile solo nel segmento di rete a cui è direttamente collegato, utilizzando la scheda NIC che si collega specificamente a quel segmento. A differenza di IPv4, tuttavia, è perfettamente normale che una scheda NIC disponga contemporaneamente sia dell'indirizzo IPv6 locale di collegamento sia di uno o più indirizzi IPv6 globali.

Poiché un fe80:indirizzo IPv6 è link-local, è necessario specificare l'interfaccia di rete che si desidera utilizzare durante il ping.

Esempio:

$ 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
...

È inoltre possibile aggiungere l'interfaccia alla fine dell'indirizzo mediante il %segno: ping6 fe80::beae:c5ff:febe:a742%eth0.

Questo requisito è solo per gli indirizzi IPv6 con collegamento locale: è possibile eseguire il ping degli indirizzi IPv6 instradabili a livello globale senza specificare l'interfaccia.

$ 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
...

Dice anche scope linkproprio nell'output :)
hobbs

4
Proprio come un'appendice alla risposta: puoi anche specificare l'interfaccia alla fine dell'indirizzo:ping6 fe80::beae:c5ff:febe:a742%eth0
Ferrybig

@Ferrybig: grazie per avermelo ricordato, aggiornata la mia risposta.
telcoM,

1
Si noti che se si desidera eseguire il ping di un indirizzo ipv6 remoto, anche il router di casa deve supportare ipv6. I router meno recenti non dispongono sempre dell'aggiornamento software / firmware per supportare una connessione tramite ipv6. Molto probabilmente riceverai il seguente messaggio:ping6: UDP connect: No route to host
Daniel Gelling,

4

Da man ping6, devi dire a ping quale interfaccia stai usando:

-I indirizzo di interfaccia

Impostare l'indirizzo di origine sull'indirizzo di interfaccia specificato. L'argomento può essere un indirizzo IP numerico o il nome del dispositivo. Quando si esegue il ping dell'indirizzo IP-link locale-link questa opzione è obbligatoria.

Ad esempio, se l'interfaccia è eth0:

ping6 -I eth0 fe80::xxxxxx

o, senza l' -Iopzione:

ping6 fe80:xxxxxx%eth0
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.