Hyper V 使用时乍一看好像很方便,默认的Default Switch同时支持了NAT网络以及DHCP,虚拟机能够访问外网。
但使用过程中发现这个IP网段经常变化,而且Hyper V没有提供管理其NAT网络与DHCP的图形化界面功能。
如果开发者需要同时管理多个Linux VM进行实验,且在局域网中无法为他们单独分配固定IP时,使用可自行配置的NAT网络显得尤为重要。
本文提供一种自定义管理Hyper V NAT网络的方法,虚拟机能够通过固定IP连接至该网络,且能够访问外网。
目标
添加一个Switch能够支持 192.168.56.0 / 24 网段,并能够将 Linux(CentOS 7) 虚拟机通过固定IP连接到该网段。
支持物理机与虚拟机的相互访问,且支持虚拟机访问外网。
配置
以管理员身份启动PowerShell ,执行下列命令
# 创建虚拟交换机
New-VMSwitch -SwitchName "NAT-VM" -SwitchType Internal
# 查看 NAT-VM 的 ifindex
Get-NetAdapter
# 创建网关ip,InterfaceIndex参数自行调整为上一步获取到的ifindex
New-NetIPAddress -IPAddress 192.168.56.1 -PrefixLength 24 -InterfaceIndex 24
# 创建nat网络
New-NetNat -Name NAT-VM -InternalIPInterfaceAddressPrefix 192.168.56.0/24
在Hyper V管理器中设置该Linux虚拟机的网络适配器为 NAT-VM
设置Linux网络静态ip
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
TYPE="Ethernet"
DEFROUTE="yes"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR="192.168.56.101"
PREFIX="24"
GATEWAY="192.168.56.1"
DNS1="223.5.5.5" #需使用外网DNS,通过网关IP无法获取DNS
DNS2="119.29.29.29"
重启linux网络
service network restart
DHCP
前面我们已经可以通过固定ip访问网络,但是你需要为每个虚拟机配置一个固定Ip,
比起其他vm工具,还是缺少了一个dhcp网络。
如果你需要自动分配,可通过配置第三方的dhcp服务软件实现,例如tftpd64
- 下载服务版
- 在windows防火墙中,添加例外配置
- 配置dhcp服务
参考:
https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/setup-nat-network
https://anandthearchitect.com/2018/01/06/windows-10-how-to-setup-nat-network-for-hyper-v-guests/
https://github.com/docker/for-win/issues/1378