Ubuntu20.04配置KVM并设置网桥

2021/9/10 Ubuntu

之前就熟悉了Ubuntu作为主力机器的配置,现在大部分的软件都可以使用顺利在Ubuntu上使用,不过还是有少许软件需要window的环境,wine提供了一个简便的方法,但此方法有许多不便,而虚拟机提供完整的windows环境,是一个不错的解决方案。本文介绍在Ubuntu下内核自带的虚拟机的安装已经网桥配置。

# 准备工作

使用如下指令安装KVM已经相应工具。

sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
sudo systemctl is-active libvirtd
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
shutdown -r now

# 网络配置

默认KVM使用的网络的NAT,可以使用如下指令查看。

$ virsh net-list

 Name   State   Autostart   Persistent
----------------------------------------

如果只在本机使用,无需配置网络为bridge。

配置网络为bridge可以让虚拟机从物理交换机获取地址并在局域网内自由访问。

配置bridge可以使用多种方式,这里介绍使用systemd-networkd配置文件的方法(推荐desktop环境使用)。

  1. 禁用systemd-networkd
systemctl disableable systemd-networkd
  1. 创建文件/etc/systemd/network/br.netdev
# file is /etc/systemd/network/br.netdev

[NetDev]
Name=br0
Kind=bridge
  1. 创建文件/etc/systemd/network/1-br0-bind.network
# file is 1-br0-bind.network

[Match]
Name=eno1

[Network]
Bridge=br0
  1. 创建文件/etc/systemd/network/2-br0-dhcp.network
# file is /etc/systemd/network/2-br0-dhcp.network

[Match]
Name=br0

[Network]
DHCP=ipv4
  1. 启用systemd-networkd并重启电脑
systemctl enable systemd-networkd
shutdown -r now
  1. 验证网络配置
  • 确认主机可以访问网络
  • 确认网桥已经配置完成
$ brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.e4b97aeba030       no              eno1
                                                        vnet0
virbr0          8000.5254009101ef       yes             virbr0-nic

# 最后

现在虚拟器可以配置为bridge模式了,例如如下的指令就创建了一个使用bridge的ubuntu server。

virt-install \
  --name testvm \
  --ram 2048 \
  --disk path=/var/lib/libvirt/images/u19.qcow2,size=8 \
  --vcpus 2 \
  --os-type linux \
  --os-variant generic \
  --console pty,target_type=serial \
  --bridge=br0 \
  --cdrom /var/lib/libvirt/isos/ubuntu-18.04.4-live-server-amd64.iso

上述指令中的路径以及配置需根据实际情况修改,其中bridge指定了前面生成的网桥。

# 参考