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.

2 Gedanken zu „MAC-Adressen im Hyper-V-Cluster

  1. Simon

    Guten Abend,

    gibt es in der Praxis Probleme mit MAC-Adressen wie:
    02-00-00-00-00-00
    F2-FF-FF-FF-FF-FF

    Ich denke hier an Lizenzierungen o.ä. - da so eine MAC bei einer üblichen Netzwerkkarte vom Muster eher nicht vorkäme.

    Ich bin daher am rätseln, was man denn dann konkret nimmt ohne sich wiederum das Leben schwer zu machen.
    Wäre schließlich ideal wenn man die VMs einfach durchnummieren könnte:
    02-00-00-00-00-00
    02-00-00-00-00-01

    Auf Software zur Fernwartung hat die MAC-Adresse bekanntlich auch Auswirkungen. Neue MAC, neue ID.
    Wenn obige statische MAC, dann von mehreren Kunden bei entsprechender Software oder bei Lizenzierungen verwendet wird und die MAC nicht mehr weltweit eindeutig - was passiert dann ?
    Oder ist die MAC in solchen Fällen nur eines von mehreren Kriterien anhand der ein Server von der Fernwartungssoftware / Lizenzserver erkannt wird ?

    Danke sehr

    Antworten
    1. mkr

      Jeder Hersteller hat ein Präfix für MAC-Adressen. Den hinteren Teil der Adresse legt er selbst fest und ist für deren Einzigartigkeit verantwortlich. Für selbst gewählte MAC-Adressen gibt es Bereiche, wie im Artikel beschrieben. x2-xx-xx-xx-xx-xx gehört dazu, deshalb sind Deine Beispiele in der Praxis möglich. Ich mache es bei Clustern so: Das letzte Byte zähle ich pro Server hoch, das zweitletzte pro Kunde.

      Welche Auswirkungen die MAC-Adresse auf Anwendungen hat, kommt auf die Software an. Es gibt Lizenzserver, die nur auf die MAC schauen, andere nehmen vielleicht noch den Hostnamen dazu etc. Fernwartungssoftware wird ziemlich sicher noch andere Kriterien berücksichtigen.

      Antworten

Schreiben Sie einen Kommentar

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