qemu 网络使用基础

QEMU 中的网络分为两个部分:

  • 提供给虚拟机的虚拟网络设备(例如 PCI 网卡)。
  • 与(模拟) NIC 交互的网络后端(例如,将数据包放到主机的网络上)。

默认情况下, 如果你啥都没有指定:QEMU 将为 guest 创建一个 SLiRP 用户网络后端和一个合适的虚拟网络设备(可能是 e1000),但对于现代操作系统而言,不是最佳的使用方式

1. 网络后端

1.1 如何创建网络后端?

ini 复制代码
-netdev TYPE,id=NAME,...

该 id 选项提供虚拟网络设备和网络后端相互关联的名称。

如果您希望虚拟机内部有多个虚拟网络设备,则每个设备都需要自己的网络后端。

该名称用于区分后端,即使只指定了一个后端,也必须使用该名称。

1.2 tap 设备

tap 网络后端使用主机中的 tap 网络设备。它提供了非常好的性能,并且可以配置为创建几乎任何类型的网络拓扑。

不幸的是,它需要在主机中配置该网络拓扑,这往往因您使用的作系统而异。一般来说,它还要求您具有 root 权限。

ini 复制代码
-netdev tap,id=mynet0

3. 使用 virtio-net(半虚拟化)网络适配器,因为它具有最佳性能

对于现代客户(虚拟)机,应该使用 virtio-net(半虚拟化)网络适配器,因为它具有最佳性能,但它需要特殊的客户(虚拟)机驱动程序支持,这在非常旧的作系统上可能不可用。

使用选项 -device 将特定虚拟网络设备添加到虚拟机:

ini 复制代码
-device TYPE,netdev=NAME

这里的 netdev 和上面定义的 -netdev 名字一致,从而让虚拟网络设备和网络后端相关联。

其他可选参数:

qemu-system-x86_64 -device help 可以查看所有可选列表

比如:

-device DEVNAME,netdev=NET-ID,mac=MACADDR,DEV-OPTS

  • DEVNAME 是设备(例如, i82559c 对于 Intel i82559C 以太网设备)
  • NET_ID 是要连接设备的网络标识符(请参阅 -netdev 的描述)
  • MACADDR 是设备的 MAC 地址,
  • DEV-OPTS 您可能希望传递的任何其他设备选项(例如 bus=PCI-BUS,addr=DEVFN ,用于控制 PCI 设备地址),如果设备支持。

其他:

bash 复制代码
-netdev user,id=n1 -device virtio-net-pci,netdev=n1
bash 复制代码
-nic user,model=virtio-net-pci

最简单的方式

bash 复制代码
-nic tap
bash 复制代码
-nic tap,mac=02:ca:fe:f0:0d:01

2. 在 Linux 上设置 Tap

bash 复制代码
# ip link add br0 type bridge
# ip tuntap add dev tap0 mode tap
# ip link set dev tap0 master br0   # set br0 as the target bridge for tap0
# ip link set dev eth0 master br0   # set br0 as the target bridge for eth0
# ip link set dev br0 up

参考:

  1. wiki.qemu.org/Documentati...
相关推荐
高频因子挖掘机2 分钟前
A股量化第一步:如何利用 QuantDash 实现日K数据清洗、前复权校验与缺失值处理
后端·github·api
张彦峰ZYF34 分钟前
借与还之间:连接池设计的技术难点与实现推演
后端·架构·连接池·服务端与协议·无锁借还与尾延迟·失效模式与探活时机·状态污染与泄漏检测
LEE35 分钟前
为什么你的 Claude Code 还在转圈等,别人的已经干完三件事了?
前端·后端·ai编程
喵个咪1 小时前
GoWind CMS 拆解:给 NL2SQL 上四把锁——智能问数的安全边界
后端
喵个咪1 小时前
GoWind CMS 拆解:在 Go 里给 TipTap 搭一套 Yjs 协同后端
后端·go·cms
不像程序员的程序媛1 小时前
springboot支持的web容器
前端·spring boot·后端
喵个咪1 小时前
GoWind Admin 拆解:一个 Sender 接口接 39 个通知渠道
后端·架构·go
用户69371750013841 小时前
当你向领导申请 AI 编程工具预算时,如果领导追问“能提效多少,有量化数据吗”,你该怎么回答?
android·后端·ios
喵个咪1 小时前
GoWind CMS 拆解:社交分发引擎——10 平台适配器、状态闸门与自愈定时任务
后端·go·cms
lichenyang4531 小时前
技术穿刺怎么做?以企业知识库问答为例,验证风险、方案和投入
前端·后端