当前位置: 首页 > news >正文

QEMU 使用 Open vSwitch网桥连接虚拟机网络

1. 概述

在 QEMU 中使用 Open vSwitch(OVS)网桥连接虚拟机网络,需要将虚拟机的虚拟网卡接入 OVS 网桥,实现与物理网络或其他虚拟机的通信。

前提条件

  1. 已安装 Open vSwitch 并创建网桥(假设网桥名为 ovsbr0,若未创建,可先执行 sudo ovs-vsctl add-br ovsbr0 创建)。

  2. 网桥已配置(如绑定物理网卡、设置 VLAN 等,根据网络需求提前配置好)。

  3. QEMU 已安装,且当前用户有足够权限操作网络设备(建议用 root 或添加 CAP_NET_ADMIN 权限)。

该配置可以参考前文:使用 Open vSwitch 搭建虚拟机与主机网络网桥的操作指南。

核心原理

QEMU 虚拟机的网络接口通过 TAP 设备 与 OVS 网桥连接:

  • 先创建一个 TAP 设备(如 tap0)。

  • 将 TAP 设备添加到 OVS 网桥 ovsbr0

  • 启动 QEMU 时,将虚拟机的虚拟网卡绑定到该 TAP 设备,实现与 OVS 网桥的通信。

2. 配置步骤

2.1 创建 TAP 设备并添加到 OVS 网桥
# 1. 创建 TAP 设备(名称自定义,如 tap0)
sudo ip tuntap add dev tap0 mode tap# 2. 启用 TAP 设备
sudo ip link set tap0 up# 3. 将 TAP 设备添加到 OVS 网桥 ovsbr0
sudo ovs-vsctl add-port ovsbr0 tap0# 4. 验证 TAP 设备是否已添加到网桥
sudo ovs-vsctl show#输出中若 ovsbr0 的 ports包含 tap0,则表示添加成功。
2.2 启动 QEMU 并绑定到 TAP 设备

启动 QEMU 时,通过 -netdev 和 -device 参数指定 TAP 设备,将虚拟机网络接入 OVS 网桥。

sudo qemu-system-x86_64 \-hda /path/to/your/image.qcow2 \  # 虚拟机镜像-m 2048 \                          # 内存 2GB-smp 2 \                           # 2 核 CPU-enable-kvm \                      # 启用 KVM 加速# 网络配置:绑定到 tap0 设备(接入 OVS 网桥)-netdev tap,id=net0,ifname=tap0,script=no,downscript=no \-device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:56  # 虚拟网卡(推荐 virtio 驱动,性能好)

参数说明

  • -netdev tap,id=net0,...:定义一个 TAP 类型的网络后端,id=net0 是标识名,ifname=tap0 指定绑定的 TAP 设备。

    • script=no 和 downscript=no:禁用 QEMU 默认的网络脚本(避免自动配置冲突,因为 OVS 已手动配置)。

  • -device virtio-net-pci,...:为虚拟机添加一个虚拟网卡,netdev=net0 关联到上面定义的 TAP 后端,mac 指定 MAC 地址(可选,避免冲突)。

2.3 (可选)自动创建和清理 TAP 设备

若每次手动创建 TAP 设备繁琐,可编写简单脚本实现自动化:

1 创建脚本 ovs-qemu-ifup(启动时执行):

# 接收 QEMU 传递的 TAP 设备名(如 tap0)
TAP=$1
# 创建 TAP 设备并添加到 OVS 网桥
sudo ip tuntap add dev $TAP mode tap
sudo ip link set $TAP up
sudo ovs-vsctl add-port ovsbr0 $TAP

2 创建脚本 ovs-qemu-ifdown(关闭时执行):

TAP=$1
# 从 OVS 网桥移除 TAP 设备并删除
sudo ovs-vsctl del-port ovsbr0 $TAP
sudo ip link delete $TAP

3 赋予脚本执行权限:

chmod +x ovs-qemu-ifup ovs-qemu-ifdown

4 启动 QEMU 时调用脚本:

sudo qemu-system-x86_64 \-hda /path/to/image.qcow2 \-m 2048 \-smp 2 \-enable-kvm \-netdev tap,id=net0,script=./ovs-qemu-ifup,downscript=./ovs-qemu-ifdown \-device virtio-net-pci,netdev=net0
  • QEMU 启动时会自动调用 ovs-qemu-ifup 创建 TAP 并添加到 OVS,关闭时调用 ovs-qemu-ifdown 清理。

5 验证网络连接

  1. 进入虚拟机,配置与 OVS 网桥同网段的 IP 地址(如 OVS 网桥 IP 为 192.168.1.1,虚拟机可设为 192.168.1.10)。

  2. 测试连通性:

    • 虚拟机 ping OVS 网桥 IP 或物理网络中的其他设备。

    • 物理机或其他设备 ping 虚拟机 IP。

  3. 查看 OVS 端口状态:

    sudo ovs-ofctl show ovs-br0  # 检查 tap0 端口是否为 UP 状态

3. 常见问题

  1. 虚拟机无法联网:

    • 检查 TAP 设备是否已添加到 OVS 网桥(ovs-vsctl show)。

    • 确认 TAP 设备和 OVS 网桥状态为 UPip link show tap0ip link show ovs-br0)。

    • 检查虚拟机 IP 与 OVS 网桥是否在同一网段,是否关闭防火墙(如 ufw disable)。

  2. 权限错误(如 “Permission denied”):

    用 sudo 执行 QEMU 命令,或给当前用户添加网络设备操作权限:
    • sudo setcap cap_net_admin+ep /usr/bin/qemu-system-x86_64
  3. TAP 设备残留:

           若虚拟机异常关闭,TAP 设备可能未自动删除,需手动清理:        

sudo ovs-vsctl del-port ovs-br0 tap0
sudo ip link delete tap0

通过以上步骤,QEMU 虚拟机即可通过 OVS 网桥接入自定义网络,支持复杂的网络拓扑(如 VLAN 隔离、流量控制、OpenFlow 规则等)。

http://www.dtcms.com/a/597845.html

相关文章:

  • 充气泵方案:充气泵与汽车的关系
  • 北京P2P公司网站建设网站建设合同 模板 下载
  • 贴片机编程:提高生产效率与精度的关键技术 | 贴片机编程技巧与注意事项详解
  • 深度学习_三层神经网络传播案例(L0->L1->L2)
  • 营销类网站建设需要注意的问题国家信用信息公示系统官网山东
  • 第四章:C# 面向对象编程详解:从类与对象到完整项目实践
  • DDoS防护:为企业业务保驾护航的高可用盾牌
  • 企业产品做哪个网站推广好建筑培训课程有哪些
  • 模版 c++
  • LLaMA Factory微调大模型
  • UaGateway构建高可用OPC UA架构:实现冗余通信与数据聚合
  • Linux之vmlinux文件段布局和arm64 的链接脚本vmlinux.lds.S分析
  • C#6、三种主要的错误类型是什么
  • 使用Selenium进行网页自动化
  • 论坛网站建设推广优化wordpress主题下载资源
  • 网站推广文章范例在哪里查企业信息最准确
  • MCP驱动的Rgentic RRG(向量数据库+网络搜索)
  • 网站漏洞怎么修复上海劳务市场招聘信息查询
  • 异常的分类
  • 做时时网站要多少钱用虚拟机做网站服务器
  • 任性动图教程2 -如何让诗词生成动图
  • 零基础学JAVA--Day29( StringBuffer+ StringBuilder)
  • 做源码演示的网站果洛wap网站建设多少钱
  • Zabbix7设置告警邮件提醒
  • 【九、Linux访问网络附加存储】
  • 网站模块分析枣庄有做网站的吗
  • 记事本做网站怎么改字体出入合肥最新通知今天
  • 网站建设与管理任务分工可做网站的免费空间
  • 常见的自动化测试框架有哪些?(Selenium、Appium、Cypress等)
  • 做彩票网站多少钱网站建设道冲