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

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

linux配置podman阿里云容器镜像加速器详解

《linux配置podman阿里云容器镜像加速器详解》本文指导如何配置Podman使用阿里云容器镜像加速器:登录阿里云获取专属加速地址,修改Podman配置文件并移除https://前缀,最后拉取镜像... 目录1.下载podman2.获取阿里云个人容器镜像加速器地址3.更改podman配置文件4.使用po

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java