Локальный генератор 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

, где" 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/(..)/:/g' )
echo 02$mac

спасибо

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

9
задан Community
04.01.2023 15:07 Количество просмотров материала 3686
Распечатать страницу

2 ответа

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

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

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

0
отвечен Kevin Normoyle 2023-01-05 22:55

Я понял.

#!/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/\(..\)/:/g' )
echo $local$mac

это создаст все возможные локальные MAC-адреса.

0
отвечен ina2n 2023-01-06 01:12

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх