为 Multipass 添加固定 IP,以供局域网使用

0 前言

以前大学用的6代 i5 闲置在家吃灰尘,想着物尽其用的原则,想着搞个虚拟机来折腾下 linux 环境。于是安装 Multipass 来玩玩(其实是我现在用的电脑只有 16G 内存不够跑几个虚拟机实例┑( ̄Д  ̄)┍)。

关于 Mutlipass

Multipass 是 Ubuntu 官方推行的一个支持多个虚拟机实例运行的平台,非常适合 win 用户学习和使用 linux 环境。
官网地址:https://multipass.run/

1 在 Hyper-v 管理器添加虚拟网卡

在安装 Multipass 时,windows 会自动开启 hyper-v 的功能(毕竟 windows 跑虚拟机依赖这个功能)。
以 win10 为例,需要在 “虚拟交换机管理” -> 选择“外部”类型的虚拟交换机
为 Multipass 添加固定 IP,以供局域网使用_第1张图片
为 Multipass 添加固定 IP,以供局域网使用_第2张图片
这里我创建的虚拟交换机名称为ext-switch

2 查看本机 ip

在 cmd 中,输入 ipconfig ,查看本机 ipv4 地址,以本机为例, ipv4 地址为 10.0.0.18
为 Multipass 添加固定 IP,以供局域网使用_第3张图片

3 创建虚拟机

这里以创建 1 cpu/4G ram/20G disk 为例:

multipass launch -c 1 -m 4G -d 20G -n my-instance-1

稍等片刻,就创建和启动好名为 my-instance-1 的实例

4 向虚拟机添加网卡

4.1 在 hyper-v 给虚拟机分配虚拟机网卡

选择我们刚刚创建好的虚拟机,点击“设置”:
为 Multipass 添加固定 IP,以供局域网使用_第4张图片
点击“添加硬件”,选择“网络适配器”
为 Multipass 添加固定 IP,以供局域网使用_第5张图片
然后选择我们前面创建好名为 ext-switch 的网络适配器
为 Multipass 添加固定 IP,以供局域网使用_第6张图片

4.2 进入虚拟机:

multipass shell my-instance-1

4.3 修改 netplan 文件

netplan 是 ubuntu 维护网卡信息的地方,配置文件地址在 /etc/netplan/50-cloud-init.yaml

修改文件信息:

sudo vi /etc/netplan/50-cloud-init.yaml

修改后的文件内容信息:

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        eth0:
            dhcp4: true
            match:
                macaddress: 52:54:00:51:78:3a
            set-name: eth0
        eth1:
            addresses:
                - 10.0.0.102/24
            nameservers:
                addresses: [10.0.0.1]
            routes:
                - to: default
                  via: 10.0.0.1
    version: 2

这里新建了一个名为 eth1 的网卡信息,包含了 addressesnameserverssroutes 的信息。

  • addresses 项为 ipv4 的地址列表,因为本机的 ip 地址为 10.0.0.18 ,故我们这里的地址必须为 10.0.0.{虚拟机需要使用局域网未使用过的ipv4地址}/24,我这里为 10.0.0.102/24 。由于地址使用了 cidr 来表示,故子网掩码是 255.255.255.0
  • nameservers 则是 dns 服务器,通常都是我们连接局域网的路由器地址,这里是 [10.0.0.1]
  • routes 则是网关,网关也是直接走局域网路由器的地址,这里是 10.0.0.1

4.3 应用修改后的 netplan

sudo netplan --debug apply

输入上述命令来应用修改后的 netplan 配置信息,其中 --debug 参数方便我们查看应用过程中有没有报错(毕竟 shell 里面手写配置信息容易翻车,特别是 windows 自带的 cmd ┑( ̄Д  ̄)┍)

4.4 验证是否生效

退出当前 cmd 的会话,然后重新打开 cmd ,输入 multipass shell my-instance-1 重新进入实例,这时我们看到新建的网卡已经能够使用了(在 IPv4 address for eth1 的地方)
为 Multipass 添加固定 IP,以供局域网使用_第7张图片

5 局域网访问

笔者当前使用的 ubuntu 版本为 ubuntu 22.04.2 LTS 版本,已经内置了 openssh,故不需要另外安装 openssh

5.1 修改 ssh 配置信息

ssh 配置信息目录在 /etc/ssh/sshd_config 中,默认情况下,ssh 是不支持密码登录的,这里要修改以下信息以支持其他机器通过密码登录该节点:

# 在 vi 命令中,可以通过 :/PasswordAuthentication 快速搜索到该行配置
PasswordAuthentication yes
# 允许 root 用户登录
PermitRootLogin yes

修改完毕后,重启 ssh 服务:

sudo service ssh restart

5.2 修改当前登录用户的密码

通过 multipass 创建的实例,是没有指定密码的,所以我们要重置密码,我这里的用户为 ubuntu :

sudo passwd ubuntu

5.3 验证结果

通过其他机器 ssh 登录(这里使用的 termius)
为 Multipass 添加固定 IP,以供局域网使用_第8张图片

6 参考博客/论坛

你可能感兴趣的:(ubuntu服务器linux)