kvm+linux bridge实现trunk vlan

1引言    2

1.1编写目的    2

2安装配置    2

2.1部署拓扑    2

2.2 前置条件    3

2.3配置管理网络网桥    3

2.4配置Trunk vlan网络网桥    4

2.5配置虚拟机    6

2.6测试连通性    7

 

kvm+linux bridge实现trunk vlan

1引言

1.1编写目的

    其实不用linux bridge 也可以,比如说用ovs,而且会更方便,用Linux bridge主要是因为kvm 和 Linux bridge都是Linux系统自带的工具,不需要额外安装,而且性能和稳定性都十分有保证

    如果能在Linux bridge上实现trunk 口 那么我们就可以在vm层面模仿vlan的所有操作。所有关于vlan的验证都可以不用跑到机房配置交换机来验证,而是在物理机上配置vm就轻松搞定了一个vlan的环境

2安装配置

2.1部署拓扑

 

 

  1. 最终可以实现 虚拟机eth0 能够通过物理交换机和物理机2的em1网卡进行trunk vlan交互,而虚拟机的eth1和物理机2的em2 网卡通过物理交换机互通,最终看起来虚拟机就和一个物理机是一样的

2.2 前置条件

  • 关闭Linux bridge的防火墙 添加下面几个参数到 文件 /etc/sysctl.conf中

    net.bridge.bridge-nf-call-ip6tables = 0

    net.bridge.bridge-nf-call-iptables = 0

    net.bridge.bridge-nf-call-arptables = 0

    net.bridge.bridge-nf-filter-pppoe-tagged = 0

    net.bridge.bridge-nf-filter-vlan-tagged = 0

  • 按照上面的拓扑图设置好交换机的trunk口,并且连接好对应的网卡到交换机的trunk口
  • 手动添加好两个Linux bridge网桥

    brctl addbr br0

    brctl stp br0 on

    brctl addbr br1

    brctl stp br1 on

     

2.3配置管理网络网桥

    按照上面的拓扑,br0是一个管理网络的网桥,虚拟机通过桥接方式连接到br0网桥上,从而连接到物理网络上,由于vm可以通过br0网桥直接连接到物理网络,也就是vm可以直接使用物理网络的ip,所以需要把管理网络的网卡插入到br0中

 

 

这个可以通过修改网卡配置文件来进行上面的配置

/etc/sysconfig/network-scripts/ifcfg-br0

 

 

把原来物理网卡em2的ip直接复制给br0,br0代替了原来的em2

下面看下em2网卡变成了什么样子

 

 

可以看到原来的ip都被注释了,而且BOOTPROTO=none了

配置好两个文件后,重启network 服务就可以看到这样的效果了

 

上面的图里面的em3 应该是em2 截图错了

em3 网卡被插入到了br0中

2.4配置Trunk vlan网络网桥

    按照上面的方法,通过配置文件我们也可以实现把Trunk vlan 对应的网卡插入到br1 网桥中,或者你也可以手动的添加物理网卡到br1中

brctl addif br1 em1

这样就把em1网卡插入到br1中,注意的是em1的网卡配置文件要和上面的em2的配置文件修改成一样,不能再有ip 最终应该实现的效果如下图:

 

 

 

下面我们说下最重要的部分就是怎么让br1 这个Linux bridge能够设置trunk口

其实就是用Linux里面的 vconfig来设置子网口的方式

 

比如你想让br1 网桥允许 301、302、303 这三个vlan 通过,也就是经过br1的时候要给报文打上这三个vlan的标签,那么只需要被br1 设置这三个网络的子网口就可以了

vconfig add br1 301

vconfig add br1 302

vconfig add br1 303

 

把三个子网口up起来

ifconfig br1.301 0 up

ifconfig br1.302 0 up

ifconfig br1.303.0 up

 

查看三个子网口

 

 

 

最终实现的效果如下图

 

 

 

通过以上步骤就完成了所有网络方面的配置了,下面就是建立vm并且使用这两个网桥来实现管理网络的互通和数据网络的(也就是可以通过多个vlan的网络)互通

另外注意的是我们想让多少个vlan通过 就给br1 添加多少个子接口就可以了

2.5配置虚拟机

  1. 虚拟机建议使用virt-manage来启动,没有安装virt-manage 可以用如下命令来安装virt-manager

    yum install -y epel-release

    yum install -y virt-manager

  2. 创建一个vm,其中网卡是这样创建的

    管理网段的网卡配置

     

     

     

    trunk vlan 网络的网卡配置

     

     

     

     

    总之就是虚拟机的两个网卡要分别使用 br0 和br1 这两个Linux bridge,不一定和我这个截图一样

    最终的效果图如下:

     

     

 

2.6测试连通性

    我们拓扑图中还有一个物理机2 那个上面没有任何的Linux bridge,但是上面有一个网卡是连接了trunk 口的我们可以让这个物理机2上面的trunk口 就是下图的 em1

 

让物理机的em1 trunk 口配置个vlan 301 并且给给ip

vconfig add em1 301

ifconfig em1.301 192.168.200.222/24 up

这样em1.301 这个子接口就是一个能接收 vlan 301的网卡了

 

下面去虚拟机中进行相同的配置,给虚拟机的 eth1 网卡加一个301 的子接口

vconfig add eth1 301

ifconfig eth1.301 192.168.200.221/24 up

 

 

这样就在虚拟机中有了一个能接收vlan 301 的网卡

 

在虚拟机中ping 物理机2 的 192.168.200.222 是可以通的

然后可以在物理机2 的网卡上抓包会发现有 vlan tag

 

 

证明虚拟机通过物理交互机的trunk口,正确的到达了物理机2的物理口

 

另外虚拟机的eth0 管理口ip 就可以正常的配置就可以了,因为它不是一个trunk口,不需要配置子接口,配置的ip 就能和物理网络互通了

posted on 2016-08-12 21:52  西厢书生  阅读(6450)  评论(0编辑  收藏  举报

导航