1. Ubuntu 安装 KVM 虚拟化
KVM 是 Linux 内核中一个基于 hypervisor 的虚拟化模块,它允许用户在 Linux 操作系统上创建和管理虚拟机。
如果机器的CPU不支持硬件虚拟化扩展,是无法使用KVM(基于内核的虚拟机)直接创建和运行虚拟机的。此时最多只能使用QEMU的完全软件仿真模式来运行虚拟机,但是性能会极度低下。
检查您的 CPU 是否支持虚拟化:
运行以下命令,输出大于0,说明KVM与系统兼容,可以安装。
egrep -c 'vmx|svm' /proc/cpuinfo
或者安装cpu-checker工具。
apt install -y cpu-checker
它应该输出:
root@ubuntu:~# kvm-okINFO: /dev/kvm existsKVM acceleration can be used
Vmware workstation可以通过编辑虚拟机处理器选项,开启嵌套虚拟化。
环境信息:
安装环境:vmware workstation操作系统:ubuntu 22.04 LTS安装kvm软件包
配置主机名
root@ubuntu:~# hostnamectl set-hostname kvm-host
更新系统
apt update -y
安装必要的包:
## qemu+kvmapt install -y qemu-kvm ## libvirtapt install -y virt-manager libvirt-daemon-system virtinst libvirt-clients## bridge toolapt install -y bridge-utils
安装包说明:
qemu-kvm
- 为 KVM 管理程序提供硬件模拟的软件程序libvirt-daemon-system
- 将 libvirt 守护程序作为系统服务运行的配置文件libvirt-clients
- 用来管理虚拟化平台的软件bridge-utils
- 用来配置网络桥接的命令行工具virtinst
- 用来创建虚拟机的命令行工具 一旦软件包被安装好,libvirt 守护程序将会自动启动。你可以通过运行下面的命令验证:
root@kvm-host:~# systemctl is-active libvirtdactive
用户添加到 KVM 和 Libvirt 组
想要创建和管理虚拟机,你需要添加你的用户到libvirt
和kvm
用户组。
sudo usermod -aG kvm $USERsudo usermod -aG libvirt $USER
网络设置
在libvirt 安装过程中,一个被称为 virbr0
的桥接设备默认被创建。这个设备使用 NAT 来连接客户机到外面的世界。
查看网卡变化,新增了一个virtbr0
的网桥接口。
root@kvm-host:~# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:15:cb:54 brd ff:ff:ff:ff:ff:ff altname enp2s1 inet 192.168.93.9/24 brd 192.168.93.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe15:cb54/64 scope link valid_lft forever preferred_lft forever3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:93:99:53 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever
运行 brctl
工具来列出当前的网桥和它们连接的接口:
root@kvm-host:~# brctl showbridge name bridge id STP enabled interfacesvirbr0 8000.525400939953 yes
默认网络设置适合大部分 Ubuntu 用户,但是有限制,由于虚拟机地址段为私有IP地址,你只能从虚拟机所在宿主机访问虚拟机地址,无法从外部网络访问虚拟机地址。
Libvirt默认NAT网络模式原理图:
如果需要从外部连接虚拟机,需要创建一个新的网桥,将该网桥桥接到物理网卡,以便虚拟机配置物理网段的IP地址,进而实现通过外部网络直连虚拟机。
下载 cloud image 镜像
下面以默认NAT网络模式为例,介绍使用 ubuntu cloud image 快速启动虚拟机。
以 jammy(Ubuntu Server 22.04 LTS)
为例
# 官方源wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img# 国内源wget https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/jammy/current/jammy-server-cloudimg-amd64.img
安装guestfs-tools 镜像定制工具
apt install -y guestfs-tools
创建镜像模板目录
mkdir -p /var/lib/libvirt/images/templates
复制镜像到模板目录
cp jammy-server-cloudimg-amd64.img /var/lib/libvirt/images/templates/
定制镜像参数
export image=/var/lib/libvirt/images/templates/jammy-server-cloudimg-amd64.imgvirt-customize -a $image --run-command 'adduser ubuntu'virt-customize -a $image --run-command 'echo "ubuntu:ubuntu123" | chpasswd'virt-customize -a $image --run-command 'adduser ubuntu sudo'virt-customize -a $image --run-command 'apt update -y'virt-customize -a $image --run-command 'apt install -y qemu-guest-agent'
参数说明:
创建ubuntu
用户,密码为 ubuntu123
,并赋予sudo权限更新系统软件索引(可选)安装必要的软件包(可选) 创建虚拟机
创建虚拟机存储路径并复制镜像模板
mkdir -p /var/lib/libvirt/images/ubuntu01cp /var/lib/libvirt/images/templates/jammy-server-cloudimg-amd64.img /var/lib/libvirt/images/ubuntu01/
使用virt-install命令创建虚拟机
virt-install \ --name ubuntu01 \ --vcpus 1 \ --memory 2048 \ --disk path=/var/lib/libvirt/images/ubuntu01/jammy-server-cloudimg-amd64.img \ --os-variant ubuntu22.04 \ --import \ --autostart \ --noautoconsole
参数说明:
--name
:可选,指定虚拟机名称--vcps
:可选,指定虚拟机cpu大小--memory
:可选,指定虚拟机内存大小--disk path
:必选,指定虚拟机镜像位置--os-variant
:必选,指定虚拟机操作系统类型--import
:必选,指定虚拟机安装方式,安装方式不同该参数不同--autostart
:可选,默认虚拟机不会随主机重启后一起启动,可通过添加该参数配置--noautoconsole
:可选,不指定该参数virt-install命令将始终处于挂起状态,需要另开窗口登录虚拟机 说明:使用osinfo-query
命令可以列出--os-variant
选项支持的所有参数。
$ apt install -y libosinfo-bin$ osinfo-query os
命令示例输出如下
root@kvm-host:~# virt-install \ --name ubuntu01 \ --vcpus 1 \ --memory 2048 \ --disk path=/var/lib/libvirt/images/ubuntu01/jammy-server-cloudimg-amd64.img \ --os-variant ubuntu22.04 \ --import \ --autostart \ --noautoconsoleStarting install...Creating domain... | 0 B 00:00:00 Domain creation completed.root@kvm-host:~#
创建虚拟机后,查看网口及网桥变化,主机新增vnet0
网卡,网桥新增vnet0
接口,说明虚拟机连接到了网桥上。
root@kvm-host:~# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:15:cb:54 brd ff:ff:ff:ff:ff:ff altname enp2s1 inet 192.168.93.9/24 brd 192.168.93.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe15:cb54/64 scope link valid_lft forever preferred_lft forever3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:93:99:53 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever4: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master virbr0 state UNKNOWN group default qlen 1000 link/ether fe:54:00:fc:fe:df brd ff:ff:ff:ff:ff:ff inet6 fe80::fc54:ff:fefc:fedf/64 scope link valid_lft forever preferred_lft foreverroot@kvm-host:~# brctl showbridge name bridge id STP enabled interfacesvirbr0 8000.525400939953 yes vnet0
查看虚拟机运行状态
root@kvm-host:~# virsh list Id Name State-------------------------- 1 ubuntu01 runningroot@kvm-host:~#
使用virsh console
命令连接到虚拟机,使用上面定义的用户密码ubuntu/ubuntu123
登录到虚拟机
virsh console ubuntu01
示例命令输出如下:
root@kvm-host:~# virsh console ubuntu01 Connected to domain 'ubuntu01'Escape character is ^] (Ctrl + ])ubuntu login: ubuntuPassword: Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-100-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/pro System information as of Fri Mar 15 11:31:43 UTC 2024 System load: 0.0458984375 Memory usage: 8% Processes: 114 Usage of /: 81.3% of 1.96GB Swap usage: 0% Users logged in: 0Expanded Security Maintenance for Applications is not enabled.1 update can be applied immediately.1 of these updates is a standard security update.To see these additional updates run: apt list --upgradableEnable ESM Apps to receive additional future security updates.See https://ubuntu.com/esm or run: sudo pro statusThe programs included with the Ubuntu system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted byapplicable law.To run a command as administrator (user "root"), use "sudo <command>".See "man sudo_root" for details.ubuntu@ubuntu:~$ ubuntu@ubuntu:~$ cat /etc/os-release PRETTY_NAME="Ubuntu 22.04.4 LTS"NAME="Ubuntu"VERSION_ID="22.04"VERSION="22.04.4 LTS (Jammy Jellyfish)"VERSION_CODENAME=jammyID=ubuntuID_LIKE=debianHOME_URL="https://www.ubuntu.com/"SUPPORT_URL="https://help.ubuntu.com/"BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"UBUNTU_CODENAME=jammyubuntu@ubuntu:~$
切换到root用户,输入ubuntu
用户的密码ubuntu123
ubuntu@ubuntu:~$ sudo -i[sudo] password for ubuntu: root@ubuntu:~# root@ubuntu:~# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: enp1s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 52:54:00:fc:fe:df brd ff:ff:ff:ff:ff:ffroot@ubuntu:~#
可以看到网卡未获取任何IP地址,通过主机上的网桥接口virbr0
可以确认网桥地址段默认为192.168.122.0/24
,网关地址为192.168.122.1/24
,该地址段和网关就是虚拟机可用的地址段和网关。
确认虚拟机网卡名称为enp1s0
,虚拟机中创建网卡配置文件
cat >/etc/netplan/00-installer-config.yaml<<EOFnetwork: version: 2 ethernets: enp1s0: dhcp4: false addresses: - 192.168.122.10/24 nameservers: addresses: - 223.5.5.5 - 223.6.6.6 routes: - to: default via: 192.168.122.1EOF
启用网卡配置
root@ubuntu:~# chmod 600 /etc/netplan/00-installer-config.yamlroot@ubuntu:~# netplan apply
查看虚拟机网口状态为UP,并且配置了IP地址:
root@ubuntu:~# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:fc:fe:df brd ff:ff:ff:ff:ff:ff inet 192.168.122.10/24 brd 192.168.122.255 scope global enp1s0 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fefc:fedf/64 scope link valid_lft forever preferred_lft forever
测试虚拟机访问外部网络
root@ubuntu:~# ping www.baidu.com -c 4PING www.a.shifen.com (183.2.172.42) 56(84) bytes of data.64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=1 ttl=127 time=7.56 ms64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=2 ttl=127 time=8.46 ms64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=3 ttl=127 time=8.63 ms64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=4 ttl=127 time=8.40 ms--- www.a.shifen.com ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3007msrtt min/avg/max/mdev = 7.556/8.262/8.627/0.416 msroot@ubuntu:~#
退出虚拟机执行exit命令,然后按键盘快捷键ctrl + ]
。
在kvm主机上查看虚拟机网卡IP地址(依赖虚拟机中的qemu-guest-agent
)
root@kvm-host:~# virsh domifaddr ubuntu01 --source agent Name MAC address Protocol Address------------------------------------------------------------------------------- lo 00:00:00:00:00:00 ipv4 127.0.0.1/8 - - ipv6 ::1/128 enp1s0 52:54:00:fc:fe:df ipv4 192.168.122.10/24 - - ipv6 fe80::5054:ff:fefc:fedf/64
默认虚拟机不会随主机开机自动启动,可以使用以下命令配置随宿主机自动启动,或在创建虚拟机时指定--autostart
参数。
root@kvm-host:~# virsh autostart ubuntu01
如果需要删除虚拟机,需要先将虚拟机关机
root@kvm-host:~# virsh shutdown ubuntu01
确认虚拟机已关机
root@kvm-host:~# virsh list --all Id Name State--------------------------- - ubuntu01 shut off
然后执行以下命令删除虚拟机
root@kvm-host:~# virsh undefine ubuntu01
如果需要彻底删除虚拟机,则进一步删除虚拟机磁盘文件
root@kvm-host:~# rm -rf /var/lib/libvirt/images/ubuntu01/
2. 配置网桥共享物理网卡
桥接网络与其他虚拟机共享主机的真实网络接口,以连接到外部网络。因此,每个 VM 都可以直接绑定到任何可用的 IPv4 或 IPv6 地址,就像一台物理计算机一样。
默认情况下,KVM 设置了一个专用虚拟网桥,以便所有 VM 都可以在主机内相互通信。它提供自己的子网和 DHCP 来配置虚拟机的网络,并使用 NAT 访问主机网络。
查看 KVM 默认虚拟接口的 IP 地址:
root@kvm-host:~# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:15:cb:54 brd ff:ff:ff:ff:ff:ff altname enp2s1 inet 192.168.93.9/24 brd 192.168.93.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe15:cb54/64 scope link valid_lft forever preferred_lft forever3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:93:99:53 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever
可以看到,KVM默认网络virbr0使用192.168.122.1/24 IP地址。所有虚拟机都将使用192.168.122.0/24 IP 范围内的 IP 地址,主机操作系统可通过192.168.122.1访问。应该能够从虚拟机操作系统内部通过 ssh 进入主机操作系统(位于 192.168.122.1)并使用 scp 来回复制文件。
如果您只从主机本身访问内部的 VM 就可以了。但是,无法从网络中的其他远程系统访问虚拟机。
为了从其他远程主机访问虚拟机,必须设置一个在主机网络上运行的公共网桥,并使用主机网络上的任何外部 DHCP 服务器。通俗地说,我们将使所有虚拟机使用主机系统使用的相同 IP 系列。
如果你打算从本机(Ubuntu 22.04)之外访问 KVM 虚拟机,你必须将虚拟机的网卡映射至网桥。virbr0 网桥是 KVM 安装完成后自动创建的,仅做测试用途。
物理桥接网络示意图:
禁用 KVM默认网络
接下来,我们应该禁用 KVM 为自己安装的默认网络。查看默认网络
root@kvm-host:~# virsh net-list Name State Autostart Persistent-------------------------------------------- default active yes yes
使用命令删除默认的 KVM 网络:
virsh net-destroy defaultvirsh net-undefine default
查看网桥及网桥接口都已经被删除
root@kvm-host:~# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:15:cb:54 brd ff:ff:ff:ff:ff:ff altname enp2s1 inet 192.168.93.9/24 brd 192.168.93.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe15:cb54/64 scope link valid_lft forever preferred_lft foreverroot@kvm-host:~# brctl showroot@kvm-host:~#
设置 KVM 公共网桥
现在,让我们设置 KVM 公共网桥以在创建新 VM 时使用。查找网络接口ens33的MAC地址:
root@kvm-host:~# ip a show
或者你可以运行命令,它将在 serial:
条目中输出 MAC 地址。
lshw -C network
为 VM(虚拟机)创建桥接网络。首先查看主机网卡默认配置
root@kvm-host:~# cat /etc/netplan/00-installer-config.yaml # This is the network config written by 'subiquity'network: ethernets: ens33: addresses: - 192.168.93.9/24 gateway4: 192.168.93.2 nameservers: addresses: - 114.114.114.114 - 8.8.8.8 search: [] version: 2
修改后如下,清除主机网卡ens33上的IP信息,转移到br0网桥上
$ sudo nano /etc/netplan/00-installer-config.yamlnetwork: ethernets: ens33: dhcp4: false dhcp6: false bridges: br0: interfaces: [ ens33 ] dhcp4: false dhcp6: false addresses: [192.168.93.9/24] macaddress: 00:0c:29:15:cb:54 routes: - to: default via: 192.168.93.2 nameservers: addresses: ["223.5.5.5","223.6.6.6"] parameters: stp: false forward-delay: 4 version: 2
请注意:需要将 br0
的 macaddress
设置为在上面找到的 ens33
的 MAC 地址。
测试网卡配置是否正确
netplan generate
确认检查无报错,使用 Netplan 应用更改
netplan apply
使用 ip addr 命令查看更改,如下所示:
root@kvm-host:~# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000 link/ether 00:0c:29:15:cb:54 brd ff:ff:ff:ff:ff:ff altname enp2s16: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:0c:29:15:cb:54 brd ff:ff:ff:ff:ff:ff inet 192.168.93.9/24 brd 192.168.93.255 scope global br0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe15:cb54/64 scope link valid_lft forever preferred_lft foreverroot@kvm-host:~#
查看netplan创建的网桥及网桥上的接口
root@kvm-host:~# brctl showbridge name bridge id STP enabled interfacesbr0 8000.000c2915cb54 no ens33
添加网桥到KVM
使用以下内容创建文件 br0.xml
:
mkdir -p /etc/kvm/cat >/etc/kvm/host-bridge.xml<<EOF<network> <name>host-bridge</name> <forward mode="bridge"/> <bridge name="br0"/></network>EOF
例如,该文件可能位于Linux 用户主目录中。如果在 root 下,它可能是/root/br0.xml
name
– 虚拟网络的简称。它可以是任何字母数字字符串forward
– 表示虚拟网络必须连接到物理网络。 mode=“bridge” 在我们的例子中意味着正在连接到在 libvirt 之外创建的网桥。bridge
– 确定要连接的网桥的名称。 virsh net-define /etc/kvm/host-bridge.xmlvirsh net-start host-bridgevirsh net-autostart host-bridge
查看新增的网络
root@kvm-host:~# virsh net-list Name State Autostart Persistent------------------------------------------------ host-bridge active yes yes
现在,安装 KVM 后,您可以继续在 KVM 上创建 Ubuntu 22.04 虚拟机。
测试创建虚拟机
新建虚拟机ubuntu02,创建存储路径并复制镜像模板
mkdir -p /var/lib/libvirt/images/ubuntu02cp /var/lib/libvirt/images/templates/jammy-server-cloudimg-amd64.img /var/lib/libvirt/images/ubuntu02/
运行同样命令创建虚拟机
virt-install \ --name ubuntu02 \ --vcpus 1 \ --memory 2048 \ --disk path=/var/lib/libvirt/images/ubuntu02/jammy-server-cloudimg-amd64.img \ --os-variant ubuntu22.04 \ --import \ --autostart \ --noautoconsole
连接到ubuntu02虚拟机
root@kvm-host:~# virsh console ubuntu02
确认虚拟机网卡名称为enp1s0
,虚拟机中创建网卡配置文件,注意这次配置的虚拟机IP与主机同一个网段。
cat >/etc/netplan/00-installer-config.yaml<<EOFnetwork: version: 2 ethernets: enp1s0: dhcp4: false addresses: - 192.168.93.100/24 nameservers: addresses: - 223.5.5.5 - 223.6.6.6 routes: - to: default via: 192.168.93.2EOF
启用网卡配置
root@ubuntu:~# chmod 600 /etc/netplan/00-installer-config.yamlroot@ubuntu:~# netplan apply
查看虚拟机网口状态为UP,并且配置了IP地址:
root@ubuntu:~# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:d0:fd:76 brd ff:ff:ff:ff:ff:ff inet 192.168.93.100/24 brd 192.168.93.255 scope global enp1s0 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fed0:fd76/64 scope link valid_lft forever preferred_lft forever
测试虚拟机访问外部网络
root@ubuntu:~# ping www.baidu.com -c 4PING www.a.shifen.com (183.2.172.185) 56(84) bytes of data.64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=1 ttl=128 time=7.60 ms64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=2 ttl=128 time=7.66 ms64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=3 ttl=128 time=7.32 ms64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=4 ttl=128 time=7.35 ms--- www.a.shifen.com ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3006msrtt min/avg/max/mdev = 7.321/7.484/7.662/0.148 msroot@ubuntu:~#
测试外网访问虚拟机
C:\Users\pc>ping 192.168.93.100正在 Ping 192.168.93.100 具有 32 字节的数据:来自 192.168.93.100 的回复: 字节=32 时间=1ms TTL=64来自 192.168.93.100 的回复: 字节=32 时间<1ms TTL=64来自 192.168.93.100 的回复: 字节=32 时间<1ms TTL=64来自 192.168.93.100 的回复: 字节=32 时间<1ms TTL=64192.168.93.100 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),往返行程的估计时间(以毫秒为单位): 最短 = 0ms,最长 = 1ms,平均 = 0msC:\Users\pc>
配置SSH远程登录,修改以下两项
# vim /etc/ssh/sshd_configPermitRootLogin yesPasswordAuthentication yes
删除其他ssh配置,为root用户设置密码。
# rm -rf /etc/ssh/sshd_config.d/60-cloudimg-settings.conf# ssh-keygen -A# passwd root
重启sshd服务
systemctl restart sshd
测试通过SSH连接到虚拟机
C:\Users\pc>ssh root@192.168.93.100root@192.168.93.100's password:Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-100-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/pro System information as of Fri Mar 15 12:28:35 UTC 2024 System load: 0.0048828125 Processes: 116 Usage of /: 81.7% of 1.96GB Users logged in: 1 Memory usage: 9% IPv4 address for enp1s0: 192.168.93.100 Swap usage: 0%Expanded Security Maintenance for Applications is not enabled.1 update can be applied immediately.1 of these updates is a standard security update.To see these additional updates run: apt list --upgradableEnable ESM Apps to receive additional future security updates.See https://ubuntu.com/esm or run: sudo pro statusFailed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settingsLast login: Fri Mar 15 12:28:35 2024 from 192.168.93.1root@ubuntu:~#
参考:https://docs.nvidia.com/dgx/bp-dgx/dgx2-kvm-networking.html