Linux中KVM桥接的配置

1. 原理

1.1 说明

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

.在光盘安装的时候安装好虚拟化包或者PXE服务器上配置好虚拟化包

.手动在没有安装虚拟化组件的系统中安装虚拟化组件

1.2 目的

如果我们搭建的环境是必须使用虚拟化的,或者说虚拟化是我们搭建这套环境的主要目的之一,那么我们在进行系统安装的时候将所有的虚拟化组件全部安装上,避免后期出现安装不全或者某些服务依赖关系没有解决好,这样排错的时间远远高于安装时候多装几个包的时间。

  在我们安装好虚拟化组件(RHEL6.0之后,系统自带的均是KVM,已经没有XEN虚拟化的支持了),会自动生成一个virbr0这样的桥接设备

1.3 查看桥接情况

[root@clovemzone ~]# brctl  show

bridge name    bridge id        STP enabled    interfaces

virbr0      .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 .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          .0025903afe42    no      eth0

                                            vnet0

                                            vnet1

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

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

[root@master ~]# ip addr show

: lo: <LOOPBACK,UP,LOWER_UP> mtu  qdisc noqueue state UNKNOWN

    link/loopback ::::: brd :::::

    inet 127.0.0.1/ scope host lo

    inet6 ::/ scope host

      valid_lft forever preferred_lft forever

: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu  qdisc pfifo_fast state UP qlen 

    link/ether :::a7:b7: brd ff:ff:ff:ff:ff:ff

    inet 192.168.3.176/ brd 192.168.3.255 scope global eth0

    inet6 fe80:::ff:fea7:b756/ scope link

      valid_lft forever preferred_lft forever

6. 配置桥接设备br0

[root@master ~]# rpm -q bridge-utils    //查看桥接软件是否安装

bridge-utils-1.2-.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/        //删除eth0上的IP地址

[root@master ~]# ifconfig  br0 192.168.3.176/ 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                   br0

default        192.168.3.1    0.0.0.0        UG                   br0

6.3 查看网卡信息

[root@master ~]# ip addr show    //查看eth0跟br0的IP信息

: lo: <LOOPBACK,UP,LOWER_UP> mtu  qdisc noqueue state UNKNOWN

    link/loopback ::::: brd :::::

    inet 127.0.0.1/ scope host lo

    inet6 ::/ scope host

      valid_lft forever preferred_lft forever

: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu  qdisc pfifo_fast state UP qlen 

    link/ether :::a7:b7: brd ff:ff:ff:ff:ff:ff

    inet6 fe80:::ff:fea7:b756/ scope link

      valid_lft forever preferred_lft forever

: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu  qdisc noqueue state UNKNOWN

    link/ether :::a7:b7: brd ff:ff:ff:ff:ff:ff

    inet 192.168.3.176/ brd 192.168.3.255 scope global br0

    inet6 fe80:::ff:fea7:b756/ 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) () bytes of data.

 bytes from 192.168.3.1: icmp_seq= ttl= time=3.45 ms

 bytes from 192.168.3.1: icmp_seq= ttl= time=4.20 ms

--- 192.168.3.1 ping statistics ---

 packets transmitted,  received, % 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) () bytes of data.

 bytes from 192.168.1.1: icmp_seq= ttl= time=2.38 ms

 bytes from 192.168.1.1: icmp_seq= ttl= time=7.64 ms

--- 192.168.1.1 ping statistics ---

 packets transmitted,  received, % 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                   br0

7.2 查看桥接情况

[root@master ~]# brctl show

bridge name        bridge id                STP enabled        interfaces

br0                .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/    //重新给eth0分配IP地址

7.8 重新加入默认网关

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

7.9 查看网卡

 [root@master ~]# ip addr show

: lo: <LOOPBACK,UP,LOWER_UP> mtu  qdisc noqueue state UNKNOWN

    link/loopback ::::: brd :::::

    inet 127.0.0.1/ scope host lo

    inet6 ::/ scope host

      valid_lft forever preferred_lft forever

: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu  qdisc pfifo_fast state UP qlen 

    link/ether :::a7:b7: brd ff:ff:ff:ff:ff:ff

    inet 192.168.3.176/ brd 192.168.3.255 scope global eth0

    inet6 fe80:::ff:fea7:b756/ 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

: lo: <LOOPBACK,UP,LOWER_UP> mtu  qdisc noqueue state UNKNOWN

    link/loopback ::::: brd :::::

    inet 127.0.0.1/ scope host lo

    inet6 ::/ scope host

      valid_lft forever preferred_lft forever

: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu  qdisc pfifo_fast state UP qlen 

    link/ether :::a7:b7: brd ff:ff:ff:ff:ff:ff

: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu  qdisc noqueue state UNKNOWN

    link/ether :::a7:b7: brd ff:ff:ff:ff:ff:ff

    inet 192.168.3.176/ brd 192.168.3.255 scope global br0

    inet6 fe80:::ff:fea7:b756/ scope link

      valid_lft forever preferred_lft forever

10. 查看桥接设备信息

[root@master ~]# brctl  show

bridge name  bridge id    STP enabled  interfaces

br0        .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                   br0

link-local      *              255.255.0.0    U               br0

default        192.168.3.1    0.0.0.0        UG                   br0
  1. 由此,桥接设备br0已经配置成功,当创建虚拟机的时候选择虚拟网卡接口的时候选择br0即可

12. 进行虚拟机安装

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

[root@master ~]# brctl  show

bridge name      bridge id    STP enabled  interfaces

br0          .0025903afe42    no      eth0

                                            vnet0

Linux中KVM桥接的配置的更多相关文章

  1. linux中KVM桥接网卡br0

    在centos虚拟化当中需要增加一个桥接网卡,然后将虚拟化当中的机器的网卡桥接到桥接网卡,下面将描述设置方法: 查看现有网卡 [root@zb ~]# vim /etc/sysconfig/netwo ...

  2. Linux中vim的简单配置

    本文主要分享Linux中vim的简单配置 ★配置文件的位置     在目录/etc.下面,有个名为vimrc的文件,这就是系统中公共的vim配置文件,对所有用户都开放.而在每个用户的主目录下,都可以自 ...

  3. Linux:Vmware安装linux虚拟机,桥接方式配置静态IP后重启网卡,提示:Error,some other host already uses address 10.252.252.21...

    问题: Vmware安装linux虚拟机,桥接方式配置静态IP后重启网卡,提示:Error,some other host already uses address 10.252.252.21... ...

  4. Linux中Nginx安装与配置详解

    转载自:http://www.linuxidc.com/Linux/2016-08/134110.htm Linux中Nginx安装与配置详解(CentOS-6.5:nginx-1.5.0). 1 N ...

  5. Linux中的网络管理——网络配置及命令

    Linux网络配置 在Linux中配置IP地址的方法有以下这么几种: 图形界面配置IP地址(操作方式如Windows系统配置IP,但在实际生产中,我们并不建议在我们的服务器上安装Linux的图形界面, ...

  6. linux中kvm的安装及快照管理

    一.kvm的安装及状态查看 1.安装软件 yum -y install kvm virt-manager libvirt2.启动libvirtd 报错,升级device-mapper-libs yum ...

  7. [Intel Edison开发板] 06、Edison开发在linux中烧写、配置、搭建开发环境

    1.前言 linux上烧写.配置.搭建Edison环境,千万不要用默认的setup tool for ubuntu!!! (即使,你用的就是ubuntu) 因为,其默认的工具会从一个坏链接下载配置文件 ...

  8. linux中Samba服务器的配置

    Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件 ...

  9. Linux中的yum的配置以及常见报错的处理

    一. 今天登录服务器的时候,误把yum所在的cache文件夹中的文件删除掉了,导致yum不能够使用,解决的方法: 显示错误如下: Loaded plugins: fastestmirror Deter ...

随机推荐

  1. Restful设计思想

    1.REST的架构设计 代表性状态传输(Representational State Transfer,REST)在Web领域已经得到了广泛的接受,是基于SOAP和Web服务描述语言(Web Serv ...

  2. jmeter测试计划元素执行顺序

    jmeter测试计划元素执行顺序 测试计划的元素是有序的,通过以下方式执行: 1–配置节点 2–前置处理器 3–定时器 4–取样器 5–后置处理器(只在有结果可用情况下执行) 6–断言(只在有结果可用 ...

  3. 信号single

    信号 Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 1.Django内置信号 Model signals pre ...

  4. git 合并分支到master

    git 合并分支到master   假如我们现在在dev分支上,刚开发完项目,执行了下列命令 git add .git commit -m ‘dev'git push -u origin dev 然后 ...

  5. c++ cin cin.getline() getline()用法

    http://www.cnblogs.com/AndyJee/p/3821067.html 主要内容: 1.cin用法 2.cin.getline()用法 3.getline()用法 3.注意的问题 ...

  6. jquery tmpl生成导航

    引入<script src="jquery.tmpl.min.js"></script> html<ul class="nav" ...

  7. Linux 网络编程(一)--Linux操作系统概述

    一.Linux的内核版本 Linux内核的编号采用如下编号形式: 主版本号.此版本号.主补丁号.次补丁号 例如:2.6.26.3 第一个数字”2”是主版本号,表示第2大版本. 第二个数字”6”是此版本 ...

  8. RabbitMQ集群出现过机器故障,网络异常等故障后,重启无法重新建立集群的终极解决方案

    由于机器掉电,网络故障等原因,RabbitMQ整个集群出现问题.重启RabbitMQ时,发现某些机器始终无法重新加入到集群中,而且还可能出现网络分区. 针对不同情况,可能选择 rabbitmqctl ...

  9. [dedecms]隐藏栏目不生成静态页面

    重点文件在:/data/cache/inc_catalog_base.inc.php文件,里面存放的是栏目ID 先找到 /dede/sys_cache_up.php(后台更新缓存的地方),找到里面的U ...

  10. c/c++ include 头文件的方式

    在编写c/c++代码时,#include 头文件有两种方式:一个是#include “文件名”,一个是#include <文件名>.区别在于: 前者在程序编译时系统首先在源程序所在的目录( ...