MAC-Adressen im Hyper-V-Cluster

Man verschiebt eine virtuelle Maschine auf einen anderen Host im Cluster. Nach einem Neustart verlangt ein Lizenzserver eine erneute Aktivierung. Weshalb das passiert und wie man es verhindern kann, erklärt dieser Beitrag.

Normalerweise kümmert man sich um die IP-Adressen seiner virtuellen Maschinen, aber nicht um deren MAC-Adressen. Die lässt man auf "dynamisch" und alles funktioniert. Es kann aber Fälle geben, in denen man sich genauer mit der Vergabe von MAC-Adressen beschäftigen muss. Ein solcher Fall ist der Betrieb von Lizenzservern, welche über die MAC-Adresse aktiviert werden.

Wie funktioniert die dynamische Vergabe von MAC-Adressen?

MAC-Adressen müssen nicht weltweit, aber innerhalb des Netzwerks eindeutig sein. Um dies sicherzustellen, ohne dass der Administrator etwas konfigurieren muss, hat sich Microsoft ein raffiniertes Verfahren zur Vergabe der MAC-Adressen für Hyper-V ausgedacht. Jeder Host hat einen Pool an MAC-Adressen zur Verfügung, aus welchem er Adressen an virtuelle Maschinen vergibt. Dies funktioniert so ähnlich wie mit den IP-Adressen bei DHCP. Startet eine VM mit dynamischer MAC-Adresse, bekommt sie eine Adresse aus dem Pool des Hosts zugewiesen.

Der Pool wird beim Installieren der Hyper-V-Rolle festgelegt und besteht aus dem Präfix von Microsoft ("00:15:5D") und den letzten zwei Oktetten der IP-Adresse. Das hinterste Byte wird hochgezählt. Somit stehen 256 MAC-Adressen zur Verfügung.

Ein Beispiel:

  1. Präfix
  2. letzte zwei Oktetten der IP-Adresse (hier x.y.1.20)
  3. Zähler

Dieses Prinzip funktioniert auch im Cluster, weil logischerweise jeder Host eine andere IP-Adresse hat.

Was passiert beim Verschieben einer VM auf einen anderen Host?

Wird eine virtuelle Maschine gestartet, erhält sie eine MAC-Adresse aus dem Pool des Hosts, auf dem sie läuft. Bei einer Live-Migration wird sie nicht neu gestartet und ein Wechsel der MAC-Adresse im laufenden Betrieb wäre eine schlechte Idee. Deshalb behält sie in diesem Fall die MAC-Adresse. Aber: sobald sie neu gestartet wird, bekommt sie eine Adresse aus dem Pool des Hosts, auf dem sie läuft!

Das kann bei Lizenzservern dazu führen, dass nach einer Wartung der Hosts inkl. Live-Migration der VMs zuerst alles läuft, aber der Lizenzserver den Dienst verweigert, nachdem die VM später wegen Windows Updates neu gestartet wurde. Durch die zeitliche Distanz ist das Problem möglicherweise nicht so einfach lokalisierbar.

Lösung: fixe MAC-Adressen

Eine Lösung bietet in diesem Fall die fixe Vergabe der MAC-Adressen. Dies ist aber nur für virtuelle Maschinen zu empfehlen, die Probleme mit wechselnden MAC-Adressen haben. Schliesslich muss jede vergebene MAC-Adresse dokumentiert werden.

Man kann sich die fixen MAC-Adressen generieren, indem man den Präfix von Microsoft nimmt und dahinter Werte, welche bei keinem Host vorkommen (und vorkommen werden). Oder man nimmt Adressen aus folgenden Bereichen, welche für die eigenhändige Vergabe vorgesehen sind:

  • x2-xx-xx-xx-xx-xx
  • x6-xx-xx-xx-xx-xx
  • xA-xx-xx-xx-xx-xx
  • xE-xx-xx-xx-xx-xx

Auf keinen Fall darf man einfach die aktuell aktive dynamische MAC-Adresse als statisch eintragen! Dies führt sonst früher oder später zu Adresskonflikten.

Anmerkungen

So elegant das Verfahren zur Bildung der Pool-Adressen auch ist, es hat Nachteile: installiert man die Hosts bei sich immer mit der gleichen IP-Adresse und stellt diese erst beim Kunden um, handelt man sich Konflikte mit doppelten MAC-Adressen ein. Das Gleiche gilt, wenn man die Hosts nach der Installation von Hyper-V klont. Deshalb ist Folgendes zu beachten:

  • vor der Installation von Hyper-V die Netzwerkkonfiguration vornehmen
  • Hosts nicht klonen (das ist ja sowieso Unsinn, denn Windows ist schnell installiert und andere Software gehört nicht auf den Host)

Bei Bedarf kann der Adress-Pool in den Netzwerkeinstellungen von Hyper-V angepasst werden.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.