로컬 MAC 주소 생성기

로컬 MAC 주소 생성기

최근에스크립트를 복사했습니다~에서사용자 델타레이가상 머신에 대한 임의의 로컬 MAC 주소를 생성합니다. 나는 이 스크립트가 MAC 주소 생성을 위한 가장 쉽고 효과적인 bash 스크립트이기 때문에 좋아합니다.

하지만,사용 가능한 모든 개인 MAC 주소에는 4개의 서로 다른 OUI 옥텟이 있습니다.내 질문은 다음과 같습니다.

개인 MAC 주소에 대한 첫 번째 옥텟 세트를 무작위로 지정하고 다른 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

여기서 x2, x6, xA 및 xE의 "x"는 무작위로 지정됩니다.

정적 개인 MAC 주소에 대한 Deltaray의 스크립트를 수정했지만 단일 솔루션이 아닌 철저하고 최상의 솔루션을 갖고 싶습니다.

내 모드:

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

VM 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 주소가 생성됩니다.

관련 정보