Windows10系统Hyper-V中存在着一个名为“Default Switch”的缺省虚拟交换机,其本质上是一块虚拟网卡,其所连接的虚拟网络的类型为"Internal"(有关Hyper-V三种网络类型的含义,可参看《Hyper-V三种虚拟网络类型的理解_boliang319的博客-CSDN博客》)。实际使用中发现,其与用户创建的Internal类型的虚拟网络又有着一定的不同:
该虚拟交换机无法删除
IP地址在每次关机重启后都会发生改变,即使用户手工设置地址,该地址在关机重启后仍会被修改。
上述第二点特征导致虚拟机的IP地址无法固定,这对于需要通过IP地址访问虚拟机上服务的小伙伴非常不友好,都需要先登录虚拟机找到其IP地址,然后才能访问服务。为此,我们需要找到能固定虚拟机IP地址的方法。
总体思路:第一步,创建一个新的内部虚拟网络(也可以称之为虚拟交换机);第二步,网络上宿主机与虚拟机都使用固定的IP地址;第三步,宿主机上开通网络地址转换(NAT)服务,使虚拟机可以访问外部互联网。
第一步非常简单,既可以使用Hyper-v的图形界面向导创建虚拟交换机,也可以使用PowerShell的命令完成,图形界面的过程展示如下:
第二步 也比较简单,在网络连接中找到新创建的虚拟交换机(或者叫虚拟网卡),然后设置其地址即可:
第三步,设置NAT,使得虚拟机可以访问外部互联网,这一步也是最难的一步。
从WindowsXP起,Windows就内置了一个叫做共享网络连接的功能(见下图)
在windows10中该功能仍然可以使用,但存在着以下问题:
共享是绑定到网卡的。内部网络只能通过一个固定的网卡连接外部网络。现在的电脑,尤其是笔记本,一般都同时具有有线网卡和无线网卡两块网卡,因此,当用户从使用有线网络接入互联网切换到无线网络接入互联网的时候(或反过来),需要重新设置网络共享。
如果被共享的网络是无线网络,则宿主机关机重启后,共享失效,需要重新设置。
Windows10系统已经具备自动识别互联网出口并共享给内部网络使用的功能,可惜的是该功能没有任何的图形化的设置界面(毕竟是桌面系统,不是服务器系统),只能通过命令行进行设置,具体方法如下:
以管理员身份打开PowerShell
敲入如下命令:
New-NetNat -Name <NATOutsideName> -InternalIPInterfaceAddressPrefix <NAT subnet prefix>
其中<NATOutsideName>为新建NAT对象的名称,可根据实际情况自行设定;
<NAT subnet prefix>为需要NAT的内网地址,注意是网络地址。
例如:
New-NetNat -Name MyNAT -InternalIPInterfaceAddressPrefix 192.168.0.0/24
将为192.168.0.0/24的网段开启NAT
从上述的命令可以发现,设置NAT的时候已经不需要指定任何的网络适配器,只需要指明需要通过NAT方式访问外部网络的内网网段即可,这一点相较于老版本的windows也算是一个升级与进步。
需要注意的是,Windows系统只能同时为一个网段提供NAT服务。
最后,虚拟机要通过固定IP使用网络,只需要手动为其指定一个内网网段的IP地址,并设置其网关与DNS为宿主机的(在内网网段的)IP地址即可。