Win10 Hyper-V虚拟机网络配置方式(4)-内部网络虚拟机交换机

1、 创建Hyper-V内部网络的虚拟交换机

使用win10的"网络和Internet设置"功能,可以重置网络,见图1。网络重置会将物理主机的物理网卡和网络组件重新安装并恢复为初始设置,创建一个初始的网络环境(非必须,有时遇到问题实在找不出原因,可以试一试)。

Win10 Hyper-V虚拟机网络配置方式(4)-内部网络虚拟机交换机

图1:网络重置

重新启用windows的"Hyper-V"功能,恢复Hyper-V的初始状态。启用Hyper-V后在Hyper-V管理器中手动创建内部网络的虚拟交换机switch-n,在管理主机win10(宿主机)的"网络和Internet"中的网络适配器列表中展示如下图2所示。其中 vEthernet(switch-n)的设备名为Hyper-V Virtual Ethernet Adapter #2,是在Hyper-V管理器中手动创建的内部网络的虚拟机交换机。vEthernet(Deafault Switch)是启用Hyper-V时系统自动创建的默认的虚拟交换机。本次测试手动创建的内部网络的虚拟交换机。

Win10 Hyper-V虚拟机网络配置方式(4)-内部网络虚拟机交换机

图2:网络连接列表

Switch-n虚拟交换机初始设置TCP/IPv4属性为自动获取IP。这时使用该交换机的虚拟机操作系统启动时,虚拟机无法自动获得IPv4地址。手动设置switch-n的IP和掩码,网络依然不正常。

在管理主机win10(宿主机)的"以太网" 的网络连接属性中,设置固定的可以上网的IP地址、子网掩码、默认网关和DNS,不使用系统默认的自动获取IP的方式。

设置"以太网"网络的共享属性,允许专用网络"vEthernet(switch-n)用户共享使用该连接,共享设置界面见下图3。这时vEthernet(switch-n)使用"192.168.137.1/24"做为其IP地址和子网掩码,网关和DNS为空。

Win10 Hyper-V虚拟机网络配置方式(4)-内部网络虚拟机交换机

图3:设置网络共享

上述设置完成后,win10管理主机(宿主机)的网络适配器和IP配置如下图4所示。宿主机即win10管理主机使用的IP地址、子网掩码和默认网关如图所示,是静态配置的IP;vEthernet(Default Switch)只有IP地址和子网掩码,虽然属性中是固定IP,但实际重启主机IP地址经常变化;vEthernet(switch-n)只有IP地址和子网掩码,没有默认网关,重启主机IP地址不会变化,本次我们使用该适配器测试网络联通性。

Win10 Hyper-V虚拟机网络配置方式(4)-内部网络虚拟机交换机

图4:管理主机中各网络适配器及IP地址

2、 使用手工创建的内部网络的虚拟交换机的虚拟网络连通性测试

使用上述环境创建虚拟机,安装操作系统,构建出如下图5所示的测试环境。管理主机win10创建4台ubuntu虚拟机,物理机A和管理主机win10接入无线路由器的物理LAN口,无线路由器WAN口连接到互联网。

Win10 Hyper-V虚拟机网络配置方式(4)-内部网络虚拟机交换机

图5:测试环境示意图

管理主机使用静态IP;虚拟交换机switch-n配置为内部网络的虚拟交换机;四台ubuntu虚拟机的网络适配器使用switch-n虚拟交换机;ubuntu01和ubuntu02组成A组,操作系统采用动态主机配置协议dhcp;ubuntu03和ubuntu04组成B组,操作系统采用静态IP。

下面是ubuntu01和ubuntu02虚拟机的操作系统启动后的网络状况。从下图图6中可以看出,Ubuntu虚拟机操作系统使用动态主机配置协议获得的IP地址和子网掩码与内部虚拟机交换机的IP地址和子网掩码相适配,构成同一网段的IP地址;默认网关就是内部虚拟交换机的IP地址;DNS服务器的地址是一个保留的本机环回地址127.0.0.53,使用53号端口,127打头的IP地址都是保留的本机使用的测试地址,主机发送的目的地址为环回地址的IP数据报,不会发送到其他网络,而是使用本机中的协议软件进行处理,该虚拟机的DNS不用特殊配置。

ubuntu虚拟机配置dhcp4为true或yes,表示使用动态主机配置协议,自动获取IP,下图图5可见已经自动获取的IP地址确实和switch-n有相同的规则。

自动配置的网关地址为虚拟交换机的IP地址,这样虚拟机的网络数据包就可以路由到虚拟交换机,虚拟交换机和以太网物理网卡共享网络连接,就可以上网了。

虚拟机可能是将dns请求通过该地址传递到网关,网关再到外网找对应域名的IP地址。

Win10 Hyper-V虚拟机网络配置方式(4)-内部网络虚拟机交换机

图6:自动获取IP的ubuntu操作系统获取到的网络运行属性

下图是ubuntu03和ubuntu4虚拟机操作系统启动后的网络状态。ubuntu虚拟机中dhcp设置为yes或true,但指定了IP地址和子网掩码,网络生效时会用指定的IP地址和子网掩码,没有指定默认网关和DNS,让系统自动获取,未指定默认网关,自动使用switch-n的地址做为默认网关;未指定DNS,使用本机环回地址,真正能查出域名对应的IP地址肯定在本虚拟机或管理主机是不可能的,需要通过虚拟交换机再到外网的dns server中去查。

本次配置的静态IP地址按照当前switch-n的IP和掩码规则配置,确保在同一个网段。

Win10 Hyper-V虚拟机网络配置方式(4)-内部网络虚拟机交换机

图7:配置了IP/掩码的ubuntu操作系统获取到的网络运行属性

该场景下,A组ubuntu虚拟机之间可以相互ping通;管理主机设置合适的防火墙,可以和A组各虚拟机相互ping通;图中的物理机A设置合适的防火墙后,管理主机、各虚拟机都能ping物理机A,但物理机A可以ping通管理主机,但ping不通各虚拟机。

该场景下,B组ubuntu虚拟机之间可以相互ping通;管理主机设置合适的防火墙,可以和B组各虚拟机相互ping通;图中的物理机A设置合适的防火墙后,管理主机、B组各虚拟机都能ping通物理机A,但物理机A可以ping通管理主机,但ping不通各虚拟机。

上述两组虚拟机,不管是自动获得IP,还是配置的静态IP,都和此时switch-n 的ip地址及子网掩码相匹配,故此时所有虚拟机、管理主机都能相互ping通;都能ping通物理机A,但物理机A能ping通管理主机,但ping不通各个虚拟机。各虚拟机和管理主机一样,都能正常上外网。

3、 使用内部虚拟交换机的初步总结

管理主机物理网卡设置为dhcp动态获取IP地址的情况下,设置物理网卡和手工创建的内部网络的虚拟交换机的共享连接后,虚拟交换机可以获得正常的IP和子网掩码,但虚拟机使用该虚拟交换机做为网络适配器时,各虚拟机无法获取正确的IP和网关等信息,静态IP设置方式和动态IP获取方式的的虚拟机都不能正常使用网络。

创建物理网卡和内部网络的虚拟交换机的共享连接时,物理网卡必须设置静态IP,原因不明。

网络连接共享后,内部网络的虚拟交换机的IP地址和子网掩码就固定下来的,管理主机重启该交换机的IP和掩码不会发生变化;但默认的Default Switch的IP地址可能会发生变化。故建议自己手工创建内部网络的虚拟交换机,不要使用系统默认自动安装的Default Switch交换机。

内部网络虚拟交换机的IP地址不能在管理主机win10中的适配器属性中修改,修改后即便再修改回原来的IP地址,虚拟机也无法正常联网,必须重新做一次共享操作方可。

手动配置虚拟机的静态IP,可以在配置文件的dhcp4一行的下面只添加静态IP和掩码,不需要配置默认网关和DNS,dhcp4的true或yes属性也不需要修改。

Ubuntu虚拟机中,/etc/hostname中存放的是主机名;/etc/hosts中存放的是域名和IP的对应关系。主机名和域名是比较固定的,在虚拟机之间可以引用该域名,但管理主机ping不通虚拟机的域名。

内部网络的虚拟交换机构建的虚拟网络,网络访问方向是单向的,即由虚拟机可以访问管理主机,可以访问管理主机所在的网络的主机,可以访问外网(当然前提是管理主机能上外网);但管理主机所在网络的主机及其他网络的主机不能访问虚拟机。


分享到:


相關文章: