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

相关文章

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

C/C++通过IP获取局域网网卡MAC地址

《C/C++通过IP获取局域网网卡MAC地址》这篇文章主要为大家详细介绍了C++如何通过Win32API函数SendARP从IP地址获取局域网内网卡的MAC地址,感兴趣的小伙伴可以跟随小编一起学习一下... C/C++通过IP获取局域网网卡MAC地址通过win32 SendARP获取MAC地址代码#i

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨