Win10 Hyper-V虚拟机网络配置方式(5)-专用网络拟机交换机

1、 创建专用虚拟网络

在Hyper-V管理界面中手动创建专用网络的虚拟交换机switch-z,创建专用网络的虚拟交换机不会在父分区(管理主机宿主机)中安装虚拟网络适配器。

在Hyper-V管理界面中创建虚拟机ubuntu01-ubuntu04,虚拟机的网络适配器选择刚建立的专用网络的虚拟交换机switch-z,在虚拟机中安装ubuntu操作系统。

启动安装的所有ubuntu虚拟机操作系统,发现所有虚拟机都没有获得IP地址,无法进行网络通信。

2、 配置ubuntu静态IP信息

Ubuntu01和ubuntu02设置与管理主机(宿主机)物理网卡相同规则的IP地址和子网掩码,使用sudo netplan apply使设置生效,确保管理主机和虚拟机ubuntu01、ubuntu02逻辑上处于一个网段。如下图图1所示。

Win10 Hyper-V虚拟机网络配置方式(5)-专用网络拟机交换机

图1:ubuntu18.04配置静态IP地址和子网掩码

ubuntu03和ubuntu04设置与管理主机(宿主机)物理网卡不同规则的IP地址和子网掩码,使用sudo netplan apply使设置生效,确保管理主机和虚拟机ubuntu03、ubuntu04逻辑上处于不同的网段。如下图图2所示。

Win10 Hyper-V虚拟机网络配置方式(5)-专用网络拟机交换机

图2:ubuntu18.04配置静态IP地址和子网掩码

3、 专用虚拟网络连通性测试

根据上述构建出如下图3所示的测试环境。管理主机win10创建4台ubuntu虚拟机,物理机A和管理主机win10接入无线路由器的物理LAN口,无线路由器WAN口连接到互联网。

Win10 Hyper-V虚拟机网络配置方式(5)-专用网络拟机交换机

图3:测试环境示意图

管理主机使用静态IP:192.168.1.100/24;虚拟交换机switch-z配置为专用网络的虚拟交换机;四台ubuntu虚拟机的网络适配器使用switch-z虚拟交换机;ubuntu01和ubuntu02组成A组,IP地址设置和管理主机IP地址设置规则相同;ubuntu03和ubuntu04组成B组,IP地址设置和管理主机IP地址设置规则不同。

该测试场景下,A组ubuntu虚拟机之间可以双向ping通;管理主机可以ping通A组各虚拟机,但A组虚拟机ping不通管理主机,所以管理主机和虚拟机在专用虚拟网环境中只能单向ping通。

B组ubuntu虚拟机之间可以双向ping通;管理主机和B组各虚拟机双向都ping不通。

该测试场景下,A组和B组虚拟机之间不能互相ping通。

4、 虚拟机操作系统启动很慢的问题的解决

上述创建了专用虚拟网络,虚拟机之间可以双向通信,但各虚拟机操作系统启动时耗时很长,等得不耐烦。

如下图图4所示,Ubuntu操作系统启动到"A Start job is running for Wait for Network to be Configured(xx秒 / no limit)这一步时会等待很长时间,长达124秒,之后才能继续后面的启动任务,导致总体开机时间很长。

Win10 Hyper-V虚拟机网络配置方式(5)-专用网络拟机交换机

图4:ubuntu操作系统启动时在等待网络联通时卡住

如下图图5所示,是等待超时后操作系统启动界面的输出信息,从输出信息可以看出, 细节信息需要到"systemctl status systemd-networkd-wait-online.service"中寻找。

Win10 Hyper-V虚拟机网络配置方式(5)-专用网络拟机交换机

图5:ubuntu操作系统启动时输出信息部分截图

在看看系统日志,看看能否找到一些帮助信息。查看/var/log/syslog的系统日志,可以看到下图6所示的操作系统启动时的系统日志,粉底白字部分的日志信息,对应图4中卡顿的部分。看来是

systemd-networkd-wait-online.service执行超时了,看来确实需要从该服务入手,看看什么原因导致长时间等待。

Win10 Hyper-V虚拟机网络配置方式(5)-专用网络拟机交换机

图6:ubuntu操作系统引导启动的系统日志syslog问题截图

经查systemd-networkd-wait-online.service 是一个操作系统启动后执行的系统服务,该服务监视网络接口,查看网络连接状态,监视到网络连线成功(可以对外通信)则结束当前运行,转到操作系统启动的下一步任务。如果网络连接一直不成功,则该服务会一直等待,直到超时才会结束当前进程的运行。

经查,该服务运行有三个参数,一个是需要监视的网络接口,一个是可以忽略的网络接口,第三个是监视时长的限制。

上图4中"no limit"表示没有设置超时限制,系统使用默认设置120秒,经测试实际执行120+4秒后才会结束运行。如下图图7所示,下一秒后该任务结束运行开始后面的启动工作。

Win10 Hyper-V虚拟机网络配置方式(5)-专用网络拟机交换机

图7:操作系统启动时等待网络配置完成截图

经查,该服务在ubuntu 18.04系统的/etc/systemd/system/network-online.target.wants目录下,修改systemd-network-wait-online.service文件,在【Service】中增加一行:TimeoutStartSec=2sec,设置程序执行时间超过2秒就做为超时处理,跳过当前任务,继续下面的启动工作。见下图图8,图示了修改该服务超时时长。

Win10 Hyper-V虚拟机网络配置方式(5)-专用网络拟机交换机

图8:修改ubuntu操作系统启动时等待网络配置完成的超时时间

分别设置几个超时时长,可以明显观察到操作系统启动起到这一步后的表现。下图图9是设置超时时长为10秒时截取的系统启动信息截图,下图图8可见systemd-network-wai-online监控网络连接,超过14秒还没有连接成功,则当前任务会终止。

Win10 Hyper-V虚拟机网络配置方式(5)-专用网络拟机交换机

图9:修改timeout值,由(xx秒/no limit)变为(xx秒/14秒)

按照上述修改后,操作系统的启动速度恢复正常。当然,对使用专用网络虚拟交换机的虚拟机,可以将该值设置很小,因为只通过虚拟交换机进行虚拟机之间的通信,该种网络从设计之初就是不发生网络之间的通信,所以网络接口不可能连接成功,不可能连接到其他网络,只能等待超时(默认124秒或者手动修改的超时时长)才能结束当前进程。

其他类型的虚拟网需要网络连接,该等待值建议不做修改,如果网络正常,该等待时间也会很短,如果等待时间很长,肯定是出问题了,需要解决。

5、 适用场景

专用虚拟网络可以实现虚拟机之间的通信以及管理主机到虚拟机单向通信,不需要物理网卡,对外界隔离性很好。除了在单一服务器上构建实验环境,很少使用。

当然,如果我们希望只允许同一物理服务器上的子分区之间进行通信时,可以使用此类型的虚拟网络。

专用虚拟网络是一种无需在父分区中装有虚拟网络适配器的虚拟网络。在希望将子分区从父分区以及外部网络中的网络通信中分离出来时,通常会使用专用虚拟网络。

6、 使用专用网络虚拟交换机的初步总结

不在管理主机(宿主机)上创建虚拟网络适配器,虚拟机之间的通信不需要物理网卡。

虚拟机需要设置静态IP,否则获取不到IP地址,无法实现虚拟机之间的通信。

同一交换机下的虚拟机的IP地址和子网掩码规则必须一致,逻辑上处于在同一局域网内下才能互相通信。

管理主机和虚拟机之间可以单向ping通,前提是虚拟机的IP地址和子网掩码必须和管理主机IP地址与子网掩码规则相同,逻辑上处于一个网络内。


分享到:


相關文章: