QEMU网卡配置

2024-06-17 12:18
文章标签 配置 网卡 qemu

本文主要是介绍QEMU网卡配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、QEMU网卡模式介绍

 

User mode network(Slirp) :User网络

使用用户模式的客户机可以连通宿主机及外部网络。用户模式网络完全由QEMU模拟实现整个TCP/IP协议栈,并且使用这个协议栈提供一个虚拟的NAT网络。它不依赖于宿主机上的网络工具组件,如bridge-utils、tunctl、dnsmasq、iptables等,因此也不需要root用户权限。这种方式实现虚拟机上网很简单,类似vmware里的nat,qemu启动时加入-user-net参数,虚拟机里使用dhcp方式,即可与互联网通信,当然,用户模式网络的缺陷也是明显的:因其在QEMU内部实现所有网络协议栈,相对性能较差。

Tap/tun network : Tap网络

Tap支持各种虚拟网络拓扑,具有很好的性能。但是对于不同的操作系统可能需要不同的拓扑配置,同时需要root权限,一般形式如下

-netdev tap,id=mynet0

tap参数,表明使用TAP设备。TAP是虚拟网络设备,它仿真了一个数据链路层设备(ISO七层网络结构的第二层),它像以太网的数据帧一样处理第二层数据报。而TUN与TAP类似,也是一种虚拟网络设备,它是对网络层设备的仿真。TAP被用于创建一个网络桥,而TUN与路由相关。桥接就是把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。局域网内可以通过ssh登陆虚拟机

这种方式要比user mode复杂一些,但是设置好后 虚拟机<-->互联网虚拟机<-->主机 通信都很容易,这种方式设置上类似vmware的host-only,qemu使用tun/tap设备在主机上增加一块虚拟网络设备(tun0),然后就可以象真实网卡一样配置它。

二.网卡配置方式

 

1.老版net参数网络配置

 

-net nic[,vlan=n][,macaddr=addr] 

 

创建一个新的网卡并将网卡放人到编号为n的VLAN中(在默认的情况下n=0)。作为可选项的项目,MAC地址可以进行改变。如果没有指定-net选项,则会创建一个单一的NIC。model是网卡的类型,可以model=?查看有哪些类型。vlan=n,表示,默认为0。

 

-net user[,vlan=n] 

 

用户模式,Qemu使用Slirp实现了一整套tcp/ip协议栈,这样就不需要管理员权限来运行。如果没有指定-net选项,这将是默认的情况。

 

-net tap[,vlan=n][,fd=h][,ifname=name][,script=file] 

 

桥接模式,需要指定启动script和关闭downscript,将TAP网络接口name与VLAN n进行连接,并使用网络配置脚本file进行配置默认的网络配置脚本为/etc/qemu-ifup。如果没有指定name,OS 将会自动指定一个.fd=h可以用来指定一个已经打开的TAP主机接口的句柄(tap设备),name是在monitor模式使用info network看到的名字,ifname是tap设备在主机中的名字。例如: 

 

qemu linux.img -netnic,vlan=0 -net tap,vlan=0,ifname=tap0  -netnic,vlan=1 -net tap,vlan=1,ifname=tap1 -netsocket[,vlan=n][,fd=h][,listen=[host]:port][,connect=host:port]
-netsocket[,vlan=n][,fd=h][,listen=[host]:port][,connect=host:port] 

 

使用TCP socket将VLAN n与远程的另一个Qemu虚拟机的VLAN进行连接。如果指定了listen,Qemu将在port端口监听连入请求(host是可选的), connect可以用来使用listen选项与另一个Qemu实例进行连接.fd=h指定了一个已经打开的TCP socket.例如:

 

 

-net socket[,vlan=n][,fd=h][,mcast=maddr:port] 

 

创建一个VLAN n,并使用UDP多址通信套接口与其他的QEMU虚拟机进行共享,尤其是对于每一个使用多址通信地址和端口的QEMU使用同一个总线。在这里我们要注意以下几点:

几个QEMU可以运行在不同的主机上但却使用同一个总线(在这里假设为这些主机设置了正确的多址通信)

mcast支持是与用户模式Linux相兼容的.

使用fd=h指定一个已经打开的UDP 多址通信套接口. 

 

 

-net none 

 

如果您没有指定任何网络配置选项,那么QEMU将为客户机创建一个SLiRP用户网络后端和适当的虚拟网络设备(例如,大多数x86 PC客户端使用E1000 PCI网卡)。但是使用了这条命令表明没有网络设备需要进行配置(这条命令是抑制网络设置的)

 

-tftp prefix 

 

当使用用户模式网络堆栈,激活一个内置的TFTP服务器。所有的以 prefix开始的文件将会使用一个TFTP客户端从主机下载到本地。在本地的TFTP客户端必须以二进制模式进行配置(使用Unix的TFTP客户端的bin命令),在客户机上的主机IP地址如通常的10.0.2.2.

 

-redir[tcp|udp]:host-port:[guest-host]:guest-port 

 

当使用用户模式网格栈,将连接到主机端口host-port的TCP或是UDP连接重定向到客户机端口guest-port上。如果没有指定客户机端口,它的值为10.0.2.15(由内建的DHCP服务器指定默认地址)。

2.新版本使用-netdev与-device来配置网络与网络设备

 

老版本中qemu使用的是-net来配置网络,-net nic来配置网卡设备,但是从0.12版本提出了使用netdev参数来配置网络,当然老版本的语法仍然可以使用。比如你可以使用-net nic,model=?来得到一个有效的网卡设备列表。

夏目简单对比一下二者之间的语法区别,假设配置网络mac地址:

新版本的方法:

 

-netdev tap,id=net0-device e1000,netdev=net0,mac=52:54:00:12:34:56

 

旧的方法:

 

-net tap,vlan=0 -net nic,vlan=0,model=e1000,macaddr=52:54:00:12:34:56

 

 

经过比较发现,mac地址的书写发生了改变,同时不再出现同一个vlan中的虚拟机接收该局域网中所有流量的困惑情况,因为所有设备都是通过-netdevid=id和-device netdev= parameters来指定1对1的

这篇关于QEMU网卡配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069418

相关文章

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用