Генератор локальных MAC-адресов
Недавно я скопировал скрипт из deltaray для генерации случайных локальных MAC-адресов для виртуальных машин. Мне нравится этот скрипт, потому что это самый простой и эффективный скрипт для генерации 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
Где "х" в х2, х6, хА и хЕ рандомизированы.
Я изменил скрипт 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
Спасибо
Пожалуйста, смотрите ответ на мой вопрос ниже.
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-адреса.
Есть ли причина, по которой виртуальные MAC-адреса должны быть случайными (на самом деле псевдослучайными)? Похоже, вы задаете вопрос о том, как получить гарантированный максимальный период в последовательности чисел, до наложения. Простое приращение было бы наиболее очевидным, но существуют CRC с максимальным периодом для допустимого минимального / максимального диапазона. но я не думаю, что у вас возникнут проблемы с последовательным доступом, поэтому CRC не понадобится.
При максимальном периоде вам просто нужно беспокоиться о том, существует ли виртуальная машина, когда вы ее переносите. Если это может произойти (из-за срока службы ваших виртуальных машин), то вам нужно вести историю запуска виртуальных машин и выбирать другой вариант, пока вы не попадете в историю. Предполагая, что у вас есть более широкий диапазон, чем, возможно, все еще работающие виртуальные машины, вы не получите перекрытия. Маловероятно, однако, что вам нужна история (если вы используете последовательность с максимальным периодом, например, простым приращением) . Я предполагаю время жизни ваших виртуальных машин и их количество относительно свободного пространства, которое у вас есть.
Предполагая, что нет других аддеров Mac, с которыми вам нужно беспокоиться о столкновении, кроме тех, которые вы создали сами с помощью этого алгоритма. Что не может быть правдой.