Ziel ist es, eine Hyper-V-VM (in diesem Beispiel ein OL8-Linux – binärkompatibel zu RHEL8) über einen VLAN-Trunk und gleichzeitig über ein Native-VLAN (untagged Frames auf dem VLAN-Trunk) erreichbar zu machen.
Dazu müssen zwei vNICs in Hyper-V angelegt werden. Mir war es nicht möglich das Ganze mit nur einer vNIC umzusetzen.
Laut Microsoft gibt es die Betriebsmodi:
- access (untagged/ingress VM zu vSW | tagged/egress vSW zu LAN)
- untagged (untagged/ingress VM zu vSW | untagged/egress vSW zu LAN)
- trunk (tagged&untagged/ingress VM zu vSW | tagged/egress vSW zu LAN)
Ein „Hybrid“-Modi (tagged&untagged/ingress VM zu vSW | tagged&untagged/egress vSW zu LAN) fehlt.
Nachdem das entsprechende OS auf der VM installiert wurde (dies behandle ich hier nicht weiter), müssen dieser VM zwei vNICs zugewiesen werden:
Add-VMNetworkAdapter -VMName "TEST-OL8x" -SwitchName "vSW" -Name "NIC1-UN" Add-VMNetworkAdapter -VMName "TEST-OL8x" -SwitchName "vSW" -Name "NIC2-TA"
Wichtig: Nicht über die Hyper-V GUI erstllen, dabei können keine eigenen Namen vergeben werden!
Über den Befehlt
Get-VMNetworkAdapterVlan
kann man sich das Ergebnis ansehen:
Standardmäßig wird der Modus „untagged“ dabei voreingestellt. Für das Native-VLAN (NIC1-UN), welches untagged im LAN ausgegeben werden muss, ist das richtig. Die NIC2-TA muss in den „trunk“ Modus geändert werden. Dazu wird der folgende Befehl genutzt:
Set-VMNetworkAdaptervlan -VMName "TEST-OL8x" -VMNetworkAdapterName "NIC2-TA" -Trunk -AllowedVlanIdList "888" -NativeVlanId 900
Damit ändert sich der Modi von NIC2 entsprechend:
Da im Modus „trunk“ immer ein Native-VLAN definiert werden muss, gebe ich hier eine nicht verwendete Blackhole-VLAN-ID an.
Anmerkung: Mit „Native-VLAN“ meint Microsoft hier untagged/ingress, also von der VM zum vSW.
Der Frame wird dann entsprechend getagged und MIT diesem Tag ins LAN übermittelt (genau das ist nicht das Ziel).
Für das weitere Beispiel nutze ich eine Fritzbox mit DHCP (die nur untagged angesprochen werden kann) und einen Mikrotik VLAN-Router der seinen DHCP-Dienst auf VLAN 888 bereitstellt. Die entsprechende Konfiguration beider Geräte wird hier aber nicht weiter behandelt, da das den Rahmen sprengen würde.
Im Linux laufen die NICs bereits mit Standardeinstellungen:
ETH0 hat seine IP bereits korrekt (untagged) über die Fritzbox bezogen. Die Konfiguration von ETH0 ist damit weitgehend abgeschlossen.
ETH1 kann noch keine Verbindung herstellen, da (noch) versucht wird untagged über DHCP eine Adresse zu beziehen, die vNIC aber schon auf den Tag 888 wartet:
An ETH1 muss nun ein VLAN-Interface gebunden werden, dazu kann man die Befehl
nm-connection-editor
nutzen. Alternativ kann man das Ganze auch über die Shell konfigurieren.
Danach sollte der Netzwerk-Dienst neu gestartet werden:
systemctl restart NetworkManager
Die Adresse wird nun auch über ETH1 (Subinterface eth1.888) vom Mikrotik über VLAN 888 bezogen.
ifconfig:
Fitzbox-Lease (untagged):
Mikrotik-Lease (tagged, VLAN-ID 888):
Die korrekt bezogenen Adressen:
Optional können jetzt noch das „Parent Interface“ (ETH1) und nicht benötigte Dienste (z. B. IPv6) im Linux abgeschalten werden. Das Subinterface (ETH1.888) läuft unabhängig davon weiter.
Referenzen:
- https://docs.microsoft.com/en-us/powershell/module/hyper-v/set-vmnetworkadaptervlan?view=windowsserver2019-ps
- https://docs.microsoft.com/en-us/powershell/module/hyper-v/add-vmnetworkadapter?view=windowsserver2019-ps
- https://www.kaiherzig.eu/hyperv-switch-vlan-trunking/
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-configure_802_1q_vlan_tagging_using_the_command_line
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-configure_802_1q_vlan_tagging_using_a_gui
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-starting_networkmanager
- https://social.technet.microsoft.com/Forums/en-US/4f29db0e-b2fb-4634-aae2-502a071b2f29/how-to-delete-a-vlan-on-a-hyper-v?forum=winserverhyperv
- https://blog.pijnappels.eu/creating-a-trunk-with-hyper-v/
- https://www.dtonias.com/find-vm-mac-address-hyper-v/
- https://wiki.mikrotik.com/wiki/Manual:Interface/Bridge#Bridge_VLAN_Filtering
System- und Netzwerkadministrator
Informationstechnik – Netzwerktechnik – Consulting
MCSA+M | MCSE | MTCNA