通过multipass可以调用hyper-v创建轻量的ubuntu虚拟机,而由于hyper-v的默认交换机类型,在虚拟机重启之后,会修改ip,因此如果需要固定ip,需要将交换机修改成内部网络。这里需要注意的是,在固定ip之后,无法通过multipass shell登录了。所以首先需要生成一个public key,后面通过ssh登录。
首先修改虚拟机内部的网络配置。
js
复制代码
sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
#将/etc/netplan/50-cloud-init.yaml里面的内容修改为下:
network:
ethernets:
eth0:
dhcp4: no
dhcp6: no
addresses: [192.168.137.100/24]
gateway4: 192.168.137.1
nameservers:
addresses: [223.5.5.5]
version: 2
注意:因为固定ip需要新建一个内部的虚拟网络,这样就导致虚拟机无法直接上网,需要通过网卡共享网络的方式连接网络。这里gateway4的地址192.168.137.1是共享网络默认的网关,可以在注册表中修改。addresses需要和gateway4同网段。nameservers是dns解析服务器,这里采用阿里的dns解析服务器223.5.5.5。
保存之后切到hyper-v,点击hyper-v虚拟交换机管理器,选择新建虚拟交换机,内部,点击创建虚拟交换机,连接类型选择内部。
创建之后,点击控制面板-网络适配器,可以看到新建的虚拟网络。
由于虚拟机需要联网,因此需要通过共享网络的方式让虚拟机上网,右键某个可以上网的网络适配器,选择属性-共享,勾选允许其他网络通过此计算机的Internet连接,下面选择创建的虚拟网络,点击确定。再查看虚拟网络的ipv4设置,可以看到ip已经固定为192.168.137.1了。
右键虚拟机设置,将网络适配器修改为刚才新建的虚拟网络,重启虚拟机。
重启之后,查看网络可以看到网络已经设置为固定值了,同时ping外网也可以ping通。