QEMU支持的网络模式
网络是现代计算机系统不可或缺的一部分,QEMU也对虚拟机提供丰富的网络支持。qemu-kvm中主要给客户机提供了如下4种不同模式的网络。
(1)基于网桥(Bridge)的虚拟网卡
(2)基于NAT(Network Addresss Translation)的虚拟网络
(3)QEMU内置的用户模式网络(user mode networking)
(4)直接分配网络设备(包括VT-d和SR-IOV)
本章主要讲述其中第1、2、3种模式,其中第4种网络设备的直接分配将在本书第5章中详细讲述。在介绍网络的章节,除了特别的需要iptables配置端口映射、数据包转发规则的情况,一般情况下,默认将防火墙所有规则都关闭以避免它妨碍客户机中的网络畅通,在实际生产环境中,请根据实际系统的特点进行配置。
QEMU命令行中,对客户机网络的配置(除了网络设备直接分配之外)都是用“-net”参数来进行配置的,如果没有设置任何的“-net”参数,则默认使用“-net nic -net user”参数从而使用完全基于QEMU内部实现的用户模式下的网络协议栈(将在4.4.4节详细介绍)。
qemu-kvm提供了对一系列主流和兼容性良好的网卡的模拟,通过“-net nic,model=?”参数可以查询到当前的qemu-kvm工具实现了那些网卡的模拟,如下命令行显示了qemu-kvm-1.1.0中能模拟的网卡种类。
[root@jay-linux ~]# qemu-system-x86_64 -net nic,model=?
qemu: Supported NIC models: ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio
其中,“rtl819”这个网卡模式是qemu-kvm默认的模拟网卡类型,RTL8139是Realtek半导体公司的一个10/100M网卡系列,是曾经非常流行(当然现在看来有点古老)且兼容性好的网卡,几乎所有的现代操作系统都对RTL8139网卡驱动的提供支持。其中的“e1000”系列是提供Intel e1000系列的网卡模拟,纯的QEMU(非qemu-kvm)默认就是提供Intel e1000系列的虚拟网卡。而其中的virtio类型是qemu-kvm对半虚拟化IO(virtio)驱动的支持(将会在第5章中详细介绍virtio的基本原理、配置和使用)。
qemu-kvm命令行不加任何网络相关的参数启动客户机后,在客户机中可以看到它有一个默认的RTL8139系列的网卡(如下所示),当然由于没有进行更多的网络配置,这个模拟的网卡尽管在客户机中可见,但其使用的是用户模式的网络,其功能非常有限(将在后面的4.4.4节中详述)。
[root@kvm-guest ~]# lspci | grep Eth
00:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 20)
如下的命令行会模拟一个Intel e1000系列的网卡给客户机使用。
qemu-system-x86_64 rhel6u3.img -net nic,model=e1000
在客户机中看到的e1000系列网卡如下所示,默认是Intel 82540EM系列的网卡。
[root@kvm-guest ~]# lspci | grep Eth
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 03)
qemu-kvm命令行中基本的“-net”参数的细节如下:
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=name][,addr=addr][,vectors=v]
它会让QEMU建立一个新的网卡并将其连接到n号VLAN上。
其中,“-net nic”这个是必须的参数,表明这是一个网卡的配置。
vlan=n 表示将网卡放入到编号为n的VLAN,默认为0。
macaddr=mac 设置网卡的MAC地址,默认会根据宿主机中网卡的地址来分配;若局域网中客户机太多,建议自己设置MAC地址以防止MAC地址冲突。
model=type 设置模拟的网卡的类型,qemu-kvm中默认为rtl8139。
name=name 为网卡设置一个易读的名称,该名称仅在QEMU monitor中可能用到。
addr=addr 设置网卡在客户机中的PCI设备地址为addr。
vectors=v 设置该网卡设备的MSI-X向量的数量为n,该选项仅对使用virtio驱动的网卡有效,设置为“vectors=0”是关闭virtio网卡的MSI-X中断方式。
如需给一个客户机提供多个网卡,可以多次使用“-net”参数即可。
在宿主机中用如下的命令行启动一个客户机,并使用上面的一些网络参数。
[root@jay-linux kvm-demo]# qemu-system-x86_64 -m 1024 rhel6u3.img -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 –net user
在客户机中用一些工具查看网卡相关的信息如下(这里使用了用户模式的网络栈,其详细介绍请参考4.4.4节),可知上面的网络设置都已生效。
[root@kvm-guest ~]# lspci | grep Eth
00:08.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 03)
[root@kvm-guest ~]# ethtool -i eth1
driver: e1000
version: 7.3.21-k8-NAPI
firmware-version:
bus-info: 0000:00:08.0
[root@kvm-guest ~]# ifconfig
eth1 Link encap:Ethernet HWaddr 52:54:00:12:34:22
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::5054:ff:fe12:3422/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1890 (1.8 KiB) TX bytes:6380 (6.2 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:720 (720.0 b) TX bytes:720 (720.0 b)
在QEMU monitor中查看网络的信息如下:
(qemu) info network
VLAN 0 devices:
user.0: type=user,net=10.0.2.0,restrict=off
e1000.0: type=nic,model=e1000,macaddr=52:54:00:12:34:22
Devices not on any VLAN:
本节介绍的网络设置的基本参数,但是由于没有去详细配置其具体的网络工作模式,所以这里得到虚拟得到的网卡在客户机中可能并不能连接上外部网络,接下来的3个小节将详细第介绍各个网络工作模式的原理和配置方法。
Related posts:
QEMU支持的网络模式的更多相关文章
- QEMU网络模式(一)——bridge
网络配置 QEMU支持的网络模式 qemu-kvm主要向客户机提供了4种不同模式的网络. 1)基于网桥(bridge)的虚拟网卡; 2)基于NAT的虚拟网络 3)QEMU内置的用户模式网络(user ...
- OpenStack云平台的网络模式及其工作机制
网络,是OpenStack的部署中最容易出问题的,也是其结构中难以理清的部分.经常收到关于OneStack部署网络方面问题和OpenStack网络结构问题的邮件.下面根据自己的理解,谈一谈OpenSt ...
- OpenStack云平台网络模式及其工作机制
转自:http://openstack.csdn.net/content.html?arcid=2808381 OpenStack云平台网络模式及其工作机制 网络,是OpenStack的部署中最容易出 ...
- VMware/KVM/OpenStack虚拟化之网络模式总结
一.VMware虚拟机网络模式 Vmware虚拟机有三种网络模式:Bridged (桥接模式).NAT (网络地址转换模式).Host-Only (仅主机模式).下面分别总结下这三种网络模式: 1. ...
- 实战VMware的三种网络模式
来源于:http://www.aneasystone.com/archives/2015/04/three-network-modes-of-vmware-in-action.html 一.实验目的 ...
- 高级网络功能(Docker支持的网络定制配置)
网络的高级知识,包括网络的启动和配置参数.DNS的使用配置.容器访问和端口映射的相关实现. 在一些具体场景中,Docker支持的网络定制配置,通过Linux命令来调整.补充.甚至替换Docker默认的 ...
- 1021 docker搭建mysql、网络模式、grid
1.搭建并连接mysql服务 1.1.mysql官方命令 https://hub.docker.com/_/mysql/ #下载mysql镜像: docker pull mysql #启动mysql: ...
- docker网络模式----入门docker的难点
众所周知,现在docker是轻量级虚拟化的典型代表!这段时间想要建立一个分布式系统,但是手头上主机没那么多,所以使用docker进行虚拟化,但是在使用的过程中对网络这一部分是一直不太理解,特别找了一篇 ...
- QEMU支持的几种常见的镜像文件格式
qemu-img支持非常多种的文件格式,可以通过"qemu-img -h"查看其命令帮助得到,它支持二十多种格式:blkdebug.blkverify.bochs.cloop.c ...
随机推荐
- visual studio 应用场景
- IAR常用快捷键和使用小技巧
1.复制和粘贴几行的部分代码 需求:有时候我们需要复制几行代码的后半部分,不需要复制前半部分.方法:按住Alt键,再用鼠标拖动就可以复制和粘贴后半部分 2.复制一行 复制一行的时候,我们一般是从最后开 ...
- linux网络编程之socket编程(三)
今天继续对socket编程进行学习,在学习之前,需要回顾一下上一篇中编写的回射客户/服务器程序(http://www.cnblogs.com/webor2006/p/3923254.html),因为今 ...
- 微信小程序之随笔
先写到这里https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/AuthSetting.html
- rocketmq那些事儿之集群环境搭建
上一篇入门基础部分对rocketmq进行了一个基础知识的讲解说明,在正式使用前我们需要进行环境的搭建,今天就来说一说rockeketmq分布式集群环境的搭建 前言 之前已经介绍了rocketmq的入门 ...
- 在springboot项目中使用swaggerui
在pom.xml文件中配置(用的2.6.1版本,2.9.2有点丑) <properties> <!--<spring.swagger2.version>2.9.2< ...
- SVM: 实际中使用SVM的一些问题
使用SVM包来求θ,选择C与核函数 我们使用已经编写好的软件包(这些软件包效率高,用得多,是经无数人证明已经很好的可以使用的软件包)来求θ,而不是自己去编写软件来求它们(就像我们现在很少编写软件来求x ...
- php 数组的计算
数组是我们最常用到的类型,那如何计算某个一维数组的个数呢.其实我们可以用到我们之前学过的数学函数里面的一个:count(). 我们来看看count函数的用法: int count ( mixed $变 ...
- Linux 颜色设置
echo显示带颜色,需要使用参数-e格式如下:echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"例如: echo -e "\033[41;37m T ...
- java实现大文件上传分片上传断点续传
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...