qemu与宿主机网络通信配置

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

1. 前言

本文主要介绍qemu下与宿主机网络通信的环境搭建步骤。其中宿主机为ubuntu18.04,目标机为qemu 5.0,运行kernel 5.10。本文主要整合了参考文档中几篇文章的内容。
主要步骤包括:

  1. 配置宿主机
  2. 配置qemu内核支持网卡
  3. 配置qemu创建前端和后端
  4. 配置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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值