Multipass虚拟机设置局域网固定IP同时实现快速openshell的链接

本文只介绍在windows下实现的过程,Ubuntu采用22.04

安装multipass后,在卓面右下角Open shell 就可以链接默认实例Primary,当然如果你有多个虚拟机,可以针对不同内容单独建立终端的链接,而本文仅仅用Primary来说明。

一、确认网络情况和任务目标。

        在控制面板的网络连接里面,你可以看到至少有一个以太网Wlan的网络连接,也就是你上网的网卡,然后还有一个网络连接,虚拟网卡vEthernet (Default Switch),ip地址并非你局域网的ip,而是一个10开头或者172开头的结尾是1的IP地址,你当前正在操作的计算机连接到你的虚拟机,且你的计算机(宿主服务器)为网关,通过Default switch交换机访问到的Primary,而multipass的Open shell / 快速链接( multipass shell primary 命令) 也是通过这套线路进行的链接,也就是说虚拟机的eth0和Default switch交换机是对应的星际之门。

问题:如何让primary直接连接真实网络的网关(或路由器),而不通过宿主网关直接上网呢??同时还要满足可以使用open shell或小标右键快速创建终端窗口?

任务:创建一条Primary直接连接物理网关的线路,同时让multipass管理器还能继续快速openshell链接虚拟机。

二、实现

        既然要让虚拟机直接分配到一个和宿主一样的局域网ip又要让快速链接可用那就必须要再添加一块网卡(而不是更改当前网卡的链接),而这块网卡对应的,是一个和外部网关连接的全新交换机,只有这样,才不会破坏到原有宿主到虚拟机的链接,所以与默认的Default Switch交换机完全无关。

开始操作:

Multipass在windows下是基于Hyper-V管理器来创建和管理虚拟机的,所以任务栏搜索Hyper-v,打开Hyper-v管理器。

这时你可以看到左侧一个名叫你主机名字一样 或 DESKTOP-xxxxx的服务器已经链接,同时右侧有一个叫做primary的虚拟主机正在运行。

Multipass虚拟机设置局域网固定IP同时实现快速openshell的链接_第1张图片

一、创建第二个虚拟交换机。

鼠标右键点击你的Hyper-v管理器中,红线这里的名字,选择虚拟交换机管理器,创建一个新的虚拟交换机,用于prime虚拟机与局域网链(原有Default switch是与宿主机链接的,始终不管它。)然后选择外部,点击创建虚拟交换机(S)按钮

Multipass虚拟机设置局域网固定IP同时实现快速openshell的链接_第2张图片

名称这里,写一个你能识别出这个交换机是用于链接什么的名字,例如我的是Lan-switch,下面的网卡,选择当前链接局域网正在使用的网卡。然后按应用,再按确定

 Multipass虚拟机设置局域网固定IP同时实现快速openshell的链接_第3张图片

 至此,连接局域网的虚拟交换机创建完成。

二、添加虚拟主机第二个虚拟网卡

回到Hyper-v管理器的页面,鼠标右键点击你的虚拟机,本文中是Primary,菜单中点设置->添加硬件->网络适配器->添加

Multipass虚拟机设置局域网固定IP同时实现快速openshell的链接_第4张图片

 在虚拟交换机选项中,选择你刚刚创建的Lan-switch虚拟交换机,然后点击应用确定。至此,宿主机的配置已经完成。

三、Ubuntu虚拟机设置局域网固定IP

通过右下角Mulitpass橘色小标,右键选择Open shell进行快速链接。然后先确认一下虚拟机的IP情况

Multipass虚拟机设置局域网固定IP同时实现快速openshell的链接_第5张图片

 发现新添加的网卡没有认上,执行命令激活这个刚添加的第二块虚拟网卡

为了方便读者好进行复制,所以我不适用代码模式,使用引用块可以无需登录直接复制

sudo ifconfig eth1 up

执行后再次查看,应该eth1(eth0是第一块网卡负责和宿主机链接的)这个第二块网卡已经挂上了

由于Ubuntu从16之后设置IP已经不再使用ifconfig配置,所以我们直接定位完了过配置文件“Yaml”,位置在/etc/plan/目录下,版本不同名称不同,不一定都是50,但肯定是yaml结尾。

Multipass虚拟机设置局域网固定IP同时实现快速openshell的链接_第6张图片

 开始编辑这个文件

执行

sudo vi 50-cloud-init.yaml

会看到除了每行开头#注释的内容外,还有以network开头的配置信息,根据我下面的信息,来修改你的信息,每行的内容以及空格的内容一定不要更换,包括开头的空格在内,都是一一堆堆的关闭。每一等级都是对上层的展开或者平级。

我们能看到eth0: 在项目后面都有个冒号“:”,在每个冒号后面必须有一个空格,否则无法识别项目。然后在version: 2的上面,开始进行编辑,添加eth1第二块网卡的信息,如果有了可以忽略,只需要修改IP地址即可,如果没有,根据我下面的内容进行编辑即可,顺序和空格一定不要乱,编辑前记得备份。

network:
    ethernets:
        eth0:
            dhcp4: true
            match:
                macaddress: 52:xx:xx:xx:f3:xx
            set-name: eth0
        eth1:
          optional: true
          addresses: [192.168.1.10/24]  #固定ip地址,网段写你自己的
          nameservers:
            addresses: [192.168.1.1]       #nameservers的地址
          routes:                                  #配置当前路由,走192.168这个交换机的地址
            - to: default
              via: 192.168.1.1
    version: 2                   

其中“-”减号代表展开的目录,nameserver下面的address前面必须空格,不能与nameserver对其,这一点写代码的朋友应该都懂。对照上面的没有问题了,wq!保存退出。

然后执行debug命令,先看看有没有什么错误,当然也可以直接apply。然后你的shell窗口会断开,重新链接即可。

sudo netplan --debug apply

sudo netplan apply

至此两个网卡和两个交换机,已经搞定了内链接和外连接的双重连接。

文章结束

你可能感兴趣的:(tcp/ip,网络协议,网络)