使用桥接设备连接KVM虚拟网络

日期: 2014-04-16 作者:Sander van Vugt翻译:王学强 来源:TechTarget中国 英文

在创建虚拟机时,使用默认配置添加网卡将是一件相当容易的事情。但是如果需要针对特定环境来调整KVM的网络配置,就有一点困难了。在这篇文章中,你可以了解KVM的网络架构以及如何手动搭建虚拟网桥。 为了将虚拟机(VM)连接到主机层的物理网络,你需要通过某种方式来共享物理机上的物理网卡访问权限。

默认的方式是使用名称为br0的桥接设备。运行在同一台物理上的每个实例都可以使用这种桥接设备来访问网络,就和hypervisor主机操作系统一样。 物理网桥或者交换机的不同端口,也就是vnet端口,都位于桥接设备上。每个vnet接口都连接到网桥上,而网桥连接在KVM主机或者虚拟操作系统的真实网卡上。

图1是一张概述……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

在创建虚拟机时,使用默认配置添加网卡将是一件相当容易的事情。但是如果需要针对特定环境来调整KVM的网络配置,就有一点困难了。在这篇文章中,你可以了解KVM的网络架构以及如何手动搭建虚拟网桥。

为了将虚拟机(VM)连接到主机层的物理网络,你需要通过某种方式来共享物理机上的物理网卡访问权限。默认的方式是使用名称为br0的桥接设备。运行在同一台物理上的每个实例都可以使用这种桥接设备来访问网络,就和hypervisor主机操作系统一样。

物理网桥或者交换机的不同端口,也就是vnet端口,都位于桥接设备上。每个vnet接口都连接到网桥上,而网桥连接在KVM主机或者虚拟操作系统的真实网卡上。图1是一张概述图,你可以看到主机上的物理网卡eth0连接到了vnet0,vm1中的eth0连接到了vnet1,vm2的eth0连接到了vnet2。Vnet接口的编号没有实际意义,和虚拟机以及虚拟机使用的设备没有任何关系:只是按照安装顺序进行编号。

 使用桥接设备连接KVM虚拟网络
图1.

KVM网络架构

如果需要进一步了解KVM网络配置,可以使用brctl show命令。这个命令可以列出网桥设备的名称和ID;还可以显示生成树协议(STP)是否被禁用,以及连接到网桥的所有接口。

lin:~ # brctl show

bridge name        bridge id              STP enabled       interfaces

br0             8000.5c260a1a70aa     no               em1

                                                                 vnet0

                                                                 vnet1

                                                                 vnet2

                                                                 vnet3

                                                                                    vnet4

配置桥接设备

为了在SUSE或Red Hat Linux系统中配置KVM主机的桥接设备,通常你需要创建一个ifcfg-br0文件,其中包含以下配置:

lin:~ # cat /etc/sysconfig/network/ifcfg-br0

BOOTPROTO='dhcp'

BRIDGE='yes'

BRIDGE_FORWARDDELAY='0'

BRIDGE_PORTS='em1'

BRIDGE_STP='off'

BROADCAST=''

ETHTOOL_OPTIONS=''

IPADDR='192.168.122.1/24'

MTU=''

NETMASK=''

NETWORK=''

REMOTE_IPADDR=''

STARTMODE='onboot'

USERCONTROL='no'

在上面的桥接设备定义中,最重要的参数是BRIDGE_PORTS='em1',这表明物理接口已经连接到网桥。不需要对连接到网桥的物理网卡进行太多的配置。

lin:~ # cat /etc/sysconfig/network/ifcfg-em1

BOOTPROTO='static'

BROADCAST=''

ETHTOOL_OPTIONS=''

IPADDR='0.0.0.0/32'

MTU=''

NAME='82577LM Gigabit Network Connection'

NETMASK=''

NETWORK=''

REMOTE_IPADDR=''

STARTMODE='auto'

USERCONTROL='no'

将虚拟机连接到网桥

在完成主机部分的配置之后,可以使用virsh命令来配置虚拟机网络。在KVM主机中,使用virsh list --all 命令查看主机中所有可用虚拟机的情况。

lin:~ # virsh list --all

setlocale: No such file or directory

 Id Name                 State

----------------------------------

  1 SAN                  running

  4 node2                running

  6 windowsvista         running

  7 node1                running

之后,在编辑器中使用virsh edit hostname命令打开一个针对特定主机的XML配置文件。从上到下查看每个设备,直至找到第一个网络接口:

    <interface type='bridge'>

      <mac address='52:54:00:11:f4:2f'/>

      <source bridge='br0'/>

      <model type='virtio'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>

 </interface>

如果想要添加额外的网卡,只需要增加一个网卡配置。需要定义接口类型(应该是网桥类型)、源网桥和型号。

    <interface type='bridge'>

      <source bridge='br0'/>

      <model type='virtio'/>

    </interface>

在第一次主机启动时libvirt将会添加一些初始化配置,所有没有必要为硬件定义MAC地址。完成这些操作之后,就可以重启虚拟机了,在重启的过程中可以看到新的接口已经被自动添加了。

KVM环境中的网络管理涉及了多种不同部分。首先,需要在主机上创建一个桥接设备,之后需要将虚拟机接口连接到桥接设备上。完成这些步骤之后,你就可以像使用物理网络一样、使用虚拟机网络了。

翻译

王学强
王学强

TechTarget特邀编辑,毕业于计算机专业,现任职于外企IT分析师,负责网络、防火墙和服务器等系统运维工作,对虚拟化、网络安全和渗透测试拥有浓厚兴趣,工作外热爱旅行、汽车和健身。

相关推荐