ipv6 trouver tous les hôtes dans un préfixe

6

A l'aide de la commande ping6, vous pouvez trouver l'adresse lien-local des hôtes ipv6 à partir d'une interface en utilisant:

 ping6 -I eth0 ff02::1

Cela fera un ping de tout ce qui se trouve dans le sous-réseau et vous permettra de voir ce qui se passe. Cela peut être vu dans ndp.

Est-il possible de faire un ping de tous les éléments d'un préfixe afin de déterminer les adresses unicast à portée globale des hôtes? Notez que cela suppose que les adresses ipv6 sont attribuées de manière statique plutôt que configurées automatiquement à partir d'un rad- de sorte que nous ne pouvons pas simplement nous en sortir à partir d'une adresse mac.

En termes ipv4, cela équivaudrait fonctionnellement à ping -b 192.168.1.0/24

Disons que notre préfixe est 2001:470:1f09:131::/64, cherche un moyen de faire quelque chose comme:

ping6 -b 2001:470:1f09:131::/64

(Je sais que -bc'est la taille du tampon, ceci à titre d'illustration seulement)

Notez que c’est OpenBSD qui ne supporte pas une adresse IP dans -I:

 -I interface
         Source packets with the given interface address.  This flag ap-
         plies if the ping destination is a multicast address, or link-lo-
         cal/site-local unicast address.
Paul
la source
L'implémentation ping6 d'OpenBSD utilise l'argument -S pour spécifier l'adresse source.
Bort

Réponses:

4

Rassembler les éléments de la réponse de Celada et du commentaire de Bort donne le résultat souhaité: vous avez besoin de -Il' -Soption et de l' option.

Donc, en supposant que l'interface réseau vr0avec l'adresse IPv6, 2001:1418:153:0:2e0:c5ff:fe3f:caefvous ayez besoin de cette commande pour faire votre ping de diffusion:

ping6 -I vr0 -S 2001:1418:153:0:2e0:c5ff:fe3f:caef ff02::1

(Suppression des -Srésultats dans les réponses d'écho des adresses de liens locaux uniquement; suppression des -Irésultats pour ne plus avoir aucune réponse.)

Vucar Timnärakrul
la source
2

L' -Iargument peut être une adresse IP ainsi qu'un nom d'interface. Il semble que si vous spécifiez un nom d’interface, il utilise l’adresse lien-local de cette interface comme adresse source. L'astuce pour obtenir des réponses des hôtes provenant de leurs adresses de portée globale consiste à envoyer le ping à partir de votre propre adresse de portée globale:

ping6 -I 2001:db8:xxxx::your:own:ip:address ff02::1
Celada
la source
Merci - cela est utile, malheureusement, j'ai omis le système d'exploitation de la question et OpenBSD ne prend pas en charge les adresses IP dans le -Icommutateur. Question mise à jour.
Paul
Ah, dommage. Désolé, je n'ai aucune connaissance ou expérience OpenBSD :-(
Celada
0

Essayer:

ping6 ff02::1%yournic0

Où se yournic0trouve le nom de l'interface face au lien en question.

Glen Neff
la source
Je ne vois pas pourquoi cela devrait être voté à la baisse: ping ff02 :: 1% eth0 (si vous avez un eth0) fonctionne.
Alexx Roche
@AlexxRoche Parce que, comme expliqué dans la question initiale, cela ne donne pas les informations souhaitées.
Michael Hampton
0
ping6 -c4 ff02::1%$(ip r|grep default|head -n1|awk '{print $NF}')

fc02
:: 1 adresse de diffusion
% (vous pouvez utiliser -I pour l'interface)
ip r | grep default | awk '{print $ NF}' # trouve l'interface par défaut

Alexx Roche
la source
1
ip r | awk '/ def / {print $ NF}' # pour vous les golfeurs anti-grep ;-)
Alexx Roche