网络是现代计算机系统不可或缺的一部分,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个小节将详细第介绍各个网络工作模式的原理和配置方法。

QEMU支持的网络模式的更多相关文章

  1. QEMU网络模式(一)——bridge

    网络配置 QEMU支持的网络模式 qemu-kvm主要向客户机提供了4种不同模式的网络. 1)基于网桥(bridge)的虚拟网卡; 2)基于NAT的虚拟网络 3)QEMU内置的用户模式网络(user ...

  2. OpenStack云平台的网络模式及其工作机制

    网络,是OpenStack的部署中最容易出问题的,也是其结构中难以理清的部分.经常收到关于OneStack部署网络方面问题和OpenStack网络结构问题的邮件.下面根据自己的理解,谈一谈OpenSt ...

  3. OpenStack云平台网络模式及其工作机制

    转自:http://openstack.csdn.net/content.html?arcid=2808381 OpenStack云平台网络模式及其工作机制 网络,是OpenStack的部署中最容易出 ...

  4. VMware/KVM/OpenStack虚拟化之网络模式总结

    一.VMware虚拟机网络模式 Vmware虚拟机有三种网络模式:Bridged (桥接模式).NAT (网络地址转换模式).Host-Only (仅主机模式).下面分别总结下这三种网络模式: 1. ...

  5. 实战VMware的三种网络模式

    来源于:http://www.aneasystone.com/archives/2015/04/three-network-modes-of-vmware-in-action.html 一.实验目的 ...

  6. 高级网络功能(Docker支持的网络定制配置)

    网络的高级知识,包括网络的启动和配置参数.DNS的使用配置.容器访问和端口映射的相关实现. 在一些具体场景中,Docker支持的网络定制配置,通过Linux命令来调整.补充.甚至替换Docker默认的 ...

  7. 1021 docker搭建mysql、网络模式、grid

    1.搭建并连接mysql服务 1.1.mysql官方命令 https://hub.docker.com/_/mysql/ #下载mysql镜像: docker pull mysql #启动mysql: ...

  8. docker网络模式----入门docker的难点

    众所周知,现在docker是轻量级虚拟化的典型代表!这段时间想要建立一个分布式系统,但是手头上主机没那么多,所以使用docker进行虚拟化,但是在使用的过程中对网络这一部分是一直不太理解,特别找了一篇 ...

  9. QEMU支持的几种常见的镜像文件格式

    qemu-img支持非常多种的文件格式,可以通过"qemu-img  -h"查看其命令帮助得到,它支持二十多种格式:blkdebug.blkverify.bochs.cloop.c ...

随机推荐

  1. Elasticsearch 7.x - IK分词器插件(ik_smart,ik_max_word)

    一.安装IK分词器 Elasticsearch也需要安装IK分析器以实现对中文更好的分词支持. 去Github下载最新版elasticsearch-ik https://github.com/medc ...

  2. Windows 上搭建Apache FtpServer

    阅读目录 第一步:下载Apache FTPServer 第二步:解压Apache FTPServer 第三步:修改配置文件 第四步:启动FTPServer 第五步:访问FTP 第六步:FTPServe ...

  3. mysql字典取值,列表包含

    SELECT * FROM e where JSON_CONTAINS(json_extract(scope_detail, '$.shop'), '001');

  4. server端和前端的区别

    1.服务稳定性 server端可能会遭受各种恶意攻击和误操作 单个客户端可以意外挂掉,但是服务端不能 node中用pm2做进程守候,一旦挂掉,自己会重启 2.考虑内存和cpu(优化,扩展) 客户端独占 ...

  5. WIN10笔记本屏幕亮度无法调节,一直是最高亮度

    WIN+X,选择"计算机管理"; 系统工具->设备管理器->找到右边的"显示适配器"->右键先禁用,再启动下图设备

  6. Kotlin属性揭秘与延迟初始化特性

    在上一次https://www.cnblogs.com/webor2006/p/11210181.html学习了Kotlin的伴生对象,这次来学习属性相关的东东. 属性揭秘: 先声明一个属性: 没啥可 ...

  7. 《hello-world》第九次团队作业:【Beta】Scrum meeting 2

    项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十三 团队作业9:Beta冲刺与团队项目验收 团队名称 <hello--wor ...

  8. LG5487 【模板】线性递推+BM算法

    [模板]线性递推+BM算法 给出一个数列 \(P\) 从 \(0\) 开始的前 \(n\) 项,求序列 \(P\) 在\(\bmod~998244353\) 下的最短线性递推式,并在 \(\bmod~ ...

  9. python 对象引用计数增加和减少的情况

    对象引用计数增加的情况: 1.对象被创建:x=4 2.另外的别人被创建:y=x 3.被作为参数传递给函数:foo(x)  ->会增加2 4.作为容器对象的一个元素:a=[1,x,'33'] 对象 ...

  10. Sublime 原版安装

    sublime text3 安装方法 ① 官网下载安装 https://www.sublimetext.com/3 ② 更改hosts文件 具体方法如下: windows系统的hosts文件在C:\W ...