Linux下为KVM 配置桥接设备

简介:

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

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

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


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

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

1
2
3
[root@clovemzone ~] # brctl  show
bridge name    bridge  id         STP enabled    interfaces
virbr0       8000.5254007543ce     yes            virbr0-nic

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

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


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

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



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

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



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



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

1
2
3
4
5
6
7
8
9
10
11
[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

2.配置桥接设备br0

1
2
3
4
5
[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
[root@master ~] #

此时无任何桥接设备,我们可以手动添加也可以在 文件中进行添加生效。

(1) 手动添加

1
2
3
4
5
6
7
8
[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地址

1
2
3
[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              //重新加入默认网关


查看配置是否生效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[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
[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
[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
[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

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

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


还原原始配置

[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


[root@master ~]# brctl show

bridge name        bridge id                STP enabled        interfaces

br0                8000.525400a7b756        no                            eth0

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

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

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

root@master ~]# brctl show                     //查看br0是否依然存在

bridge name        bridge id                STP enabled        interfaces

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

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

1
2
3
4
5
6
7
8
9
10
11
[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

(2) 通过配置文件配置桥接设备

配置文件请自行备份

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@master ~] # cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT= yes
BRIDGE=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


参数详解:

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 服务,这个服务挺讨厌

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@master ~] # service    NetworkManager stop
[root@master ~] #chkconfig NetworkManager off
[root@master ~] # service network restart
[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

查看桥接设备信息

1
2
3
4
5
6
7
8
9
[root@master ~] # brctl  show
bridge name   bridge  id     STP enabled   interfaces
br0        8000.525400a7b756    no        eth0
[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

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


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


1
2
3
4
[root@master ~] # brctl  show
bridge name      bridge  id     STP enabled   interfaces
br0           8000.0025903afe42     no       eth0
                                              vnet0



祝大家顺利!










本文转自 暗黑魔君 51CTO博客,原文链接:http://blog.51cto.com/clovemfong/1217837,如需转载请自行联系原作者
目录
相关文章
|
10天前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
82 7
|
12天前
|
安全 Linux KVM
Linux虚拟化技术:从Xen到KVM
Xen和KVM是Linux平台上两种主要的虚拟化技术,各有优缺点和适用场景。通过对比两者的架构、性能、安全性、管理复杂性和硬件依赖性,可以更好地理解它们的适用场景和选择依据。无论是高性能计算、企业虚拟化还是云计算平台,合理选择和配置虚拟化技术是实现高效、稳定和安全IT环境的关键。
65 8
|
2月前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
2月前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
81 9
|
2月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
68 5
|
3月前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
87 2
|
3月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
719 3
|
3月前
|
监控 安全 网络协议
快速配置Linux云服务器
【10月更文挑战第3天】快速配置Linux云服务器
|
4月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
3月前
|
应用服务中间件 Linux Shell
Linux 配置 Nginx 服务的详细步骤,绝对干货
Linux 配置 Nginx 服务的详细步骤,绝对干货
111 0