相信已經有同學已經在神龍上部署了Hyper-V了。又可以随心所欲的建立VM玩耍了。但是關于Hyper-V虛拟機的網絡配置,相信還有一些同學沒有玩過。
首先,我們來簡單介紹下Hyper-v的三種虛拟交換機的類型:
- 外部交換機
這種交換機允許虛拟機通路到真實的實體網絡。虛拟機之間和Hyper-V Server (這裡是我們的神龍實體機)也可以互相通路。

Hyper-V Server作業系統的直覺變化:
建立一個虛拟網卡,将真實網卡的所有協定轉移到這個網卡上,真實網卡隻保留 LLDP 協定和 Hyper-V Extensible Virtual Switch協定。
真實網卡充當了虛拟交換機的角色。
- 内部交換機
這種交換機允許虛拟機以及Hyper-V Server之間互相通路。除非特殊配置,虛拟機無法通路真實網絡。
建立一個和真實網卡一樣的虛拟網卡。真實網卡仍保持原有的功能。
- 專用(私有)交換機
這種交換機隻允許虛拟機之間互相通路。無法通路Hyper-V Server及真實網絡。
無任何變化。
在真實的實體環境中,我們一般通過建立外部交換機進而讓虛拟機能夠無需額外配置就能通路。但是在神龍環境中,我們無法這樣做。是以我們需要通過建立 内部交換機 再通過NAT的方式來使虛拟機通路網絡。也就是說,我們要做這樣一件事:
為了友善測試,所有步驟使用Powershell 指令。具體步驟如下:
注:以下方法僅适用于作業系統為Windows Server 2016 和 Windows 10 或更高的版本的神龍伺服器。對于Windows Server 2012 R2, 需要安裝額外的元件來完成這一操作,這個會在後面的文章中講到。
安裝Hyper-V
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
運作完後會自動重新開機兩次。
建立虛拟交換機
- 建立内部交換機。
New-VMSwitch -name "XDragonInternalSwitch" -SwitchType Internal
- 建立NAT GateWay.
$NATGatewayIP = "192.168.100.1"
$PrefixLength = 24
$xdragonswitch = Get-NetAdapter | ? {$_.Name -like "*XDragonInternalSwitch*"}
New-NetIPAddress -IPAddress $NATGatewayIP -PrefixLength $PrefixLength -InterfaceIndex $xdragonswitch.ifIndex
其中 $NATGatewayIP 是内部交換機的虛拟網卡的IP.這個值和 $PrefixLength可以按執行個體需要指定。
- 建立NAT 網絡.
$Prefix = "192.168.100.0/24"
New-NetNat -Name XDragonNATNetwork -InternalIPInterfaceAddressPrefix $Prefix
注意這裡的$Prefix要和第2步建立Gateway保持一緻性。
建立虛拟機
這裡我預先Copy了阿裡雲的鏡像VHD檔案win2016_64_dtc_1607_en-us_40G_noxen_20180801.vhd放在了D盤。我會為每一個虛拟機建立一個基于此VHD的差異磁盤。
New-VHD -ParentPath D:\win2016_64_dtc_1607_en-us_40G_noxen_20180801.vhd -Path "D:\Hyper-V\VM1\Virtual Hard Disks\VM1.vhd" -Differencing
New-VM -Name VM1 -MemoryStartupBytes 4GB -BootDevice VHD -VHDPath "D:\Hyper-V\VM1\Virtual Hard Disks\VM1.vhd" -Path "D:\Hyper-V" -Generation 1 -Switch XDragonInternalSwitch
Start-VM -Name VM1
安裝DHCP Server (可選)
當要建立多台VM,還為每一個VM配靜态IP是一件麻煩事。我們可以在Hyper-v Server上建立DHCP伺服器。這樣,VM無需任何網絡配置就可以正常連接配接了。
$NatGatewayIP = "192.168.100.1" # 這裡必須是内部交換機虛拟網卡的IP
$DNSServers = ("100.100.2.136", "100.100.2.138") # 這裡必須是Hyper-V Server的真實DNS Server 配置
$DHCPServerStartIP = "192.168.100.10" # 開始分發的IP, 自定義
$DHCPServerEndIP = "192.168.100.200" # 結束分發的IP, 自定義
$SubnetMask = "255.255.255.0"
Install-WindowsFeature DHCP -IncludeManagementTools
netsh dhcp add securitygroups
Restart-service dhcpserver
Set-DhcpServerv4DnsSetting -DynamicUpdates "Always" -DeleteDnsRRonLeaseExpiry $True
Add-DhcpServerv4Scope -name "XDragonHyperVVMs" -StartRange $DHCPServerStartIP -EndRange $DHCPServerEndIP -SubnetMask $SubnetMask -State Active
Set-DhcpServerv4OptionValue -DnsServer $DNSServers -Router $NatGatewayIP
或者,不在Hyper-V Server上,可以單獨建立一個VM,配成DHCP Server. 原理差不多。
配置虛拟機網絡
如果我們在Hyper-V Server或者另起一台VM配了DHCP Server的話,這一步就無需配了。直接就可以連網了。
如果我們沒有配置DHCP Server,那麼當虛拟機啟動後,我們要對虛拟機的網卡做如下的IP的配置:
IP: 192.168.100.2 (NAT 網絡範圍内任一沒有使用的IP都可以)
Subnet: 255.255.255.0 (根據 NAT 網絡的Prefix确定)
Gateway: 192.168.100.1 (NATGatewayIP,即Hyper-V Server上内部交換機虛拟網卡的IP)
DNS: 100.100.2.136/100.100.2.138 (Hyper-V Server上真實網卡的DNS)
這樣,虛拟機就可以正常通路外部網絡了。