Mit ein paar Handgriffen kann ein Hyper-V Server zum Routen von IP bewegt werden.
Ausgangslage
- Server mit 2 Netzwerkkarten (172.16.16.253 und 192.168.120.1)
- Fritz!BOX für den Internet-Zugang
- Netzwerk an der Fritz!Box ist 172.16.19.0/24, das Gateway ist immer die 1 (also die Fritz!BOX selbst)
Der Server soll IP-Pakete vom Subnetz 192.168.120.0/24 ins 172er Netzwerk übertragen, und umgekehrt sollen Datenpakete aus dem 172er Netzwerk in das 192er Netzwerk geroutet werden. Alle Hosts im 172er Netzwerk haben die Fritz!BOX selbst als Gateway eingetragen. Daher muss dieser gesagt werden, wohin Pakete mit 192.168.120.0 geroutet werden sollen, nämlich auf die IP-Adresse 172.16.16.253 welches den ersten Adapter des Servers darstellt.
Konfiguration Fritz!BOX
Dazu wird folgende Route in der Fritz!BOX eingetragen:
Die Konfiguration erfolgt über innerhalb der Fritz!BOX:
Heimnetz / Heimnetzübersicht / Netzwerkeinstellungen / Statische Routingtabelle
Konfiguration des Hyper-V Servers mit PowerShell
Auf dem Hyper-V Server sind die beiden Netzwerk-Adapter wie folgt konfiguriert:
Ethernet 2 | 172.16.16.253/24 | Gateway | 172.16.16.1 |
Ethernet 4 | 192.168.120.1/24 | Gateway | 192.168.120.1 |
Mit PowerShell ist die Konfiguration einfach.
Im ersten Schritt schauen wir uns an, ob und welche IP-Adressen schon vergeben sind.
PS C:\Temp> Get-NetIPAddress |ft ifIndex IPAddress PrefixLength PrefixOrigin SuffixOrigin AddressState PolicyStore ------- --------- ------------ ------------ ------------ ------------ ----------- 6 192.168.110.1 24 Manual Manual Preferred ActiveStore 3 172.16.16.253 24 Manual Manual Preferred ActiveStore 4 169.254.19.2 16 WellKnown Link Preferred ActiveStore 1 127.0.0.1 8 WellKnown WellKnown Preferred ActiveStore
Wir sehen, der Adapter mit dem Interface-Index 3 (ifIndex) hat eine Adresse aus dem 172er Netzwerk. Der Adapter mit dem ifIndex 4 hat noch eine APIPA-Adresse aus dem 169er Netzwerk und soll nun die IP aus dem 192er Netzwerk bekommen.
Der Name des Adapters lässt sich übrigens mit Get-NetAdapter ermitteln
PS C:\Temp> Get-NetAdapter Name InterfaceDescription ifIndex Status MacAddress LinkSpeed ---- -------------------- ------- ------ ---------- --------- Ethernet 2 Microsoft Hyper-V Network Adapter #2 3 Up 00-15-5D-10-DB-00 2 Gbps Ethernet 3 Microsoft Hyper-V Network Adapter #3 6 Up 00-15-5D-10-DB-01 10 Gbps Ethernet Microsoft Hyper-V Network Adapter 4 Up 00-15-5D-10-DB-02 10 Gbps
Nun konfigurieren wir mit PowerShell die IP-Adresse aus dem 192.168.120.0 Netzwerk.
PS C:\Temp> New-NetIPAddress -InterfaceIndex 4 -IPAddress 192.168.120.1 -PrefixLength 24 -DefaultGateway 192.168.120.1 IPAddress : 192.168.120.1 InterfaceIndex : 4 InterfaceAlias : Ethernet AddressFamily : IPv4 Type : Unicast PrefixLength : 24 PrefixOrigin : Manual SuffixOrigin : Manual AddressState : Tentative ValidLifetime : Infinite ([TimeSpan]::MaxValue) PreferredLifetime : Infinite ([TimeSpan]::MaxValue) SkipAsSource : False PolicyStore : ActiveStore IPAddress : 192.168.120.1 InterfaceIndex : 4 InterfaceAlias : Ethernet AddressFamily : IPv4 Type : Unicast PrefixLength : 24 PrefixOrigin : Manual SuffixOrigin : Manual AddressState : Invalid ValidLifetime : Infinite ([TimeSpan]::MaxValue) PreferredLifetime : Infinite ([TimeSpan]::MaxValue) SkipAsSource : False PolicyStore : PersistentStore
Abschließend müssen wir noch die Weiterleitung von IP-Paketen aktivieren (IP-Forwarding).
PS C:\Temp> Set-NetIPInterface -InterfaceIndex 4 -Forwarding Enabled
Ich habe das auf einem relativ neuem Microsoft Hyper-V Server 2016 durchgeführt, sollte aber auch auf dem Hyper-V Server 2012 R2 und jedem anderen Windows Server funktionieren, welcher die PowerShell-Befehle unterstützt. Ansonsten ist Netsh.exe unser Freund.
Enjoy it, b!
Pingback: Routing mit Linux in virtuellen Umgebungen | Windows SBS and Essentials Blog