• Linux中KVM桥接的配置


    Linux中KVM桥接的配置

     

    1. 原理

    1.1 说明

    在安装一个拥有虚拟化功能的Linux操作系统(此处以CentOS为例),一般我们有两种方法:

    1.在光盘安装的时候安装好虚拟化包或者PXE服务器上配置好虚拟化包
    
    2.手动在没有安装虚拟化组件的系统中安装虚拟化组件

    1.2 目的 

    如果我们搭建的环境是必须使用虚拟化的,或者说虚拟化是我们搭建这套环境的主要目的之一,那么我们在进行系统安装的时候将所有的虚拟化组件全部安装上,避免后期出现安装不全或者某些服务依赖关系没有解决好,这样排错的时间远远高于安装时候多装几个包的时间。
    
      在我们安装好虚拟化组件(RHEL6.0之后,系统自带的均是KVM,已经没有XEN虚拟化的支持了),会自动生成一个virbr0这样的桥接设备

    1.3 查看桥接情况

    [root@clovemzone ~]# brctl  show
    
    bridge name    bridge id        STP enabled    interfaces
    
    virbr0      8000.5254007543ce    yes          virbr0-nic
    按照这篇文中所说:http://www.linuxidc.com/Linux/2013-08/88720.htm ,virbr0默认使用的是NAT方式跟虚拟机网卡进行通讯,在实际生产环境中我们多数情况下面使用桥接Bridge的方式进行物理机跟虚拟机的通讯,删除这个virbr0的方法在上面给出的链接中已经说明,这篇文章主要讲述Bridge的简单实现原理以及实际配置方法。

    2. 相关阅读:

    RHEL6 KVM虚拟化创建桥接网卡-网桥 http://www.linuxidc.com/Linux/2013-08/88517.htm
    
    RedHat Linux KVM虚拟机桥接 http://www.linuxidc.com/Linux/2013-02/79934.htm
    
    CentOS 5.6下KVM的安装/桥接设置/虚拟机创建及运行 http://www.linuxidc.com/Linux/2012-12/76883.htm

    3. 网桥

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

    [root@clovemzone ~]# brctl  show

    bridge name      bridge id    STP enabled  interfaces

    br0          8000.0025903afe42    no      eth0

    4. 查看桥接设备

    我们创建两个虚拟机之后,所有的虚拟机网卡均连接br0,此时查看br0上面连接的设备

    [root@clovemzone ~]# brctl  show
    
    bridge name      bridge id    STP enabled  interfaces
    
    br0          8000.0025903afe42    no      eth0
    
                                                vnet0
    
                                                vnet1

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

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

    [root@master ~]# 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

    6. 配置桥接设备br0

    [root@master ~]# rpm -q bridge-utils    //查看桥接软件是否安装
    
    bridge-utils-1.2-9.el6.x86_64
    
    [root@master ~]# brctl  show
    
    bridge name    bridge id    STP enabled    interfaces

    6.1 手动添加

    [root@master ~]# brctl  addbr br0
    
    [root@master ~]# brctl  show
    
    bridge name    bridge id    STP enabled    interfaces
    
    br0            8000.000000000000        no
    
    [root@master ~]# brctl  addif br0 eth0
    
    [root@master ~]# brctl  show
    
    bridge name  bridge id        STP enabled  interfaces
    
    br0        8000.000000000000        no        eth0

    删除eth0上面的ip地址,将br0上面添加上固定ip地址

    [root@master ~]# ip addr del dev eth0 192.168.3.176/24        //删除eth0上的IP地址
    
    [root@master ~]# ifconfig  br0 192.168.3.176/24 up              //配置br0的IP地址并启动设备
    
    [root@master ~]# route add default gw 192.168.3.1              //重新加入默认网关

    6.1 查看配置是否生效

    [root@master ~]# 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

    6.3 查看网卡信息

    [root@master ~]# 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

    6.4 测试同一网段连接是否成功

    [root@master ~]# 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

    6.5 测试不同网段连接是否成功

    [root@master ~]# 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

    上面是通过命令进行的手动配置方法,但是大家都清楚,这些命令配置的结果在服务器重启之后就不能生效了,要想使得所有配置永久生效,我们还是需要通过配置文件进行配置,然后重启网卡设备,让系统帮我们配置,然后重启之后也是生效的。

    通过上面的手动配置方法,大家可以清楚得看到一个桥接设备的配置流程,这个在你写到配置文件里面,然后让系统帮你配置的时候是看不到的 :) ,那么下面我们将所有的配置还原,通过配置文件进行相关自动化配置吧。

    7. 还原原始配置

    7.1 删除网关

    [root@master ~]# route delete default            //删除默认网关
    
    [root@master ~]# route -n
    
    Kernel IP routing table
    
    Destination    Gateway        Genmask        Flags Metric Ref    Use Iface
    
    192.168.3.0    0.0.0.0        255.255.255.0  U    0      0        0 br0

    7.2 查看桥接情况

    [root@master ~]# brctl show
    
    bridge name        bridge id                STP enabled        interfaces
    
    br0                8000.525400a7b756        no                            eth0

    7.3 删除br0上的eth0设备

    [root@master ~]# brctl  delif  br0    eth0    //断开/删除br0上的eth0设备

    7.4 让br0停止活动

    [root@master ~]#ifconfig br0 down        //让br0设备停止活动

    7.5 删除br0

    [root@master ~]#brctl delbr  br0          //删除br0

    7.6 查看br0是否依然存在

    root@master ~]# brctl show                    //查看br0是否依然存在
    
    bridge name        bridge id                STP enabled        interfaces

    7.7 重新给eth0分配IP地址

    [root@master ~]# ifconfig  eth0 192.168.3.176/24    //重新给eth0分配IP地址

    7.8 重新加入默认网关

    [root@master ~]# route add default gw 192.168.3.1  //重新加入默认网关

    7.9 查看网卡

    1234567891011 [root@master ~]# 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

    --------------------------------------------------------------------------------

    8. 通过配置文件配置桥接设备

    配置文件请自行备份

    8.1 查看eth0文件

    [root@master ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
    
    DEVICE=eth0
    
    TYPE=Ethernet
    
    ONBOOT=yes
    
    BRIDGE=br0

    8.2 查看br0文件

    [root@master ~]# 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

    9. 网卡文件参数详解:

    9.1 ifcfg-eth0

    Device              指定网卡设备名
    
    TYPE                指定网卡的类型为以太网卡
    
    ONBOOT        指定网卡是否开机启动,切记要设置为yes
    
    BRIDGE            指定桥接设备,此处指定为br0设备
    
    建议:以上变量(非变量值)均为大写。

    9.2 ifcfg-br0

    Device              指定网卡设备名
    
    TYPE                指定网卡的类型为桥接
    
    ONBOOT        指定网卡是否开机启动,切记要设置为yes
    
    BOOTPROTO 指定网卡启动如何获取IP地址,设置静态
    
    IPADDR          设置br0绑定的IP地址
    
    NETMASK      设置子网掩码地址
    
    GATEWAY      设置网关

    建议: TYPE变量的变量值按照第一个字母大写,其余字母小写的原则,如Ethernet,Bridge

    配置完成之后,重启网络服务

    如担心干扰,建议停止NetworkManager 服务,这个服务挺讨厌

    9.3 停止NetworkManager

    [root@master ~]# service    NetworkManager stop
    
    [root@master ~]#chkconfig NetworkManager off
    
    [root@master ~]# service network restart

    9.4 查看网卡

    [root@master ~]# 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

    10. 查看桥接设备信息

    [root@master ~]# brctl  show
    
    bridge name  bridge id    STP enabled  interfaces
    
    br0        8000.525400a7b756    no        eth0

    11. 查看路由

    [root@master ~]# 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
    1. 由此,桥接设备br0已经配置成功,当创建虚拟机的时候选择虚拟网卡接口的时候选择br0即可

    12. 进行虚拟机安装

    开始安装虚拟机,此时查看桥接设备br0上面的网卡连接情况:

    [root@master ~]# brctl  show
    
    bridge name      bridge id    STP enabled  interfaces
    
    br0          8000.0025903afe42    no      eth0
    
                                                vnet0
  • 相关阅读:
    (圆形imageview 类似qq头像)---》(ps:引用第三库APAvatarImageView>
    uiscrollerview循环滚动(参考第三方库:HMBannerView)https://github.com/iunion/autoScrollBanner
    iOS -动态可变参数
    ios-UIPickerView基本使用
    iOS 实现进度条(progress)
    @property (nonatomic, getter = isExpanded) BOOL expanded;
    linker command failed with exit code 1 (use -v to see invocation)
    APICloud界面间跳转
    iOS CGRectGetMaxY/CGRectGetMaxX
    iOS UIView常用的一些方法setNeedsDisplay和setNeedsLayout 区别
  • 原文地址:https://www.cnblogs.com/heyongboke/p/10337447.html
Copyright © 2020-2023  润新知