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的配置文件进行桥接