Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十六)

今天我们继续实验Bridge方式的网络配置。

Bridge的逻辑原理图如下:

Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十六)

上图中的“br0”就充当了一个桥的作用,主机上的物理网口eth0等根据需要加入到这个桥里面,所有虚拟机要跟外界通信都通过这个br0 br0再经过真实的物理接口eth0等与外界通信。与NAT不同,桥接方式虚拟机跟主机一样能获得主机所在网络的IP地址,不再由主机进行伪装。那么br0是如何在Ubuntu主机上创建出来的呢?虚拟机如何使用br0

1.br0的创建

Ubuntubr0的创建如下:

打开/etc/network/interfaces,做如下修改:

Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十六)

保存后,重启网络服务或重启机器。(上述配置的每个选项的具体含义不再详述,请查阅相关文档)

然后再检查主机网路:

Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十六)

可以看到,有一个网络接口br0被创建出来,它的IP地址是192.168.1.103,而原先的eth0没有IP地址了。

2.虚拟机如何配置br0

虚拟机的定义XML中的interface定义如下:

<interface type='bridge'>

<mac address='52:54:00:7b:a8:d8'/>

<source bridge=’br0’/>

<target dev='vnet0'/>

<model type='virtio'/>

</interface>

上面的source bridge就指向了“br0”.

启动虚拟机后,运行“ifconfig, 可以看到有个叫vnet0的网络接口被创建出来,这就是该虚拟机的虚拟网络接口。

Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十六)

再运行“brctlshow”看看:

Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十六)

很清楚,这个虚拟机的vnet0网络接口是加入到br0这个网桥了(原先NAT模式是在virbr0里),所以这个虚拟机的网络数据都改成由这个br0转发。

最后来看一下,虚拟机里面的IP情况:

Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十六)

可以看到这个虚拟机的IP地址是192.168.1.105,网关、DHCP服务器地址和DNS服务器地址都是192.168.1.1192.168.1.1又是什么呢?它是我环境下的一台路由器(兼DNSDHCP服务器和网关)。这跟上一篇NAT模式下它获得的是主机上的虚拟网桥的IP地址等已经完全不同了。