如何在qemu/kvm上设置功能性专用网桥?

如何在qemu/kvm上设置功能性专用网桥?

系统

我的主机运行的是 Fedora 29,我的互联网连接是 wifi。请注意,我使用的是 X.org,而不是 wayland; qemu 中的 SDL 选项在 wayland 上不起作用,并且curses 选项启动时遇到问题。

问题

为了进行学术实验,我需要在该主机上设置许多可以相互通信的不同虚拟机。

我的尝试

我遵循了这个指南:https://www.linux-kvm.org/page/Networking。根据它所说的,我似乎需要在所有客人之间建立一个私人虚拟桥,以便他们可以进行通信。我执行sudo nano /etc/qemu-ifup并复制了指南中的以下内容:

#!/bin/sh
set -x

switch=br0

if [ -n "$1" ];then
        # tunctl -u `whoami` -t $1 (use ip tuntap instead!)
        ip tuntap add $1 mode tap user `whoami`
        ip link set $1 up
        sleep 0.5s
        # brctl addif $switch $1 (use ip link instead!)
        ip link set $1 master $switch
        exit 0
else
        echo "Error: no interface specified"
        exit 1
fi

然后我创建了目录~/VMs并执行nano ~/VMs/randmac并复制到

#!/bin/bash
# generate a random mac address for the qemu nic
printf 'DE:AD:BE:EF:%02X:%02X\n' $((RANDOM%256)) $((RANDOM%256))

我从以下位置下载了最小的 Ubuntu isohttp://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/mini.iso,并使用以下命令:

sudo chmod 755 /etc/qemu-ifup
cd ~/VMs
cp ~/Downloads/mini.iso .
chmod 755 ./randmac
sudo ip link add br0 type bridge
sudo ifconfig br0 up
qemu-img create -f qcow2 ubuntu-server-0.img 2G
sudo qemu-system-x86_64 -hda ubuntu-server-0.img \
-sdl -cdrom mini.iso -machine type=q35,accel=kvm \
-cpu host -smp 2 -m 512 \
-device e1000,netdev=net0,mac=`./randmac` -netdev tap,id=net0

Live CD 成功启动,但安装程序无法连接到网络:它会产生以下错误:

在此输入图像描述

然后它要求我提供一个 IP,据我所知,我没有这个 IP。 qemu命令执行过程中,终端输出为:

+ switch=br0
+ '[' -n tap0 ']'
++ whoami
+ ip tuntap add tap0 mode tap user root
ioctl(TUNSETIFF): Device or resource busy
+ ip link set tap0 up
+ sleep 0.5s
+ ip link set tap0 master br0
+ exit 0

问题

有谁知道我做错了什么以及如何解决?

相关内容