一、KVM默认网络配置

1、kvm上网有两种配置:
a. NAT,支持主机与虚拟机的互访,也支持虚拟机访问互联网,但不支持外界访问虚拟机。
b. bridge(桥接),可以使用虚拟机成为网络中具有独立IP的主机,不但能上网,也能让别人访问虚拟机。
2、虚拟机安装完成时,默认的NAT,网卡为“Realtek RTL8139 Family PCI Fast Ethernet NIC,地址是一个私有网段,我分配到的IP是192.168.122.148。

3、在服务器端查看kvm桥接情况,三组对比数据如下:
a.没有虚拟机运行时
[root@CC ~]# brctl show



b.有一台虚拟机运行时
[root@CC ~]# brctl show



c.有两台虚拟要运行时
[root@CC ~]# brctl show

当运行一台虚拟机时,就会自动创建一个虚拟网卡vnet。

4、virbr0的配置文件在/var/lib/libvirt/network目录下,默认配置为:
[root@CC ~]# cat /var/lib/libvirt/network/default.xml


二、配置bridge上网方式

1、创建桥接器(br0)
在/etc/sysconfig/network-scripts目录下,创建一个ifcfg-br0 文件,其类型设为Bridge:
[root@CC ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=bridge
BOOTRPOTO=none
IPADDR=192.168.162.100
NETMASK=255.255.255.0
ONBOOT=yes
2、将物理接口桥接到桥接器
修改ifcfg-eth0(有些是ifcfg-em1),只需要注释掉其IP相关信息,加上“BRIDGE=br0”,将其桥接到br0上。
[root@CC ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
#NM_CONTROLLED=yes        //NetworkManager与桥接器是会冲突的,所以,这里不允许NetworkManager管理该网卡
ONBOOT=yes
#IPADDR=192.168.1.100
#NETMASK=255.255.255.0
BOOTPROTO=none            //若有dhcp服务器,可改为dhcp,这样就不需要在guestOS中手动配置IP
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
BRIDGE=br0
注:如果是双网卡或是多网卡,请参照下文

3、重启物理机网络服务
[root@CC ~]# service network restart


tips:

最好先关闭NetworkManger,很多人失败的原因就是因为这个

# service NetworkManager stop

# chkconfig NetworkManager off


4、查看当前桥接情况(有一个虚拟机正在运行)

可以看出eth0桥接在br0上了,也可以看作eth0接在了br0这个交换机上

[root@CC ~]# brctl show


这里的vnet0就是虚拟机运行时,生成的虚拟网卡,只要vnet0和eth0都桥接到br0,那么vnet0就可以通过eth0上网了。



5、将虚拟机接口桥接到桥接器
[root@CC ~]# brctl delif virbr0 vnet0
[root@CC ~]# brctl addif br0 vnet0
[root@CC ~]# brctl show

这样,vnet0也接在了br0这个交换机上,所以vnet0的数据就能通过eth0发送出去



6、在虚拟机NIC中选择"eth0桥接到br0"

注意:dhcp服务最终是给br0分配IP的,不会给eth0,但是物理机也是可以上网的。



####################

2013年8月14日更新  #

####################

桥接网络配置好以后,最好不要重启物理机的网络,因为这样会导致很奇怪的问题

例如:

eth0 vnet5 vnet10 桥接到br0

在kvm管理器的网络一项中,可以看到“eth0桥接到br0”

但是重启网络之后,就会变成“vnet11桥接到br0”

虽然选了这个桥接也是能正常工作,但是,还是劝告一声,不要随便重启物理网络。

最好的办法,就是先把虚拟机关闭了,然后再重启网络。