如何在KVM环境中增加额外的虚拟桥接

日期: 2016-04-10 作者:Sander van Vugt翻译:张冀川 来源:TechTarget中国 英文

软件桥接是任何基于内核的虚拟机环境的必备要素,其工作原理与以太网交换机连接类似,实现虚拟机与外部网络接口的连接。本文将详细介绍有关软件桥接的技术细节。 安装基于内核的虚拟机以及部分虚拟机后,所有的虚拟机与虚拟网桥连接,虚拟网桥与物理网卡连接。虚拟网络的IP地址在内部使用意味着KVM主机之外的任何计算机都不能访问虚拟网络,虚拟机默认使用网络地址转换(NAT)连接互联网。

尽管只需要进行简单的设置,但某些配置需要更高级的设置。为便于快速入门,本文展示如何在同一个物理接口中增加第二个虚拟桥接,能够在隔离的软件定义网络中运行虚拟机。总体配置如图1所示。 图1:虚拟网络设置 定义虚拟桥接 为创建一个具有不……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

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

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

软件桥接是任何基于内核的虚拟机环境的必备要素,其工作原理与以太网交换机连接类似,实现虚拟机与外部网络接口的连接。本文将详细介绍有关软件桥接的技术细节。

安装基于内核的虚拟机以及部分虚拟机后,所有的虚拟机与虚拟网桥连接,虚拟网桥与物理网卡连接。虚拟网络的IP地址在内部使用意味着KVM主机之外的任何计算机都不能访问虚拟网络,虚拟机默认使用网络地址转换(NAT)连接互联网。尽管只需要进行简单的设置,但某些配置需要更高级的设置。为便于快速入门,本文展示如何在同一个物理接口中增加第二个虚拟桥接,能够在隔离的软件定义网络中运行虚拟机。总体配置如图1所示。

虚拟网络设置

图1:虚拟网络设置

定义虚拟桥接

为创建一个具有不同虚拟桥接的设置,首先需要定义第二个虚拟网桥。网桥是通过XML文件定义的,而XML文件由libvirtd守护进程解析。默认的虚拟网桥在“/etc/libvirt/qemu/networks/default.xml”文件中定义。增加第二个网桥最简单的方式是将该文件拷贝为一个新的XML文件。如下是虚拟网桥定义文件的内容。拷贝文件后,你应该使用virsh net-edit命令编辑该文件,在该命令后以新文件名作为参数。

<network>

 <name>vmnet4</name>

 <uuid>f4f6fde8-03f6-4303-ae41-b4e03bd804d9</uuid>

 <forward mode='nat' dev="eno1"/>

 <bridge name='virbr1' stp='on' delay='5'/>

 <mac address='52:54:00:c4:44:c2'/>

 <ip address='192.168.4.2' netmask='255.255.255.0'>

   <dhcp>

     <range start='192.168.4.2' end='192.168.4.254'/>

   </dhcp>

 </ip>

</network>

在定义虚拟网桥时你会发现有不同的元素,从唯一的名字一直到通用唯一标识符。如果已经通过复制旧文件创建了虚拟网桥,那么也不要忘了修改UUID。

在接下来的一行中定义转发模式。尽管NAT是默认且最常见的模式,但也可以使用路由作为转发模式。在本文中我们只关注NAT配置。本行中一个重要的选项是isdev="eno1",确定将网络接口卡enol作为虚拟网桥必须连接的网络接口。其他配置不言而喻,显示IP地址配置。

创建完虚拟网桥后,一定要使用systemctl restart libvirtd命令重启libvirtd进程。

虚拟机连接到网桥

为了将虚拟机连接到一个新定义的虚拟网桥,需要编辑其XML配置文件。应优先使用virsh edit vmname命令,vmname指的是虚拟机的名字,可以通过virsh list命令获取虚拟机的名字。在虚拟机配置中,查找"<interface>"部分,配置与如下内容类似:

   <interface type='network'>

     <mac address='52:54:00:46:eb:6f'/>

     <source network='vmnet4'/>

     <model type='virtio'/>

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

   </interface>

配置文件中最重要的部分是"<source network>"定义,需要指定你想连接的虚拟网桥的名字。该名字必须与在虚拟网桥定义中已使用的名字对应。你可以使用virsh net list命令确认虚拟网桥的名字是可用的。

确认操作

使用新虚拟网桥配置引导虚拟机后,虚拟机将自动连接到新虚拟网桥。你可以使用brctl show命令进行确认,输出的结果与如下内容类似:

[root@lab networks]# brctl show

bridge name bridge id      STP enabled interfaces

virbr0     8000.525400c56bc2  yes    virbr0-nic

                                    vnet0

                                    vnet10

                                    vnet11

                                    vnet12

                                    vnet13

                                    vnet14

                                    vnet4

                                    vnet5

                                    vnet6

                                    vnet7

                                    vnet8

                                    vnet9

virbr1     8000.525400c444c2  yes    virbr1-nic

                                    vnet1

                                    vnet2

                                     vnet3

brctl show命令结果输出中最为重要的部分是接口列。在本列中,你会看到已经增加了一个VNET接口,作为所有虚拟机连接虚拟网桥的一个网桥接口。同样地,虚拟机内有一个类似eth0的网卡,使用vnet0接口连接virbr0网桥。

翻译

张冀川
张冀川

TechTarget中国特约专家,任职于某国企信息中心,负责数据中心硬件基础设施及信息系统运维管理工作,对虚拟化及云计算技术有浓厚兴趣,并在工作中积极应用

相关推荐