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

相关文章

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle