Sabemos que podemos usar la dirección MAC para crear un identificador de interfaz, por ejemplo, para una dirección IPv6 de enlace local que debería ser única en la red.
La imagen muestra la forma de hacer esto:
Mis preguntas son:
- ¿Cómo puedo crear una dirección IPv6 desde un MAC usando
awk
osed
? - ¿O hay algún comando que me dé la dirección IPv6 local de enlace para un MAC específico (algo así
createIPv6 myMAC
)?
sed
awk
ipv6
mac-address
Nidal
fuente
fuente
Respuestas:
Si desea crear una dirección IPv6 completa desde un MAC (y un prefijo dado), puede usar la excelente
ipv6calc
herramienta de Peter Bieringer.El siguiente comando crea una dirección IPv6 de enlace local (
fe80::
prefijo) a partir de una dirección MAC:Puede dejar de lado la mayoría de las opciones y dejar que el comando adivine qué hacer:
Para las distribuciones de Debian,
ipv6calc
está en el repositorio principal.fuente
De la entrada de Wikipedia de IPv6, una descripción más textual:
Por lo tanto, reemplazar el tercero
:
con:FF:FE:
debería hacer el truco:No tengo idea si esa sintaxis es específica de GNU sed.
Trabajo en progreso:
Convierta eso en bits:
debería dar como resultado que los bits
00000000 00001100 00101001 11111111 11111110 00001100 01000111 11010101
dejen solo el giro del bit número 7.fuente
fuente
Puede crear una función bash (y colocarla en su
~/.bashrc
) que se usaIFS
para dividir la dirección MAC en 6 grupos separados por dos puntos y ensamblarlos. También deberá voltear el séptimo bit más significativo, es decir, el bit 1 del primer byte:Ejemplo de uso:
fuente
Debo felicitar a @ rubo77 arriba por una respuesta de caparazón puro (a menos que cuentes con printf) arriba, que estaba buscando.
Esto agrega un poco de sed a:
(a) eliminar cualquier cero inicial en cada fragmento de 16 bits; y
(b) elimine cualquier fragmento adicional de cero al comienzo del IID
... según convenciones comunes para la brevedad de la dirección.
Tenga en cuenta que si desea reutilizar esto para otros prefijos (arbitrarios), lo que podría hacer ya que EUI-64 puede usarse en cualquier ámbito (aunque se recomienda no usarlo para direcciones globales por razones de privacidad), necesitaría un poco guión sed más complicado. Esto se debe a que el
fe80::
prefijo ya contiene tres pedazos cero (eluidos al doble punto) adyacentes al inicio del IID. Por lo tanto, incluso si el primer fragmento del IID son todos ceros (es decir, si el MAC comenzó con02:00
), también se eliminaría. El formato EUI-64 solo deja un fragmento adicional que podría ser todo cero, el último, que el script anterior agrega nuevamente como un solo cero. Otros prefijos pueden requerir que uno deje un solo cero entre dos puntos.fuente
printf
solo e hice las cosas adicionales en sed.