Comment obtenir l'adresse IPv6 pingable de ma machine?

14

quand j'essaye: $ ip -6 addr j'obtiens quelque chose comme:

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

si j'essaie de faire un ping depuis la machine elle-même:

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

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

Qu'est-ce que je fais mal?

marathon
la source

Réponses:

24

Toute adresse IPv6 commençant par fe80:est équivalente à l' 169.254.*.*adresse IPv4 , c'est-à-dire qu'il s'agit d'une adresse de lien local, accessible uniquement dans le segment de réseau auquel elle est directement connectée, en utilisant la carte réseau qui se connecte spécifiquement à ce segment. Contrairement à IPv4, cependant, il est parfaitement normal qu'une carte d'interface réseau possède à la fois l'adresse IPv6 de liaison locale et une ou plusieurs adresses IPv6 globales simultanément.

Dans la mesure où une fe80:adresse IPv6 est link-local, vous devez spécifier l'interface réseau que vous souhaitez utiliser lors de la commande ping.

Exemple:

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

Vous pouvez également ajouter l'interface à la fin de l'adresse en utilisant le %signe: ping6 fe80::beae:c5ff:febe:a742%eth0.

Cette exigence concerne uniquement les adresses IPv6 locales de liaison: vous pouvez envoyer une requête ping aux adresses IPv6 routables globalement sans spécifier l'interface.

$ 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
la source
Il est également indiqué scope linkdans la sortie :)
hobbs
4
Juste en annexe à la réponse: vous pouvez également spécifier l'interface à la fin de l'adresse:ping6 fe80::beae:c5ff:febe:a742%eth0
Ferrybig
@Ferrybig: merci de me le rappeler, mis à jour ma réponse.
telcoM
1
Notez que si vous souhaitez envoyer une requête ping à une adresse ipv6 distante, votre routeur domestique doit également prendre en charge ipv6. Les routeurs plus anciens ne disposent pas toujours de la mise à jour du logiciel / firmware pour prendre en charge une connexion via ipv6. Vous obtiendrez très probablement le message suivant:ping6: UDP connect: No route to host
Daniel Gelling
4

À partir de man ping6, vous devez indiquer à ping quelle interface vous utilisez:

-Adresse d'interface I

Définissez l'adresse source sur l'adresse d'interface spécifiée. L'argument peut être l'adresse IP numérique ou le nom du périphérique. Lorsque vous envoyez une requête ping à l'adresse IPv6 link-local, cette option est requise.

Par exemple, si votre interface est eth0:

ping6 -I eth0 fe80::xxxxxx

ou, sans l' -Ioption:

ping6 fe80:xxxxxx%eth0
garethTheRed
la source