NAT-Switch in Hyper-V einrichten unter Windows 10 und Server 2016


    Tags: , , , ,

    Konfiguration von Virtual SwitchesWährend VMware Work­station oder VirtualBox schon lange die Konfi­guration von NAT für virtu­elle Maschinen erlauben, bot Hyper-V dieses Fea­ture bisher nicht. Das ändert sich mit Win­dows 10 und Server 2016, die pro Host einen NAT-vSwitch unterstützen. Ein integrierter DHCP-Server kam mit Windows 10 1709 hinzu.

    Microsoft hat mit Windows Server 2016 TP4 und Windows 10 1511 einen eigenen Switch-Typ für NAT eingeführt, diesen aber in späteren Versionen wieder entfernt. Daher muss man einen NAT-Switch auf Basis des Typs intern konfigurieren. Eine GUI-Option existiert dafür nicht, die Konfiguration ist auf PowerShell beschränkt.

    Hyper-V kennt daher weiterhin nur drei Arten von virtuellen Switches: Extern, Intern und Privat. Während ein externer vSwitch den VMs Zugriff auf Ressourcen des gesamten Netzwerks erlaubt, beschränken interne und private Switches die Kommunikation auf den Host und seine VMs bzw. nur auf VMs des betreffenden Hosts.

    Notwendigkeit für eigenen NAT-Router entfällt

    Wer in der Vergangengeit auf einem Host ein eigenes NAT-Netzwerk für die VMs einrichten wollte, musste sich für einen Switch vom Typ Intern entscheiden und zusätzlich eines der Gastbetriebs­systeme als Router konfigurieren, etwa durch Aktivierung von Internet Connection Sharing unter Windows.

    Die Notwendigkeit für solche Behelfslösungen entfällt nun in Windows 10 und Server 2016. Ein für NAT-Netzwerke konfigurierter interner vSwitch wickelt den Traffic der VMs mit der Außenwelt über die Public IP des Host-Computers ab.

    Konfiguration nur über PowerShell

    Die Einrichtung eines NAT-vSwitches ist nicht über die GUI des Hyper-V Managers möglich. Die einzige Option ist zurzeit PowerShell, das für diesen Zweck die nötigen Cmdlets bereitstellt.

    Im ersten Schritt richtet man mit New-VMSwitch einen neuen internen vSwitch ein, in diesem Beispiel erhält er den Namen NATSwitch:

    New-VMSwitch -Name NATSwitch -SwitchType Intern

    Anschließend kann man sich mit dem Befehl Get-VMSwitch einen Überblick verschaffen und sich überzeugen, dass der neue vSwitch angelegt wurde.

    Anlegen eines neuen vSwitch vom Typ Intern mit PowerShell

    Im nächsten Schritt konfiguriert man das Gateway für den neuen vSwitch. Dafür benötigt man zuerst den Interface-Index, den man durch den Aufruf von

    Get-NetAdapter

    ermitteln kann.

    Konfiguration des Gateways für den NAT-Switch

    Nun führt man New-NetIPAddress aus, dem man die gewünschte IP-Adresse des Gateways (typischerweise die xxx.xxx.xxx.1), die Präfixlänge des Subnets (abhängig von der Netmask beispielsweise 24 oder 32) sowie den oben erwähnten Interface-Index übergibt:

    New-NetIPAddress -IPAddress 192.168.99.1 -PrefixLength 24 -InterfaceIndex 13

    Schließlich erzeugt man mit Hilfe von New-NetNat ein neues NAT-Objekt auf dem Host, das die internen Adressen in externe übersetzt. Dabei gibt man das gleiche Subnet an, das man bereits für die Einrichtung des Switches verwendet hat:

    New-NetNat -Name MyNAT -InternalIPInterfaceAddressPrefix 192.168.99.0/24

    NAT-Netzwerk des vSwitch konfigurieren mit New-NetNat

    Mit diesen PowerShell-Kommandos ist die grundsätzliche Konfi­guration des NAT-Netzwerks abgeschlossen.

    IP-Konfiguration der VMs

    Verbindet man nun VMs mit dem NAT-Switch, dann erhalten sie nicht automatisch eine IP aus dem zuvor festlegten Adresskreis. Anders als etwa die VMware Workstation vergibt Hyper-V nämlich keine dynamischen Adressen. Daher ist man entweder gezwungen, feste Adressen in den VMs einzutragen oder einen DHCP-Server in einer der VMs zu installieren.

    Betreibt man Windows Server als einen der Gäste, dann kann man dort den integrierten DHCP-Dienst aktivieren. Für die Client-Versionen des Betriebs­systems existiert eine Reihe von kostenlosen Implemen­tierungen, beispielsweise DHCP Server for Windows oder Open DHCP Server.

    Zugriff von außen auf VMs hinter dem NAT-Switch

    Möchte man VMs von außerhalb des NAT-Netzwerks ansprechen, dann ist das auf dem jeweiligen Host selbst ohne weitere Konfiguration möglich. Das Betriebs­system der Parent Partition hat nämlich Zugang zum NAT-Switch.

    Möchte man sich jedoch von einer externen Workstation aus mit bestimmten Diensten in den VMs wie HTTP-Server oder RDS verbinden, dann muss man dafür ein entsprechendes Port-Forwarding einrichten:

    Add-NetNatStaticMapping -NatName MyNAT -Protocol TCP -ExternalIPAddress 0.0.0.0 -ExternalPort 23389 -InternalIPAddress 192.168.99.99 -InternalPort 3389

    Einrichten von Port Forwarding für RDP mit Hilfe von Add-NetNatStaticMapping.

    Dieser Aufruf erlaubt die Herstellung einer RDP-Verbindung mit dem Gast in der VM, wenn diese die IP-Adresse 192.168.99.99 hat. Als externen Port nimmt man typischerweise nicht den Standardwert des jeweiligen Protokolls (das obige Beispiel verwendet 23380). Als Argument für ExternalIPAddress wählt man 0.0.0.0, wenn der Host keine feste IP-Adresse nutzt. Dies ist in der Regel unter Windows 10 der Fall.

    Möchte man hier stattdessen eine bestimmte IP angeben, dann muss man diese vorher mit Hilfe von Add-NetNatExternalAddress hinzufügen.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut
    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Verwandte Beiträge

    Weitere Links

    6 Kommentare

    Win Server 2012 R2, March 2018:

    Folgendes Argument hat mir jeweils einen Fehler ausgelöst
    –InternalIPInterfaceAddressPrefix

    New-NetNat : Es wurde kein Parameter gefunden, der dem Parameternamen "InternalIPInterfaceAddressPrefix" entspricht.

    Versucht habe ich viel, funktioniert hat es erst als ich das Statement aufteilte:

    PS C:\Users\Administrator> new-netnat -Name MyNatnetwork

    Cmdlet New-NetNat an der Befehlspipelineposition 1
    Geben Sie Werte für die folgenden Parameter an:
    ExternalIPInterfaceAddressPrefix: 192.168.0.1/24

    Hoffentlich kann ich jemandem so Zeit sparen.

    Mfg

    Hat mir sehr geholfen,
    Vielen Dank für die Veröffentlichung

    Vielen Dank für den Tip.
    Bei mir hat es auch gereicht die entsprechende Zeile wie folgt zu korrigieren:

    New-NetNat -Name MyNAT -InternalIPInterfaceAddressPrefix: 192.168.99.0/24

    Es hat nur der Doppelpunkt gefehlt.

    System Win 10 Enterprise 1809

    Beim ausführen des Befehls :New-VMSwitch -Name NATSwitch -SwitchType Intern
    bekomme ich folgende Fehlermeldung

    New-VMSwitch : Fehler beim Hinzufügen von Verbindungen für den virtuellen Ethernet-Switch.
    In Zeile:1 Zeichen:1
    + New-VMSwitch -Name NATSwitch -SwitchType Intern
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [New-VMSwitch], VirtualizationException
    + FullyQualifiedErrorId : OperationFailed,Microsoft.HyperV.PowerShell.Commands.NewVMSwitch

    Was mache ich falsch?

    Hallo,

    vielen Dank für die Anleitung. Hat mir auch gut geholfen. Mich würde noch interessieren, ob die Möglichkeit besteht, dem NATSwitch eine feste IP zu zuweisen. Möchte gerne nextcloud als VM laufen lassen und immer die selbe IP dafür haben.

    Danke

    Gruß

    Hallo,

    danke für die Anleitung! Echt super erklärt!

    Ich hätte auch noch eine weiterführende Frage:

    Ist es wohl möglich, dass man den virtuellen NAT-Switch mit einem weiteren externen virtuellen Switch verbindet?
    Ich habe folgendes Szenario:

    Hyper-V Host hat 2 Externe NIC's

    Auf dem Host ist ein Nat-Switch anhand dieser Anleitung an NIC1 Angebunden.

    Diesen habe ich mit 2 VM's verbunden, einer davon ist ein DC.

    Ist es nun möglich, einen Hardware-Computer mit dem virtuellen NAT-Switch über die zweite Hardware-NIC zu verbinden und somit einen Hardware-PC in diesem virtuellen Testnetzwerk der Domäne anzuhängen?