Generador de direcciones MAC locales

Generador de direcciones MAC locales

RecientementeCopié un guióndeusuario deltaraypara generar direcciones MAC locales aleatorias para máquinas virtuales. Me gusta este script porque es el script bash más fácil y eficaz para generar una dirección MAC.

Sin embargo,todas las direcciones MAC privadas disponibles tienen cuatro octetos OUI diferentes disponiblespara su uso, y mi pregunta es:

¿Cómo aleatorizar el primer conjunto de octetos para direcciones MAC privadas y no tener que preocuparse nunca por colisionar con otra VM?

x2-xx-xx-xx-xx-xx 
x6-xx-xx-xx-xx-xx
xA-xx-xx-xx-xx-xx
xE-xx-xx-xx-xx-xx

Donde las "x" en x2, x6, xA y xE son aleatorias.

Modifiqué el script de deltaray para una dirección MAC privada estática, pero me gustaría ser minucioso y tener la mejor solución, y no solo una solución única.

Mis modificaciones:

#!/bin/bash
hexchars="0123456789ABCDEF"
mac=$( for i in {1..10} ; do echo -n ${hexchars:$(( $RANDOM % 16 )):1} ; done | sed -e 's/\(..\)/:\1/g' )
echo 02$mac

Gracias

Consulte la respuesta a mi pregunta a continuación.

Respuesta1

¿Hay alguna razón por la que las direcciones mac de la VM deban ser aleatorias (en realidad, pseudoaleatorias)? Parece que estás preguntando cómo obtener un período máximo garantizado en una secuencia de números, antes de la superposición. Un simple incremento sería lo más obvio, pero existen CRC con un período máximo para un rango mínimo/máximo permitido. pero no creo que tengas problemas con la secuencial, por lo que CRC sería innecesario.

Con el período máximo, solo tiene que preocuparse por si todavía existe una VM cuando finalice. Si eso puede suceder (debido a la vida útil de sus máquinas virtuales), entonces debe mantener un historial de las máquinas virtuales en ejecución y elegir otra opción hasta que no llegue al historial. Suponiendo que tenga un rango más amplio disponible, que posiblemente todavía esté ejecutando máquinas virtuales, entonces no se superpondrá. Sin embargo, es poco probable que necesite un historial (si usa una secuencia con un período máximo, como un incremento simple). Supongo que la vida útil de sus máquinas virtuales y el número en relación con el espacio que tiene disponible.

Suponiendo que no hay otras direcciones de Mac con las que deba preocuparse por colisionar, aparte de las que usted mismo crea con este algoritmo. Lo cual puede que no sea cierto.

Respuesta2

Me lo imaginé.

#!/bin/bash
# This will generate every possible local MAC address available.  Works on any system that can run the bash shell.
localoctet="26AE"
hexchars="0123456789ABCDEF"
local=$( echo -n ${hexchars:$(( $RANDOM % 16 )):1} ; echo -n ${localoctet:$(( $RANDOM % 4 )):1} )
mac=$( for i in {1..10} ; do echo -n ${hexchars:$(( $RANDOM % 16 )):1} ; done | sed -e 's/\(..\)/:\1/g' )
echo $local$mac

Esto generará todas las direcciones MAC locales posibles.

información relacionada