两个host上的qemu VM使用bridge互通

两个host上的qemu VM使用bridge互通

要使两个VM互通,必须使两个VM暴露在外部网络上,而不能仅仅在host内部。因此需要使用网桥。网桥是一个二层设备,和二层交换机是一个意思。
然而,在使用中,网桥总是和linux里面的端口并列,刚开始造成了不小的困惑。首当其冲的困惑是,作为一个二层交换机,是不需要IP地址的,然而网桥在使用时总是配置一个IP地址,更像一个普通的linux网卡。本文试图对这些问题做一个回答,让自己,也让和我同样困惑的人释怀。

配置网桥和qemu

  1. 在host上,增加一个网桥设备,假定host本来有一个物理网卡端口p2p2。
 # brctl addbr br0        #增加一个网桥
 # brctl addif br0 p2p2   #将主机的p2p2物理端口连到网桥上
 # ifconfig br0 up
  1. 启动qemu,并将网口连接到网桥上
#qemu-system-x86_64 -enable-kvm -smp 1 -drive if=virtio,file=/vmdisk/ubuntu14.04.img.qcow2,cache=none  -m 4G  -vnc :2  -net nic,macaddr=52:54:00:12:34:23 -net tap,ifname=tap1,script=/etc/qemu-ifup,downscript=no

这里要注意的是,/etc/qemu-ifup脚本可能需要修改,参考https://tthtlc.wordpress.com/2015/10/21/qemu-how-to-setup-tuntap-bridge-networking/ , 增加switch=br0这一行

此时的网络结构如下:
这里写图片描述

此时在host能看到3个虚拟网络端口,

# ls /sys/devices/virtual/net/
br0  lo  tap1

其中,tap1是给客户机提供网络的TAP设备,也就是在guest系统中看到eth0。
作为bridge模式,此时的guest系统和host系统,在网络上是平等的,而不是像上图那样guest包含在host内部。guest和host之间通过br0这个交换机互连。既然guest和host都连在br0这个交换机上,那么guest和host系统都需要有一个网口。在guest,就是eth0,即tap1。在host,这个口是谁呢,是p2p2吗?答案是否。p2p2虽然被加到了br0上,然而并不是用来将host连接到br0上,p2p2可以看成是br0的uplink端口,用于和外界进行互连。
这里br0其实有两个身份,一方面br0代表着一个虚拟交换机,另一方面,br0代表着host上的一个虚拟端口。也就是port-br0连接到了switch-br0上。如下图,
这里写图片描述

这是一个主机的情况。如果我们有另外一个主机,两个主机之间由物理的交换机连接,两个物理主机的p2p2口都连在同一个物理交换机上。
这里写图片描述

到这里VM1和VM2就可以互通了。互通前当然要配置各自的IP地址。

  1. 分别进入两个guest系统(此时需要用vnc登陆)
#service network-manager stop
#ifconfig eth0 192.168.0.23 #或者在VM2中是24

现在来回答前面提出的问题,为什么要给br0配置IP地址。
目前为止,VM1和VM2配置了IP地址后,就可以互通了。然而,从各自的host系统是无法访问到VM guest系统的。因为此时大家只是在同一个二层网络里面,host想要访问guest,host的端口,即port-br0也需要有一个和guest相同网段的IP地址。配置方法就是给br0配置IP.

# ifconfig br0 192.168.0.231 #或者是241在host2中
<think>好的,我现在需要帮助用户找到如何使用QEMU创建和配置Linux虚拟机的教程。首先,我需要回忆QEMU的基本使用步骤,然后结合用户提供的引用信息,看看是否有相关内容。 用户提供的引用中有几个链接,其中引用[2]提到了通过gdb启动QEMU的命令,具体参数包括-enable-kvm、-smp、-m、-kernel、-initrd、-drive等。这可能涉及到虚拟机的配置参数,但用户需要的是一个完整的教程,而不仅仅是启动命令。引用[1]是关于在Fedora 22上安装KVM的教程,这可能与QEMU相关,因为KVM通常和QEMU一起使用。引用[3]看起来是关于ceph工作台的内容,可能不太相关。 接下来,我需要整理QEMU创建虚拟机的一般步骤。通常包括安装QEMU/KVM、创建虚拟磁盘、下载ISO镜像、启动安装过程、配置硬件参数等。用户可能需要详细的步骤说明,比如如何安装软件包,如何生成磁盘镜像,如何启动虚拟机安装等。 同时,用户提供的引用中的示例代码可能可以帮助用户理解具体的命令格式,比如引用[2]中的启动命令,可以作为一个参考模板。需要确保回答中的命令语法正确,并且符合用户的需求,比如指定正确的ISO路径和磁盘路径。 另外,用户可能需要知道如何启用KVM加速,这在引用[1]和[2]中都有提到。安装KVM可以提升虚拟机性能,所以应该包含在教程步骤中。可能需要检查用户是否已经安装了KVM,或者是否需要额外的步骤。 还要注意用户可能使用Linux发行版,但用户的问题没有明确说明,所以需要保持通用性,比如使用apt-get或yum安装QEMU和KVM相关的软件包。此外,生成虚拟磁盘的命令(qemu-img create)也是关键步骤。 最后,要确保回答结构清晰,分步骤说明,并引用相关的引用来源。同时,生成的相关问题需要与QEMU使用相关,比如性能优化、网络配置等。</think>### 使用QEMU创建和配置Linux虚拟机的分步教程 #### 1. 安装QEMU和KVM(硬件加速支持) 在Linux系统中,QEMU通常与KVM结合使用以提升性能。以Debian/Ubuntu为例: ```bash sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager ``` Fedora/CentOS/RHEL系统可参考:[^1] ```bash sudo dnf install @virtualization ``` 验证KVM是否启用: ```bash kvm-ok # 输出应显示"KVM acceleration can be used" ``` #### 2. 创建虚拟磁盘镜像 使用`qemu-img`创建磁盘文件(例如20GB大小): ```bash qemu-img create -f qcow2 linux-vm.qcow2 20G ``` $qcow2$格式支持动态空间分配,更节省存储空间。 #### 3. 启动虚拟机安装 挂载Linux ISO镜像进行安装(以Ubuntu为例): ```bash qemu-system-x86_64 -enable-kvm -smp 4 -m 4G \ -drive file=linux-vm.qcow2,format=qcow2 \ -cdrom ubuntu-22.04-live-server-amd64.iso \ -boot d -vga virtio ``` 参数说明: - `-enable-kvm`:启用硬件加速[^2] - `-smp 4`:分配4个CPU核心 - `-m 4G`:分配4GB内存 - `-vga virtio`:使用优化显示驱动 #### 4. 完成系统安装 安装过程与物理机相同,注意: - 分区时选择虚拟磁盘`/dev/vda` - 建议启用SSH服务便于后续管理 - 安装完成后移除`-cdrom`参数启动 #### 5. 优化配置(可选) ```bash qemu-system-x86_64 -enable-kvm -machine accel=kvm \ -cpu host -smp 8 -m 8G \ -drive file=linux-vm.qcow2,format=qcow2,if=virtio \ -net nic,model=virtio -net user,hostfwd=tcp::2222-:22 \ -display none -daemonize ``` 该配置包含: - 虚拟化I/O设备(virtio)加速 - SSH端口转发(通过2222端口访问) - 后台守护进程模式运行 #### 6. 日常管理命令 连接控制台: ```bash virsh console vm-name ``` 查看运行状态: ```bash virsh list --all ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值