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

    Rechtsleitfaden zur Software-Lizenzierung: Wie verhalten bei Audits?, Einsatz gebrauchter Software, Miete vs. Kauf, u.v.m. Jetzt kostenlos herunterladen »

    (Anzeige)

    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 fehlt indes weiterhin.

    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.

    1 Kommentar

    Bild von Manuel
    Manuel sagt:
    13. März 2018 - 12:33

    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