虚拟化云计算-linux网桥及vlan实现交换机

  linux bridge(网桥)是linux上用来做tcp/ip做二层协议交换的设备,就是为了狙击绝虚拟机网卡连接问题。创建网桥后,就像网络交换机具有物理网络接口一样你,可以进一步在网桥上创建多个虚拟的物理接口,然后再将每个接口与虚拟机的网卡连接。

image.png

一、安装与使用bridge-utils

    centos系统下的网桥管理工具是bridge-utils包。安装该工具后,可以使用brctl命令创建、查看与管理网

yum install brige-utils
 

命令brctl显示相关命令:

image.png

相关命令说明:

addbr bridge的名称  #添加bridge;

 delbr bridge的名称              #删除bridge;

        addif bridge的名称device的名称#添加接口到bridge;

        delif bridge的名称device的名称#从bridge中删除接口

        setageing bridge的名称时间     #设置老化时间,即生存周期

        setbridgeprio bridge的名称 优先级#设置bridge的优先级

        setfd bridge的名称时间         #设置bridge转发延迟时间

        sethello bridge的名称时间      #设置hello时间

        setmaxage bridge的名称时间     #设置消息的最大生命周期

        setpathcost bridge的名称 端口 权重#设置路径的权值

        setportprio bridge的名称 端口 优先级#设置端口的优先级

        show     #显示bridge列表

        showmacs bridge的名称  #显示MAC地址

        showstp  bridge的名称           #显示bridge的stp信息

        stp bridge的名称{on|off}       #开/关stp

在没有使用创建网桥之前,可以看到网卡信息,只有一个网卡eth0和本地环回网卡

image.png

使用brctl命令创建网桥br1,并将eth0接口加入此网桥

brctl addbr br1
brctl addif  br1 eth0 
ifconfig eth0 0.0.0.0 #去除eth0的ip地址               
ifconfig br1 172.31.208.60 netmask 255.255.255.0 #创建网桥的Ip地址,可以通过这个网桥的地址进行远程登录
route add default gw  172.31.208.1 dev br1 #增加网关
 

完成后,显示网卡信息,可以看到网桥已经创建

image.png

查看路由,可以看到默认网关已经配置在网桥上

image.png

网桥信息如下所示:

brctl show br1
 

image.png

    网桥的地址就是为了可以方面进行ssh登录宿主机。与网桥连接的虚拟机IP地址可以设置为网桥处于同一个ip地址网段,也可是设置为不相同的ip地址

brctl命令对网桥的配置需以文件的形似保存下来,这样系统再次启动后所有的配置依旧可以生效,ifcfg-br1的信息如下所示:

image.png

注意这里修改ONBOOT=yes,即开机生效

BOOTPROTO=static静态地址

DNS1=233.5.5.5保证配置网桥后可以使用yum

而此时,eth0网卡的配置文件ifcfg-eth0,需要删除ip地址信息,如下所示:

image.png

二、VLAN和虚拟交换机

    vlan的定义不再多说,只需记住将数据包打上vlan标签的端口叫做access,而将不处理标签转发数据包的端口叫做trunk.

linux的vlan就是由不同的网桥实现,如下所示“

image.png

说明:

eth0是物理机的物理网卡,有两个eth0.10和eth0.20两个子设备

eth0.10就是vlan设备vlanid 就是vlan10

eth0.10挂载在brvlan10的网桥上,虚拟机vm1通过vnet0的网卡挂载在网桥brvlan10上

这里eth0.10,vmnet,brvlan10相当于access接口,eth0就相当于trunk接口

这样,就相当于形成了一个虚拟交换机,使用软交换方式

在linux系统下,VLAN的管理工具是vconfig。

yum install epel-release #不安装epel源找不到vconfig
yum install vconfig
modpeobe 8021q
 

创建VLAN接口与网关ip地址

linux的vlan机制是,如果物理机器只有一个网卡,我们可以在这个网卡上创建多个vlan,也就是说多个vlan的数据可以通过这个物理网卡对外进行转发。而每个VLAN以独立的接口

(interface)体现。比如需要在eth0上创建10,20的VLAN,则需要创建eth0.10和eth0.20这两个不同的接口。

同时,我们也可以为每个vlan接口分配不同的ip地址,让每个IP地址成为每个VLAN内部的对外访问网关,如我们可以将eth0.10设置为192.168.10.1/24,以此作为VLAN内的网关地址。

    下面举例,在eth0上创建10,20的vlan接口,分别赋予这些接口ip地址,并加入到主机路由表中。

vconfig add eth0 10
vconfig add eth0 20
ifconfig eth0.10 192.168.10.1 netmask 255.255.255.0 up
ifconfig eth0.20 192.168.20.1 netmask 255.255.255.0 up
ip route add 192.168.10.0/24 dev eth0.10
ip route add 192.168.20.0/24 dev eth0.20
 

image.png

完成配置后,查看路由表

image.png

查看网卡信息

image.png

如果需要删除已经创建的VLAN10接口eth0.10,则如下:

vconfig rem eth0.10
 

在虚虚拟化环境下,虚拟机连接在不同的网桥接口上,而如果将已经创建好的各个vlan接口加入到不同的网桥中,则不同的网桥流量会进入不同的vlan中。

如果我们创建brvlan10网桥,且br10网桥将eth0.10 VLAN接口加进来,这样brvlan10上所有的虚拟机都处于VLAN10中。

brctl addbr brvlan10
brctl addif brvlan10 eth0.10
 

image.png

另外,在centos7中,我们可以使用network-manger的nmtui命令来创建和查看vlan接口,更加方便

nmtui
 

 image.png

image.png

三、总结

(1)linux的vlan设备实现的是隔离功能,但是没有交换功能

一个vlan母设备(如eth0)不能拥有两个相同的id vlan子设备,因此不能实现交换

(2)linux bridge专门实现交换功能

将同一个vlan子设备都挂载在一个bridge上,设备之间就可以实现交换功能

总体来说,vlan+bridge在功能层面完整模拟交换机,实现软件二层交换

转自:https://blog.51cto.com/11555417/2162026

原文地址:https://www.cnblogs.com/pipci/p/13020894.html