kvm使用桥接的方法

桥接就是把物理机的网卡模拟成交换机,虚拟机的网卡直接连在虚拟的网桥即交换机上。这样kvm虚拟机分配的IP地址,就应该和物理机在同一网段,可以对外进行服务。

在KVM下运行的VM默认的网卡采用NAT的方式进行连接,无法与外界进行通讯,但是可以与同台KVM下的其他VM进行通讯,为了使VM与其他网络主机进行通讯,需要将网卡模式由NAT改为桥接的方式

查看桥接情况

# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.5254003aa789       yes             virbr0-nic

virbr0默认使用的是NAT方式跟虚拟机网卡进行通讯,在实际生产环境中我们多数情况下面使用桥接Bridge的方式进行物理机跟虚拟机的通讯,删除这个virbr0的方法在上面给出的链接中已经说明,这篇文章主要讲述Bridge的简单实现原理以及实际配置方法。

假设我们的物理机上有一块有线网卡,在系统中显示为eth0,我们搭建将其配置成桥接设备br0

我们经常所说的Bridge设备其实就是网桥设备,也就相当于想在的二层交换机,用于连接同一网段内的所有机器,所以我们的目的就是将网络设备eth0配置成br0,此时br0就成为了所谓的交换机设备,我们物理机的eth0也是连接在上面的。

配置桥接设备br0

# 查看桥接软件是否安装
# rpm -q bridge-utils 
bridge-utils-1.5-9.el7.x86_64

禁用并卸载NetworkManager工具(必要),启用自带的network服务

chkconfig NetworkManager off
chkconfig network on
service NetworkManager stop
yum -y erase NetworkManager

使用配置文件的形式添加

先将 /etc/sysconfig/network-scripts/ifcfg-eth0 目录下的网卡配置文件备份一份

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bak

新创建/etc/sysconfig/network-scripts/ifcfg-br0

BOOTPROTO=static
DEVICE=br0
TYPE=Bridge
NM_CONTROLLED=no
IPADDR=10.16.16.2
NETMASK=255.255.255.0
GATEWAY=10.16.16.1
DNS1=211.138.24.66
DNS2=211.138.30.66
DELAY=0
STP=on

上面的 IPADDR、NETMASK、GATEWAY 、DNS地址是原先ifcfg-eth0网卡中的

NM_CONTROLLED这个属性值,根据 RedHat公司的文档是必须设置为“no”的(这个值为“yes”表示可以由服务NetworkManager来管理。NetworkManager服务不支持桥接,所以要设置为“no”。),但实际上发现设置为“yes”没有问题。通讯正常。

修改ifcfg-eth0网卡内容,将原先关于IP设置的语句注释,并新增一个配置,其余保持不变

# IPADDR=10.16.16.2
# NETMASK=255.255.255.0
# GATEWAY=10.16.16.1
# DNS1=211.138.24.66
# DNS2=211.138.30.66
BRIDGE=br0  # 这一行是新增的

设置完成后,重启网络

service network restart

查看网卡桥接及路由

[root@localhost ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.34735aa1362c       yes             em1
virbr0          8000.5254003aa789       yes             virbr0-nic

[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    0      0        0 br0
10.16.16.0      0.0.0.0         255.255.255.0   U     0      0        0 br0
link-local      0.0.0.0         255.255.0.0     U     1011   0        0 br0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

这样就把eth0桥接为br0网卡了,VM就可以使用这个桥接配置了。重启不会对桥接造成影响,因为它是读取的ifcfg-xx的配置文件进行桥接