Nous savons que nous pouvons utiliser l'adresse MAC pour créer un identifiant d'interface, par exemple pour une adresse IPv6 de liaison locale qui devrait être unique dans le réseau.
L'image montre la façon de procéder:
Mes questions sont:
- Comment puis-je créer une adresse IPv6 à partir d'un MAC en utilisant
awk
oused
? - OU existe-t-il une commande qui me donne l'adresse IPv6 de liaison locale pour un MAC spécifique (quelque chose comme ça
createIPv6 myMAC
)?
sed
awk
ipv6
mac-address
Nidal
la source
la source
Réponses:
Si vous souhaitez créer une adresse IPv6 entière à partir d'un MAC (et d'un préfixe donné), vous pouvez utiliser l'excellent
ipv6calc
outil de Peter Bieringer.La commande suivante crée une adresse IPv6 de liaison locale (
fe80::
préfixe) à partir d'une adresse MAC:Vous pouvez laisser la plupart des options de côté et laisser la commande deviner quoi faire:
Pour les distributions Debian, se
ipv6calc
trouve dans le référentiel principal.la source
De l' entrée Wikipedia IPv6 une description plus textuelle:
Donc, remplacer le troisième
:
par:FF:FE:
devrait faire l'affaire:Aucune idée si cette syntaxe est spécifique à GNU sed.
Travail en cours:
Convertissez cela en bits:
devrait se traduire par les bits
00000000 00001100 00101001 11111111 11111110 00001100 01000111 11010101
ne laissant que le retournement du bit numéro 7.la source
la source
Vous pouvez créer une fonction bash (et la placer dans votre
~/.bashrc
) qui utiliseIFS
pour diviser l'adresse MAC en 6 groupes séparés par deux-points et les assemble. Vous devrez également retourner le 7e bit le plus significatif, c'est-à-dire le bit 1 du premier octet:Exemple d'utilisation:
la source
Je dois féliciter @ rubo77 ci-dessus pour une réponse pure-shell (sauf si vous comptez printf) ci-dessus, que je cherchais.
Cela ajoute un peu de sed à:
(a) supprimer tous les zéros non significatifs dans chaque bloc de 16 bits; et
(b) élider tout autre bloc entièrement nul au début de l'IID
... selon les conventions courantes pour la brièveté des adresses.
Notez que si vous souhaitez le réutiliser pour d'autres préfixes (arbitraires), ce que vous pourriez, car EUI-64 peut être utilisé dans n'importe quelle portée (bien qu'il soit conseillé de ne pas l'utiliser pour des adresses globales pour des raisons de confidentialité), vous auriez besoin d'un script sed plus alambiqué. C'est parce que le
fe80::
préfixe contient déjà trois morceaux zéro (élidés au double-colon) adjacents au début de l'IID. Ainsi, même si le premier morceau de l'IID est entièrement composé de zéros (c'est-à-dire si le MAC a commencé par02:00
), il serait également élidé. Le format EUI-64 ne laisse qu'un autre morceau qui pourrait être tout à fait zéro - le dernier - que le script ci-dessus ajoute en un seul zéro. D'autres préfixes peuvent nécessiter que l'un laisse un seul zéro entre deux deux-points.la source
printf
fait les trucs supplémentaires dans sed à la place.