Zum Inhalt springen

Windows Server 2019 Virtual Lab mit DHCP-Server, Hyper-V & NAT

Symbolbild Office

Zu Schulungs- und Testwecken lassen sich heute auf fast jedem Computer virtuell mehrere virtuelle Computer (Clients & Server) betreiben. Eine derartige Umgebung wird auch als Virtual Lab bezeichnet. Idealerweise steht dafür aber entsprechende, möglicherweise nicht mehr produktiv verwendete, Server-Hardware zur Verfügung. Die Hardware muss in jedem Fall aus einer CPU mit den notwendigen Virtualisierungserweiterungen, entsprechend RAM und Festplatten/NVMe/SSD-Speicher bestehen. Auf dieser Hardware wird zunächst ein Windows Server 2019 installiert, die Netzwerkverbindung konfiguriert und über Windows Update aktualisiert.

Mit dem nachfolgenden PowerShell-Script wird der installierte Windows Server 2019 zu einem Virtual Lab. Dafür werden im ersten Schritt DHCP-Server und Hyper-V installiert. Danach ist leider ein Neustart notwendig, um die Installation abzuschließen. Die darauffolgenden Befehle konfigurieren Hyper-V, DHCP und NAT.

Das Ergebnis ist ein Hyper-V Host, der von den virtuellen Computern auch als DHCP-Server und NAT-Router verwendet wird. Virtuelle Computer erhalten dadurch automatisch eine IP-Adresse vom DHCP und verwenden den Hyper-V Host als Standardgateway zum restlichen Netzwerk/Internet. Die virtuellen Computer bleiben somit einigermaßen vom restlichen Netzwerk isoliert, können aber dessen Internetverbindung nutzen.

Mehrere Virtual Labs auf einer Hardware

Wer entsprechend leistungsfähige Hardware verwendet und mehrere Virtual Labs betreiben möchte, kann auch den hier beschriebenen Server in einer verschachtelten Virtualisierung (Nested Virtualization) bereitstellen. Lizenz-Tipp: Wird auf der physischen Hardware ein Windows Server 2019 Datacenter verwendet, sind alle darauf laufenden virtuellen Windows Server 2019 von der Lizenz abgedeckt.

Netzwerkaufbau

Mit dem Script wird das Subnet 192.168.0.0/24 für die virtuellen Computer erstellt. Der DHCP-Server vergibt IPs im Bereich 192.168.0.100 bis 192.168.0.199. Der als intern konfigurierte Hyper-V Switch, ist DHCP-/NAT-Router und Standardgateway mit der IP 192.168.0.254. Falls dieses Subnet bereits verwendet wird, müssen die Script-Einstellungen natürlich entsprechend angepasst werden.

Virtual Lab mit PowerShell installieren/konfigurieren

#################### Einstellungen ####################
$vmswitchname = "NATswitch"
$netnatsubnet = "192.168.0.0/24"
$dhcpstartip = "192.168.0.100"
$dhcpendip = "192.168.0.199"
$dhcpdnsserver = @("1.1.1.1","1.0.0.1")
$dhcpscope = "192.168.0.0"
$dhcprouter = "192.168.0.254"
$dhcpsubnet = "255.255.255.0"
$dhcpleaseduration = "0.12:00:00"
$vmswitchprefixlen = 24
$virtualharddiskpath = "C:\Hyper-V\Virtual Hard Disks"
$virtualmachinepath = "C:\Hyper-V\Konfiguration"
########################################################

# Ping erlauben
Set-NetFirewallRule -name FPS-ICMP4-ERQ-In -Enabled True

# Energiesparplan Höchstleistung
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

# DHCP und Hyper-V installieren, Server neustarten
Install-WindowsFeature -Name DHCP,Hyper-V -IncludeManagementTools -Restart

# Hyper-V: Erweiterte Sitzung zulassen, Pfade anpassen
Set-VMHost -EnableEnhancedSessionMode $True -VirtualHardDiskPath $virtualharddiskpath -VirtualMachinePath $virtualmachinepath

# Internen Switch für Virtuelle Computer <-> Host-Kommunikation anlegen und IP konfigurieren
New-VMSwitch $vmswitchname -SwitchType Internal
New-NetIPAddress -InterfaceAlias "vEthernet ($vmswitchname)" -IPAddress $dhcprouter -PrefixLength $vmswitchprefixlen -Type Unicast

# NAT aktivieren
New-NetNat -Name $vmswitchname -InternalIPInterfaceAddressPrefix $netnatsubnet

# DHCP konfigurieren
netsh DHCP Add SecurityGroups
Restart-Service DHCPServer
Get-DhcpServerv4Binding | Where-Object BindingState -eq $True | Set-DhcpServerv4Binding -BindingState $false
Set-DhcpServerv4Binding -BindingState $True -InterfaceAlias "vEthernet ($vmswitchname)"
Add-DhcpServerv4Scope -Name $vmswitchname -StartRange $dhcpstartip -EndRange $dhcpendip -SubnetMask $dhcpsubnet -LeaseDuration $dhcpleaseduration -State Active
Set-DhcpServerv4OptionValue -ScopeId $dhcpscope -Router $dhcprouter -DnsServer $dhcpdnsserverCode-Sprache: PHP (php)

Schreibe einen Kommentar

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

3 × 1 =