linux bridge构建vlan隔离环境

linux bridge构建vlan隔离环境

最近在学习vlan相关知识,便在虚拟机环境下构建了该环境,收获满满,记录如下

环境逻辑图:

image-20220326173322399

环境软件:vmware Fusion (笔记本),创建“network1 ” host网络,开启混杂模式

虚拟机host1 :centos7,网卡 :ens34;创建vlan100、vlan200

虚拟机host2 :centos7,网卡 :ens34;创建vlan100、vlan300

两个虚拟机中分别还有一张网卡用于访问internet,对于本实验关系不大,没有画出。

实验目的

  1. host1虚拟机中br100 网络 与host2虚拟机中br100网络互通(即实现vm1与vm3互访,介于笔记本配置问题本次没有起虚拟机)

    172.16.100.2 <—->172.16.100.3

  2. host1虚拟机中br100 网络 与host2虚拟机中br100网络不可达

    172.16.200.2 <–/–>172.16.200.3

配置过程

虚拟机host1

安装与使用bridge-utils:

1
$ yum install brige-utils

创建网桥br100,配置ip 172.16.100.2/24

1
$ vi /etc/sysconfig/network-scripts/ifcfg-br100
1
2
3
4
5
6
DEVICE=br100
ONBOOT=yes
IPADDR=172.16.100.2
NSTMASK=255.255.255.0
BOOTPROTO=static
TYPE=Bridge

创建网桥br200,配置ip 172.16.200.2/24

1
$ vi /etc/sysconfig/network-scripts/ifcfg-br200
1
2
3
4
5
6
DEVICE=br200
ONBOOT=yes
IPADDR=172.16.200.2
NSTMASK=255.255.255.0
BOOTPROTO=static
TYPE=Bridge

创建vlan100,并绑定br100,编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-ens34.100

1
2
$ cp /etc/sysconfig/network-scripts/ifcfg-ens34 /etc/sysconfig/network-scripts/ifcfg-ens34.100
$ vi /etc/sysconfig/network-scripts/ifcfg-ens34.100
1
2
3
4
5
6
7
8
DEVICE=ens34.100
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
VLAN=yes
#IPADDR=172.16.100.1
#NETMASK= 255.255.255.0
BRIDGE=br100

同理创建vlan200,并绑定br200,编辑文件/etc/sysconfig/network-scripts/ifcfg-ens34.200

1
2
3
4
5
6
7
8
DEVICE=ens34.200
ONBOOT=yes
BOOTPROTO=none
#IPADDR=172.16.200.1
#NETMASK= 255.255.255.0
TYPE=Ethernet
VLAN=yes
BRIDGE=br200

重启网络

1
$ service network restart

创建vm1,vm2,分别挂载到br100,br200上 (本次实验没创建,配置低,内存不够),命令如下,需开启VT-x:

1
2
3
4
5
6
7
8
$ virt-install \
--virt-type=kvm \
--name=vm1 \
--vcpus=2 \
--memory=2048 \
--location=~/disk/CentOS-7-x86_64-DVD-1810.iso \
--disk path=~/vms/centos7.qcow2,size=15,format=qcow2 \
--network bridge=br100 \

查看网桥状态(如创建vm会看到 虚拟机interface)

image-20220326180101326

虚拟机host2

安装与使用bridge-utils:

1
$ yum install brige-utils

创建网桥br100,配置ip 172.16.100.3/24

1
$ vi /etc/sysconfig/network-scripts/ifcfg-br100
1
2
3
4
5
6
DEVICE=br100
ONBOOT=yes
IPADDR=172.16.100.3
NSTMASK=255.255.255.0
BOOTPROTO=static
TYPE=Bridge

创建网桥br300,配置ip 172.16.200.3/24

1
$ vi /etc/sysconfig/network-scripts/ifcfg-br200
1
2
3
4
5
6
DEVICE=br300
ONBOOT=yes
IPADDR=172.16.200.3
NSTMASK=255.255.255.0
BOOTPROTO=static
TYPE=Bridge

创建vlan100,并绑定br100,编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-ens34.100

1
2
$ cp /etc/sysconfig/network-scripts/ifcfg-ens34 /etc/sysconfig/network-scripts/ifcfg-ens34.100
$ vi /etc/sysconfig/network-scripts/ifcfg-ens34.100
1
2
3
4
5
6
7
8
DEVICE=ens34.100
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
VLAN=yes
#IPADDR=172.16.100.1
#NETMASK= 255.255.255.0
BRIDGE=br100

创建vlan300,并绑定br300,编辑文件/etc/sysconfig/network-scripts/ifcfg-ens34.300

1
2
3
4
5
6
7
8
DEVICE=ens34.300
ONBOOT=yes
BOOTPROTO=none
#IPADDR=172.16.200.1
#NETMASK= 255.255.255.0
TYPE=Ethernet
VLAN=yes
BRIDGE=br300

重启网络

1
$ service network restart

创建vm3,vm4,分别挂载到br100,br300上 (本次实验没创建,配置低,内存不够),命令如下,需开启VT-x:

1
2
3
4
5
6
7
8
$ virt-install \
--virt-type=kvm \
--name=vm1 \
--vcpus=2 \
--memory=2048 \
--location=~/disk/CentOS-7-x86_64-DVD-1810.iso \
--disk path=~/vms/centos7.qcow2,size=15,format=qcow2 \
--network bridge=br100 \

查看网桥(如创建vm会看到 虚拟机interface)

image-20220326180454161

验证

验证1:

host1虚拟机中br100 网络 与host2虚拟机中br100网络互通(同在vlan100,应互通),

host1 操作如下:可以看到网络互通

image-20220326181334128

另开终端抓包情况:可以看到经过网卡ens34 携带vlan tag 100

image-20220326181736497

验证2:

host1虚拟机中br200 网络 与host2虚拟机中br300网络通信(不通vlan,理应隔离)

host1 操作如下:可以看到网络不可达

image-20220326182136352

另开终端抓包情况:可以看到ARP协议在vlan200中泛洪

image-20220326182723145

这时,抓经过ens34.200的包,没有携带vlan tag,其实这相当于交换机中的access口,发出流量将tag剥掉,而ens34网卡相当于trunk,携带vlan tag进行传播

image-20220326182819638

结论

  1. 在linux Bridge中可以虚拟媲美物理交换机功能的设备,实现vlan隔离转发
  2. 本环境中ens34 相当于trunk,ens34.100,br100 则可以看做交换机中的access口,流量在ens34 中进出携带valn tag