Der Virtualisierer Hyper-V von Microsoft bringt verschiedene Einstellungsmöglichkeiten für virtuelle Netzwerke und virtuelle Switche mit. Es lassen sich rein virtuelle Netzwerke oder auch virtuelle Netzwerke, die mit dem Netzwerk des Hostsystems verbunden sind, betreiben. Der folgende Artikel heschäftigt sich daher mit der Hyper-V Netzwerkkonfiguration.
Inhaltsverzeichnis
Kurzübersicht über Netzwerkanbindungen in Hyper-V
Es lassen sich diverse Netzwerkmodi für die virtuellen Maschinen konfigurieren:

Eine schnelle Übersicht über die Netzwerkeinstellungen vermittelt folgende Tabelle:
Netzwerktyp | Zugriff: Host - Gast | Zugriff: Gast - Gast | Zugriff: Gast - externes Netzwerk |
---|---|---|---|
Extern | Ja | Ja | Ja, beide Richtungen |
Intern | Ja | Ja | Nein |
Privat | Nein | Ja | Nein |
NAT-Netzwerk | Nein | Ja | Ja, Gast -> externes Netzwerk |
Netzwerkmodus Extern
In diesem Modus bekommen virtuelle Maschinen direkten Zugriff auf das Hostnetzwerk. Die virtuelle Maschine wird direkt mit der virtuellen Netzwerkkarte an das Netzwerk des Hosts angeschlossen. Die Kommunikation funktioniert daher in beiden Richtungen. Bei der Kunfiguration kann ein Netzwerkadapter des Hosts gewählt werden:

Netzwerkmodus Intern
Die virtuellen Maschinen können in diesem Modus untereinander und mit dem Hyper-V Host kommunizieren. Eine Kommunikation mit dem externen Netzwerk ist hier nicht möglich. Es werden keine IP-Adressen, wie etwa in VirtualBox automatisch vergeben. Die IP-Konfiguration muss also nach der Installation manuell vorgenommen werden.
Netzwerkmodus Privat
Der Netzwerkmodus Privat ist mit dem Netzwerkmodus Internes Netzwerk in VirtualBox vergleichbar. Die Gäste (VMs) können also nur untereinander kommunizieren und nicht mehr dem Host oder dem externen Netzwerk. Wie bei dem Netzwerkmodus Intern, vergibt Hyper-V auch hier keine dynamischen IP-Adressen.
Netzwerkmodus NAT-Netzwerk
Mit Version 1607 von Windows 10 und Windows Server 2016 hat Microsoft Hyper-V um den neuen Netzwermodus NAT-Netzwerk erweitert. Allerdings kann dieser Modus derzeit nur über die Windows PowerShell konfiguriert werden.
In diesem Modus können die virtuellen Maschinen untereinander und mit dem externen Netzwerk kommunizieren. Damit die virtuellen Maschinen in diesem Modus untereinander kommunizieren können, müssen diese dem selben NAT-Netzwerk angehören. Bevor der virtuellen Maschine ein NAT-Netzwerk zugewiesen werden kann, muss ein NAT-Netzwerk vorhanden sein. Dazu sind einige Schritte mit einer administrativen Windows PowerShell durchzuführen.
Zunächst muss ein neuer interner Switch erstellt werden.
New-VMSwitch -SwitchName NAT-Netzwerk -SwitchType Internal

Der neue Switch taucht nachher auch als neuer Netzwerkadapter in den Netzwerkverbindungen unter Windows auf. Alternativ können die virtuellen Switche auch mit dem Cmdlet Get-VMSwitch abgefragt werden.
Als nächstes ist das NAT-Gateway einzurichten. Dafür muss man zunächst den Interface Index des zuvor erstellten Switches heraussuchen und mit New-NetIPAddress das NAT-Gateway erstellen. Der Parameter IPAddress bestimmen, welche IP-Adresse als Gateway in das externe Netzwerk dienen soll. Der Parameter PrefixLength ist wichtig, da später das NAT-Netzwerk noch genauer definiert wird und das Gateway sich im NAT-Netzwerk befinden muss, damit die Kommunikation in das externe Netzwerk problemlos möglich ist.
New-NetIPAddress -IPAddress 192.168.0.1 -PrefixLength 24 -InterfaceIndex <ifIndex>

Wenn der Befehl erfolgreich abgeschlossen wurde, hat der entsprechende Netzwerkadapter auf dem Host auch schon die IP-Adresse zugewiesen bekommen. Diese IP-Adresse dient später bei den virtuellen Maschinen als Gateway.

Das eigentliche NAT-Netzwerk wird schließlich mit folgendem Befehl erzeugt:
New-NetNat -Name NAT-Netzwerk -InternalIPInterfaceAddressPrefix 192.168.0.0/24
Schließlich lässt sich das NAT-Netzwerk (bzw. der NAT-Switch) in den Eigenschaften der VM auswählen:

Portweiterleitungen einrichten
Die VMs des NAT-Netzwerkes können jetzt mit dem externen Netzwerk kommunizieren. Andersherum funktioniert die Kommunikation nicht. Wenn man dennoch bestimmte Dienste in einem NAT-Netzwerk von außerhalb erreichen möchte, muss man mit der PowerShell Portweiterleitungen einrichten.
In diesem Beispiel wird eine Portweiterleitung eingrichtet, die den Port 80 von beliebiger Quell-IP-Adresse auf den Port 80 der VM 192.168.0.2 weiterleitet:
Add-NetNatStaticMapping -NatName NAT-Netzwerk -Protocol TCP -ExternalIPAddress 0.0.0.0 -ExternalPort 80 -InternalIPAddress 192.168.0.2 -InternalPort 80

Wenn man jetzt mehrere Portweiterleitungen für eine aufeinanderfolgende Range einrichten möchte, geht das mit folgendem Snippet:
for ($i=1500; $i -le 1600; $i++)
{
Add-NetNatStaticMapping -NatName NAT-Netzwerk -Protocol TCP -ExternalIPAddress 0.0.0.0 -ExternalPort $i -InternalIPAddress 192.168.0.2 -InternalPort $i;
Add-NetNatStaticMapping -NatName NAT-Netzwerk -Protocol UDP -ExternalIPAddress 0.0.0.0 -ExternalPort $i -InternalIPAddress 192.168.0.2 -InternalPort $i;
}
Das obige Snippet würde eine Portweiterleitung für die Ports 1500 bis 1600 für TCP und UDP einrichten.
Mit Get-NetNatStaticMapping lassen sich alle eingerichteten Portweiterleitungen anzeigen. Wenn die Liste unübersichtlich oder zu lang wird, kann die Ausgabe weiter eingeschränkt werden. Dafür setzen wir einen Filter auf die gewünschte Eigenschaft von NetNatStaticMapping. In diesem Beispiel werden alle Portweiterleitungen mit dem externen Port 80 angezeigt:
Get-NetNatStaticMapping | where{$_.ExternalPort -eq 80}

Über die ID lässt sich dann auch eine gewünschte Portweiterleitung wieder entfernen:
Remove-NetNatStaticMapping -StaticMappingID <id>
Weiterführende Links
https://www.hyper-v-server.de/hypervisor/update-nat-switch-fr-hyper-v-im-windows-server-2016-tp5/
Quellen
http://www.searchnetworking.de/tipp/Extern-Intern-und-Privat-Virtuelle-Switches-in-Hyper-V-richtig-konfigurieren
https://docs.microsoft.com/de-de/virtualization/hyper-v-on-windows/user-guide/setup-nat-network
https://technet.microsoft.com/en-us/itpro/powershell/windows/netnat/add-netnatstaticmapping
2 Antworten auf „Hyper-V Netzwerkkonfiguration inklusive NAT-Netzwerk“
Total gute Anleitung zur Netzwerkkonfiguration, absolut nützlich und ermöglicht direkt einen fundierten Einstieg.
Vielen Dank für die Rückmeldung 🙂