GNU/Linux >> LINUX-Kenntnisse >  >> Linux

wie man eine zufällige MAC-Adresse über die Linux-Befehlszeile generiert

Lösung 1:

Ich verwende

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

Der Vorteil dieser Methode gegenüber einer völlig zufälligen Zahl besteht darin, dass es möglich ist, die MAC-Adresse basierend auf dem FQDN des Computers zuverlässig zu reproduzieren, was ich manchmal nützlich finde. Der 02 für das erste Oktett setzt nur das "lokal zugewiesene" Bit, was deutlich macht, dass es sich nicht um eine vom Anbieter bereitgestellte MAC-Adresse handelt, und garantiert, dass Sie nicht mit der MAC-Adresse einer echten Netzwerkkarte kollidieren.

Wenn Sie mehrere MAC-Adressen pro Host generieren müssen, habe ich den FQDN mit dem Namen der Bridge verkettet, mit der die Schnittstelle verbunden werden soll. Dies hat gute Arbeit geleistet, um die Dinge auf verschiedene NICs zu verteilen.

Lösung 2:

Die geposteten Skripte sind gut, aber ich möchte eine Warnung hinzufügen:Achte auf den Geburtstag (Paradoxon)!

Das ergibt sich aus der Tatsache, dass selbst bei nur 23 Personen die Chance bereits 50 % beträgt, dass 2 von ihnen am selben Tag Geburtstag haben.

Es hängt von Ihrem Szenario ab, wie Sie es verwenden, aber wenn Sie die MACS zufällig generieren, beträgt Ihre Wahrscheinlichkeit für einen Mac-Nummernkonflikt bei ca. 1 Million 40 %, bei 2 Millionen bereits 87 %!

Wenn Sie nur ein paar benötigen, ist dies in Ordnung, aber wenn Sie eine Serverfarm mit Hunderten von Servern unterhalten, von denen jeder Dutzende von virtuellen Maschinen hostet, oder wenn Sie die Macs als Index in einer Datenbank für die Buchhaltung verwenden und eindeutige Zeichen benötigen, seien Sie vorsichtig !

Lösung 3:

Diese Varianten funktionieren auch.

länger:

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

oder kürzer:

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

Der Lastverbrauch beider Varianten ist laut Schnellmessung mit der Zeit sehr ähnlich.

Lösung 4:

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

Ah, die alte Schweizer Kettensäge fährt wieder. Und in Version 0.2 stehle ich unverschämt Wombles hervorragenden Punkt, dass das erste Oktett 02 ist:

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

Lösung 5:

Ich weiß, dass dieser Beitrag alt ist, aber für zukünftige Besucher, wenn Sie eine kryptografisch sichere pseudozufällige MAC-Adresse wünschen, ohne auf 0x02 als OUI beschränkt zu sein, finden Sie hier einen schnellen, größtenteils plattformunabhängigen Generator:

$ 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'

Linux
  1. So installieren Sie Software über die Linux-Befehlszeile

  2. Linux – Wie starte ich eine Windows-Partition von der Grub-Befehlszeile aus?

  3. Wie rufe ich ein Openoffice-Makro von der Linux-Befehlszeile aus auf?

  4. Wie kann ich einen Ordner über die Linux-Befehlszeile kopieren?

  5. So führen Sie TeX über die Befehlszeilenschnittstelle in Linux aus

Programmieren Sie Hardware über die Linux-Befehlszeile

So finden Sie die öffentliche IP-Adresse über die Befehlszeile unter Linux heraus

So suchen Sie nach Dateien über die Linux-Befehlszeile

Verzeichnis in Linux entfernen – So löschen Sie einen Ordner von der Befehlszeile aus

Wie erstelle ich Cmyk-Bilder über die Befehlszeile unter Linux?

So finden Sie die IP-Adresse in der Linux-Befehlszeile