Генератор локальных MAC-адресов

Генератор локальных MAC-адресов

НедавноЯ скопировал скрипт.отпользователь deltarayдля генерации случайных локальных MAC-адресов для виртуальных машин. Мне нравится этот скрипт, потому что это самый простой и эффективный bash-скрипт для генерации MAC-адреса.

Однако,все доступные частные MAC-адреса имеют четыре различных октета OUIдля использования, и мой вопрос:

Как рандомизировать первый набор октетов для частных MAC-адресов и не беспокоиться о столкновении с другой виртуальной машиной?

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

Где «x» в x2, x6, xA и xE рандомизированы.

Я изменил скрипт deltaray для статического частного MAC-адреса, но мне хотелось бы быть доскональным и иметь лучшее решение, а не просто единственное.

Мои моды:

#!/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

Спасибо

Пожалуйста, смотрите ответ на мой вопрос ниже.

решение1

Есть ли причина, по которой mac-адреса виртуальных машин должны быть случайными (на самом деле псевдослучайными)? Похоже, вы задаете вопрос о том, как получить гарантированный максимальный период в последовательности чисел до перекрытия. Простое увеличение было бы наиболее очевидным, но CRC с максимальным периодом для разрешенного диапазона мин/макс существуют. но я не думаю, что у вас возникнут проблемы с последовательностью, поэтому CRC будет ненужным.

С максимальным периодом вам просто нужно беспокоиться о том, существует ли еще VM, когда вы переносите. Если это может произойти (из-за срока службы ваших VM), то вам нужно сохранить историю запущенных VM и выбрать другой вариант, пока вы не наткнетесь на историю. Предполагая, что у вас есть более широкий диапазон, чем, возможно, все еще запущенные VM, то вы не получите перекрытия. Однако маловероятно, что вам нужна история (если вы используете последовательность с максимальным периодом, например, простое приращение) ... Я предполагаю о сроке службы ваших VM и количестве, относительно доступного вам пространства.

Предполагая, что нет других MAC-адресов, о столкновении с которыми вам нужно беспокоиться, кроме тех, которые вы создаете сами с помощью этого алгоритма. Что может быть неправдой.

решение2

Я понял.

#!/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

Это позволит сгенерировать все возможные локальные MAC-адреса.

Связанный контент