1. 前言
本文主要介绍qemu下与宿主机网络通信的环境搭建步骤。其中宿主机为ubuntu18.04,目标机为qemu 5.0,运行kernel 5.10。本文主要整合了参考文档中几篇文章的内容。
主要步骤包括:
- 配置宿主机
- 配置qemu内核支持网卡
- 配置qemu创建前端和后端
- 配置qemu的IP
2. 配置宿主机
我们采用的是桥接的方式来连接宿主机与qemu的网卡。
首先我们通过如下的方式在宿主机端创建网桥:
#!/bin/sh
#sudo ifconfig eth0 down # 首先关闭宿主机网卡接口
sudo brctl addbr br0 # 添加一座名为 br0 的网桥
sudo brctl addif br0 eth0 # 在 br0 中添加一个接口
sudo brctl stp br0 off # 如果只有一个网桥,则关闭生成树协议
sudo brctl setfd br0 1 # 设置 br0 的转发延迟
sudo brctl sethello br0 1 # 设置 br0 的 hello 时间
sudo ifconfig br0 0.0.0.0 promisc up # 启用 br0 接口
sudo ifconfig eth0 0.0.0.0 promisc up # 启用网卡接口
sudo dhclient br0 # 从 dhcp 服务器获得 br0 的 IP 地址
sudo brctl show br0 # 查看虚拟网桥列表
sudo brctl showstp br0 # 查看 br0 的各接口信息
此时网桥已经得到了 IP,并且宿主机能够连接网络的网卡 eth0 也加入了网桥
运行如下的脚本,创建一个 TAP 设备,作为 QEMU 一端的接口:
#!/bin/sh
sudo tunctl -t tap0 -u root # 创建一个 tap0 接口,只允许 root 用户访问
sudo brctl addif br0 tap0 # 在虚拟网桥中增加一个 tap0 接口
sudo ifconfig tap0 0.0.0.0 promisc up # 启用 tap0 接口
sudo brctl showstp br0
此时宿主机的一端网卡与qemu一端的网卡都连入了网桥。
这里简要说明一下,qemu主要支持4种网络通信方式,其中我们采用的是TAP/bridge的通信方式,TAP 属于 LInux 内核支持的一种虚拟化网络设备,它完全由软件模拟实现,TAP 工作在数据链路层,常用于网络桥接。
经过如上,在宿主机产生的效果如下:
ubuntu@VM-0-9-ubuntu:~$ ifconfig
br0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet 172.17.0.9 netmask 255.255.240.0 broadcast 172.17.15.255
inet6 fe80::5054:ff:fec6:1dac prefixlen 64 scopeid 0x20<link>
ether 52:54:00:c6:1d:ac txqueuelen 1000 (Ethernet)
RX packets 97163 bytes 8327257 (8.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 100929 bytes 17786837 (17.7 MB)
TX errors 0

本文详细介绍了如何在Ubuntu 18.04宿主机上配置QEMU 5.0与Kernel 5.10的网络通信环境,采用桥接和TAP设备实现宿主机与QEMU之间的网络连接。步骤包括配置宿主机网桥,创建TAP设备,配置QEMU内核支持网卡,设置QEMU的IP地址。实验结果显示,QEMU能够成功ping通宿主机,但无法访问外部网络。

5622

被折叠的 条评论
为什么被折叠?



