xiamn 发表于 2013-6-8 09:27:49

Linux下为KVM 配置桥接设备

在安装一个拥有虚拟化功能的Linux操作系统(此处以CentOS为例),一般我们有两种方法:
1.在光盘安装的时候安装好虚拟化包或者PXE服务器上配置好虚拟化包2.手动在没有安装虚拟化组件的系统中安装虚拟化组件
   如果我们搭建的环境是必须使用虚拟化的,或者说虚拟化是我们搭建这套环境的主要目的之一,那么我们在进行系统安装的时候将所有的虚拟化组件全部安装上,避免后期出现安装不全或者某些服务依赖关系没有解决好,这样排错的时间远远高于安装时候多装几个包的时间。   在我们安装好虚拟化组件(RHEL6.0之后,系统自带的均是KVM,已经没有XEN虚拟化的支持了),会自动生成一个virbr0这样的桥接设备



# brctlshow
bridge name    bridge id      STP enabled    interfaces
virbr0       8000.5254007543ce    yes         virbr0-nicvirbr0默认使用的是NAT方式跟虚拟机网卡进行通讯,在实际生产环境中我们多数情况下面使用桥接Bridge的方式进行物理机跟虚拟机的通讯,删除这个virbr0的方法在上面给出的链接中已经说明,这篇文章主要讲述Bridge的简单实现原理以及实际配置方法。   
    假设我们的物理机上有一块有线网卡,在系统中显示为eth0,我们搭建将其配置成桥接设备br0

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

      8000.0025903afe42   no       eth0






我们创建两个虚拟机之后,所有的虚拟机网卡均连接br0,此时查看br0上面连接的设备
# brctlshow
bridge name      bridge id    STP enabled   interfaces
br0         8000.0025903afe42   no       eth0
                                             vnet0
   


                                          vnet1







为了让大家了解的更加透彻,可以通过下图并结合实际操作进行简单分析

1. 查看物理机网卡设备信息 图1所示


# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.176/24 brd 192.168.3.255 scope global eth0
    inet6 fe80::5054:ff:fea7:b756/64 scope link
       valid_lft forever preferred_lft forever2.配置桥接设备br0



# rpm -q bridge-utils    //查看桥接软件是否安装
bridge-utils-1.2-9.el6.x86_64
# brctlshow
bridge name    bridge id    STP enabled    interfaces
#此时无任何桥接设备,我们可以手动添加也可以在 文件中进行添加生效。(1) 手动添加


# brctladdbr br0
# brctlshow
bridge name    bridge id   STP enabled    interfaces
br0            8000.000000000000      no
# brctladdif br0 eth0
# brctlshow
bridge namebridge id      STP enabledinterfaces
br0         8000.000000000000      no      eth0删除eth0上面的ip地址,将br0上面添加上固定ip地址


# ip addr del dev eth0 192.168.3.176/24      //删除eth0上的IP地址
# ifconfigbr0 192.168.3.176/24 up               //配置br0的IP地址并启动设备
# route add default gw 192.168.3.1            //重新加入默认网关查看配置是否生效


# route       //查看默认网关
Kernel IP routing table
Destination   Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.3.0   *               255.255.255.0   U   0      0      0 br0
default         192.168.3.1   0.0.0.0         UG    0      0      0 br0
# ip addr show    //查看eth0跟br0的IP信息
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::5054:ff:fea7:b756/64 scope link
       valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.176/24 brd 192.168.3.255 scope global br0
    inet6 fe80::5054:ff:fea7:b756/64 scope link
       valid_lft forever preferred_lft forever
# ping 192.168.3.1 -w2         //测试同一网段连接是否成功,判断网卡IP是否绑定正确
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
64 bytes from 192.168.3.1: icmp_seq=1 ttl=255 time=3.45 ms
64 bytes from 192.168.3.1: icmp_seq=2 ttl=255 time=4.20 ms
--- 192.168.3.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 3.457/3.832/4.208/0.380 ms
# ping 192.168.1.1 -w2//测试不同网段连接是否成功,判断网关是否添加成功
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=2.38 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=7.64 ms
--- 192.168.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 2.381/5.011/7.642/2.631 ms上面是通过命令进行的手动配置方法,但是大家都清楚,这些命令配置的结果在服务器重启之后就不能生效了,要想使得所有配置永久生效,我们还是需要通过配置文件进行配置,然后重启网卡设备,让系统帮我们配置,然后重启之后也是生效的。通过上面的手动配置方法,大家可以清楚得看到一个桥接设备的配置流程,这个在你写到配置文件里面,然后让系统帮你配置的时候是看不到的 :) ,那么下面我们将所有的配置还原,通过配置文件进行相关自动化配置吧。还原原始配置# route delete default            //删除默认网关# route -nKernel IP routing tableDestination   Gateway         Genmask         Flags Metric Ref    Use Iface192.168.3.0   0.0.0.0         255.255.255.0   U   0      0      0 br0
# brctl showbridge name      bridge id                STP enabled      interfacesbr0                8000.525400a7b756      no                            eth0# brctldelif   br0    eth0    //断开/删除br0上的eth0设备#ifconfig br0 down         //让br0设备停止活动#brctl delbrbr0         //删除br0root@master ~]# brctl show                     //查看br0是否依然存在bridge name      bridge id                STP enabled      interfaces# ifconfigeth0 192.168.3.176/24   //重新给eth0分配IP地址root@master ~]# route add default gw 192.168.3.1//重新加入默认网关


# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.176/24 brd 192.168.3.255 scope global eth0
    inet6 fe80::5054:ff:fea7:b756/64 scope link
       valid_lft forever preferred_lft forever(2) 通过配置文件配置桥接设备配置文件请自行备份



# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0
# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.3.176
NETMASK=255.255.255.0
GATEWAY=192.168.3.1参数详解:ifcfg-eth0       Device            指定网卡设备名
       TYPE                指定网卡的类型为以太网卡
       ONBOOT         指定网卡是否开机启动,切记要设置为yes
       BRIDGE            指定桥接设备,此处指定为br0设备建议:以上变量(非变量值)均为大写。ifcfg-br0       Device            指定网卡设备名       TYPE                指定网卡的类型为桥接       ONBOOT         指定网卡是否开机启动,切记要设置为yes
       BOOTPROTO 指定网卡启动如何获取IP地址,设置静态       IPADDR         设置br0绑定的IP地址       NETMASK       设置子网掩码地址
       GATEWAY       设置网关建议: TYPE变量的变量值按照第一个字母大写,其余字母小写的原则,如Ethernet,Bridge

配置完成之后,重启网络服务如担心干扰,建议停止NetworkManager 服务,这个服务挺讨厌


# service    NetworkManager stop
#chkconfig NetworkManager off
# service network restart
# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether 52:54:00:a7:b7:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.176/24 brd 192.168.3.255 scope global br0
    inet6 fe80::5054:ff:fea7:b756/64 scope link
       valid_lft forever preferred_lft forever查看桥接设备信息


# brctlshow
bridge name   bridge id    STP enabled   interfaces
br0      8000.525400a7b756    no      eth0
# route
Kernel IP routing table
Destination   Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.3.0   *               255.255.255.0   U   0      0      0 br0
link-local      *               255.255.0.0   U   1004   0      0 br0
default         192.168.3.1   0.0.0.0         UG    0      0      0 br0由此,桥接设备br0已经配置成功,当创建虚拟机的时候选择虚拟网卡接口的时候选择br0即可
开始安装虚拟机,此时查看桥接设备br0上面的网卡连接情况:




# brctlshow
bridge name      bridge id    STP enabled   interfaces
br0         8000.0025903afe42   no       eth0
                                             vnet0祝大家顺利!

kient88 发表于 2013-6-8 10:08:09

支持一下:lol

314598340 发表于 2013-6-8 10:14:52

过来看看的

收入啤酒88 发表于 2013-6-8 10:40:41

鸳鸳相抱何时了,鸯在一边看热闹。

chriszg 发表于 2013-6-8 13:09:48

路过,学习下

yanfangsheng123 发表于 2013-6-8 13:26:26

有道理。。。

jackyrar 发表于 2013-6-8 13:30:16

男人有冲动可能是爱你,也可能是不爱,但没有冲动肯定是不爱!
页: [1]
查看完整版本: Linux下为KVM 配置桥接设备