Saltar al contenido

cómo generar una dirección MAC aleatoria desde la línea de comandos de Linux

Si encuentras algún problema en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes subir el código al trabajo final.

Solución:

Solución 1:

yo suelo

macaddr=$(echo $FQDN|md5sum|sed 's/^(..)(..)(..)(..)(..).*$/02:1:2:3:4:5/')

El beneficio de este método, sobre un número completamente aleatorio, es que es posible reproducir de manera confiable la dirección MAC en función del FQDN de la máquina, lo que a veces me resulta útil. los 02 para el primer octeto simplemente establece el bit “asignado localmente”, lo que hace obvio que no es una dirección MAC proporcionada por el proveedor y garantiza que no colisionará con la dirección MAC de una NIC real.

Si necesita generar varias direcciones MAC por host, solía concatenar el FQDN con el nombre del puente para conectar la interfaz; esto hizo un buen trabajo al distribuir las cosas para diferentes NIC.

Solución 2:

Los guiones publicados son buenos, pero quiero agregar una advertencia: ¡Cuidado con el cumpleaños (paradoja)!

Viene del hecho de que incluso si tienes solo 23 personas, la probabilidad ya es del 50% de que 2 de ellas cumplan años el mismo día.

Depende de su escenario cómo lo use, pero si genera el MACS aleatoriamente, con aproximadamente 1 millón, su probabilidad de que un número de mac coincida es del 40% con 2 millones, ¡ya es del 87%!

Si necesita solo un par, está bien, pero cuando mantiene una granja de servidores con cientos de servidores, cada uno de ellos aloja decenas de máquinas virtuales, o si usa macs como índice en alguna base de datos para la contabilidad y necesita únicos, tenga cuidado. !


Solución 3:

Estas variantes también funcionan.

más extenso:

openssl rand -hex 6 | sed 's/(..)(..)(..)(..)(..)(..)/1:2:3:4:5:6/'

o más corto:

openssl rand -hex 6 | sed 's/(..)/1:/g; s/:$//'

El consumo de carga de ambas variantes es muy similar según mediciones rápidas con el tiempo.


Solución 4:

myserver% perl -e 'for ($i=0;$i<6;$i++)@m[$i]=int(rand(256)); printf "%X:%X:%X:%X:%X:%Xn",@m;'
55:C2:A5:FA:17:74

Ah, la vieja motosierra del ejército suizo vuelve a andar. Y por medio de la versión 0.2, estoy robando descaradamente el excelente punto de womble acerca de que el primer octeto es 02:

myserver% perl -e 'for ($i=0;$i<5;$i++)@m[$i]=int(rand(256)); printf "02:%X:%X:%X:%X:%Xn",@m;'
02:8E:94:A3:47:26

Solución 5:

Sé que esta publicación es antigua, pero para los futuros visitantes, si desea una dirección MAC pseudoaleatoria criptográficamente segura, sin estar limitada a 0x02 como OUI, aquí hay un generador agnóstico de plataforma rápido en su mayoría:

$ printf '%02x' $((0x$(od /dev/urandom -N1 -t x1 -An | cut -c 2-) & 0xFE | 0x02)); od /dev/urandom -N5 -t x1 -An | sed 's/ /:/g'

valoraciones y comentarios

Si crees que ha sido provechoso este artículo, nos gustaría que lo compartas con más seniors y nos ayudes a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *