Wir wissen, dass wir die MAC-Adresse verwenden können, um eine Schnittstellenkennung zu erstellen, z. B. für eine verbindungslokale IPv6-Adresse, die im Netzwerk eindeutig sein sollte.
Das Bild zeigt den Weg dazu:
Meine Fragen sind:
- Wie kann ich mit
awk
oder eine IPv6-Adresse von einem MAC erstellensed
? - ODER gibt es einen Befehl, der mir die verbindungslokale IPv6-Adresse für einen bestimmten MAC gibt (so ähnlich
createIPv6 myMAC
)?
sed
awk
ipv6
mac-address
Nidal
quelle
quelle
Antworten:
Wenn Sie eine ganze IPv6-Adresse aus einem MAC (und einem bestimmten Präfix) erstellen möchten, können Sie das hervorragende
ipv6calc
Tool von Peter Bieringer verwenden.Der folgende Befehl erstellt eine verbindungslokale IPv6-Adresse (
fe80::
Präfix) aus einer MAC-Adresse:Sie können die meisten Optionen weglassen und den Befehl raten lassen, was zu tun ist:
Für Debian-Distributionen
ipv6calc
befindet sich im Haupt-Repository.quelle
Aus dem IPv6-Wikipedia- Eintrag eine ausführlichere Beschreibung:
Das Ersetzen des dritten
:
durch:FF:FE:
sollte also den Trick tun:Keine Ahnung, ob diese Syntax spezifisch für GNU sed ist.
In Arbeit:
Konvertieren Sie das in Bits:
sollte dazu führen, dass die Bits
00000000 00001100 00101001 11111111 11111110 00001100 01000111 11010101
nur das Umdrehen von Bit Nummer 7 lassen.quelle
quelle
Sie können eine Bash-Funktion erstellen (und in Ihre platzieren
~/.bashrc
), mitIFS
der die MAC-Adresse in 6 durch Doppelpunkte getrennte Gruppen aufgeteilt und zusammengesetzt wird. Sie müssen auch das 7. höchstwertige Bit umdrehen, dh Bit 1 des ersten Bytes:Anwendungsbeispiel:
quelle
Ich muss @ rubo77 oben ein Lob aussprechen, um eine reine Shell-Antwort (es sei denn, Sie zählen printf) oben zu erhalten, die ich gesucht habe.
Dies fügt ein wenig Sed hinzu zu:
(a) Eliminieren aller führenden Nullen in jedem 16-Bit-Block; und
(b) zu Beginn der IID weitere Null-Null-Stücke entfernen
... gemäß den üblichen Konventionen für die Kürze der Adressen.
Wenn Sie dies für andere (willkürliche) Präfixe verwenden möchten, die Sie möglicherweise verwenden, da EUI-64 in jedem Bereich verwendet werden kann (obwohl empfohlen wird, es aus Datenschutzgründen nicht für globale Adressen zu verwenden), benötigen Sie ein geringfügiges Präfix verschlungener sed script.
fe80::
Dies liegt daran, dass das Präfix bereits drei Null-Chunks (elidiert zum Doppelpunkt) neben dem Start der IID enthält. Selbst wenn der erste Block der IID aus Nullen besteht (02:00
dh wenn der MAC mit beginnt), würde er ebenfalls entfernt. Das EUI-64-Format lässt nur einen weiteren Block übrig, der ganz Null sein kann - den letzten -, den das obige Skript als einzelne Null wieder hinzufügt. Bei anderen Präfixen muss möglicherweise eine einzige Null zwischen zwei Doppelpunkten stehen.quelle
printf
alleine gelassen und stattdessen die zusätzlichen Sachen in sed gemacht.