Hyper-V NAT 网络设置固定 IP / DHCP
Hyper-V 默认的 Default Switch 同时支持了 NAT 网络以及 DHCP,虚拟机能够访问外网。
但使用过程中发现这个 IP 网段经常变化,而且 Hyper-V 没有提供管理其 NAT 网络与 DHCP 的图形化界面功能。
如果开发者需要同时管理多个 VM,且在局域网中无法为他们单独分配固定 IP 时,使用可自行配置的 NAT 网络显得尤为重要。
本文提供一种自定义管理 Hyper-V NAT 网络的方法,虚拟机能够通过固定 IP 连接至该网络,且能够访问外网。
如果你能够为虚拟机在外部网络中分配一个固定ip,应该优先考虑使用桥接模式,即创建“外部”虚拟交换机,跳过本教程。
目标
添加一个虚拟交换机能够支持 192.168.56.0 / 24 网段,并能够将 Linux(CentOS 7) 虚拟机通过固定IP连接到该网段。
支持物理机与虚拟机的相互访问,且支持虚拟机访问外网。
配置
以管理员身份启动PowerShell ,执行下列命令
# 创建虚拟交换机
New-VMSwitch -SwitchName "NAT" -SwitchType Internal
# 获取虚拟交换机的ifindex,并赋值到变量中
$ifindex = Get-NetAdapter -Name "vEthernet (NAT)" | Select-Object -ExpandProperty 'ifIndex'
# 在虚拟交换机上设置固定IP,用于网关IP
New-NetIPAddress -IPAddress 192.168.56.254 -PrefixLength 24 -InterfaceIndex $ifindex
# 创建nat网络
New-NetNat -Name NAT -InternalIPInterfaceAddressPrefix 192.168.56.0/24
上述命令创建了一个名为 "NAT" 的虚拟交换机,它的 IP 地址为 192.168.56.254。并创建了一个 NAT 网络,网段是 192.168.56.0/24
后面我们只需要将虚拟机的交换机设置为"NAT",并设置网关为 192.168.56.254,固定 IP 的网络访问模式就配置完成了。
在 Hyper-V 管理器中设置该 Linux 虚拟机的网络适配器为 NAT
设置Linux网络静态ip
#/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.254"
DNS1="223.5.5.5" #需使用外网DNS,通过网关IP无法获取DNS
CentOS还可通过管理工具nmtui来设置ip
重启linux网络
service network restart
错误处理
操作失误或需要修改nat网络时,可以删除之前的创建的nat网络。
进行下面前你应该确认仅有一个nat网络
Get-NetNat #确认获取到的nat只有一个且是你想要删除的
Get-NetNat | Remove-NetNat #删除nat网络
删除 NetIPAddress 命令:
Remove-NetIPAddress -InterfaceAlias "vEthernet (NAT)"
有时会出现 NAT 网络无法访问外网的情况,一般与移动热点、电脑睡眠、网络环境变化等情况有关。
如果开启了 win10 自带的“移动热点”功能,可尝试将其关闭,再查看网络是否正常。
实在不行只有重启物理机了~~
DHCP
(DHCP配置仅针对高级用户,对一般用户而言,静态IP已经能够满足一般需求,可忽略后续内容)
前面我们已经可以通过固定 IP 访问网络,但是你需要为每个虚拟机配置一个固定 IP,比起其他 VM 工具,还是缺少了一个 DHCP 网络。
如果你需要自动分配,可通过配置第三方的dhcp服务软件实现,例如tftpd64 、 dhcpserver
tftpd64
- 下载服务版
- 在windows防火墙中,添加例外配置
- 配置dhcp服务
dhcpserver
下载: http://www.dhcpserver.de/cms/
使用方法:https://blog.csdn.net/candy1232009/article/details/80785367
注意:发现dhcpserver会影响win10的移动热点功能
虚拟机硬盘转换工具 vmware <=> hyper-v
starwind v2v converter,支持转换虚拟机硬盘,可以将VMWare的虚拟机转换为Hyper-V,反之亦然。
软件地址:https://www.starwindsoftware.com/starwind-v2v-converter
参考:
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#issuecomment-502380490
有任何问题,欢迎在评论区留言。
update 20220125
-> 更新了 Get-NetAdapter -Name "vEthernet (NAT)" | Select-Object -ExpandProperty 'ifIndex'
,这种读取ifindex的方式,降低了脚本的理解难度。
本文采用 知识共享署名 4.0 国际许可协议 进行许可