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 ...
随机推荐
- Linux下 启动tomcat 时候同时日志命令
./startup.sh && tail -f ../logs/catalina.out
- 利用Python openpyxl操作Excel
from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = ...
- 汽车电子测试项目管理系统-TPA
概述 INTEWORK-TPA(Test Project Administrator, 以下简称TPA) 是一款集成的测试项目管理工具,它可以管理测试过程中的所有数据,包括需求.用例.样件.计划.报告 ...
- 微信小程序API~地理位置location
(1)使用微信内置地图查看位置 wx.openLocation(Object object) 使用微信内置地图查看位置 参数 Object object 属性 类型 默认值 必填 说明 latitud ...
- test20190830 NOIP 模拟赛
100+70+0=170.这套题早就被上传到BZOJ上了,可惜我一到都没做过. BZOJ4765 普通计算姬 小G的计算姬可以解决这么个问题:给定一棵n个节点的带权树,节点编号为1到n,以root为根 ...
- spring框架面試題目
25个经典的Spring面试问答 这是在网上下载的面试题,忘记了出处,如带来不便联系本人立马删除,在这里提供给将要面试的朋友,与大家分享,希望能给您带来帮助! 问题清单: 1. 什么是Spring框架 ...
- 模拟赛20181101 雅礼 Wearry 施工 蔬菜 联盟
% Day2 Solution % Wearry % Stay determined! 施工 记 fif_{i}fi 表示考虑前 iii 个建筑, 并且第 iii 个建筑的高度不变的答案, 每 ...
- [React] Create an Animate Content Placeholder for Loading State in React
We will create animated Content Placeholder as React component just like Facebook has when you load ...
- DEV C++的使用
1.点击dev图标: 2.左上角点击:文件——新建——源代码(快捷键ctrl+N): 3. 然后开始写代码: 4.点击运行: 右边的那个编译加运行(点这个),左边编译,中间运行. 5.保存(可以修改保 ...
- C变量作用域的分类和优先级
变量从高到低的优先级以下面展示: 1.文件作用域:变量在全局从文件开头到结尾一直有效即全局变量 2.函数作用域也称局部变量 3.代码块作用域:用{}花括号内的定义的变量:都是在代码块{}中有效 如:i ...