VLAN工作原理+实验案例(超详细)
VLAN工作原理+实验案例(超详细)
一、概述
1.VLAN(Virtual Local Area Network)产生的背景
由于一个交换机就是一个广播域,那么交换机在接收到广播报文时,采取的行为是泛洪,如果交换机连接了许多终端以及网络设备的话,这么庞大的广播域会很浪费网络资源而且会带来安全的隐患,比如ARP攻击等,我们想要解决这种情况可以来分割广播域的方式,但是物理分割广播域成本太高且不能真正意义上的解决问题所以我们就需要引入VLAN技术来帮助我们分割广播域。
2.VLAN的作用
所以我们的VLAN的主要作用就是用来分割广播域,也可以说为隔离广播域,将交换机的网络分割为多个局域网,当然每个VLAN也有相应的ID,并且一个VLAN内的广播报文只能在一个VLAN内进行广播从而将广播报文限制在了一个VLAN内,这样不仅仅提高了网络的安全性,并且简化了网络的管理。
二、VLAN的分类
1.静态VLAN
基于端口来划分的静态VLAN,我们最常用的VLAN的配置方式,在交换机的接口配置相应的VLAN,此接口就会被划入对应的VLAN当中。
2.动态VLAN
我们的动态VLAN是根据不同的MAC打上不同的标签,比如我配置MAC"A"接入到我左边的交换机时我分配给他VLAN10,MAC"B"接入到我交换机时我给他分配VLAN20。
意思其实就是我们同一个端口接入进来的不同MAC的终端我给他分配不同的VLAN,但是我们需要注意一点,如果我们多配置几个对应的VLAN,我们接口是不是还要放行这些VLAN通过我们的交换机,然后在接入终端的接口剥离掉这些VLAN的标签。
该模式我们使用的比较少是因为这个方式有一个弊端,我们通过几张拓扑来说明。
拓扑
这张拓扑中我们左边交换机与右边交换机分别用4个不同的VLAN来给下面几个终端分配VLAN,假设我们交换机1的VLAN10对应着PC1的MAC,后面所有的VLAN也按顺序这样分配下去。
如果这时连接PC1的端口接入了其他的PC,比如PC3那就给这个接口分配PC3的VLAN,但是我们要注意的是这样的话我们左边所有连接终端的接口是不是都要放行这些VLAN,要不然其他PC接入到交换机时根据MAC给他们打上不同的VLAN,但没有放行VLAN他们的数据就通过不了。
但注意如果这时任意一台主机发送了一个广播报文是不是所有的主机都可以接收到,因为交换机是放行了所有的VLAN,那这样的话我们分割广播域就没有任何意义了,我们这里简单阐述一下,后面会以实验的形式来和大家进一步解释。
三、VLAN的接口类型
Access:
接收到没有带有VLAN标签时的处理方式 进入交换机时打上自己的VLAN标签,出交换机时剥离VLAN标签
接收到带有VLAN标签时的处理方式 进入交换机时会比较VLAN标签是否与自己的VLAN标签一致,如果一致则放行出交换机时剥离标签,如果不一致则丢弃。
Access接口只能够加入一个VLAN我们通常使用该接口类型来连接终端设备
Trunk:
接收到没有带有VLAN标签时的处理方式 给数据帧打上VLAN标签(PVID)当VLAN标签在允许通过的VLAN列表里时放行数据帧,如果不在则丢弃
接收到带有VLAN标签时的处理方式 当该数据帧的VLAN标签在通过列表里时放行该数据帧,不在则丢弃
发送数据帧时VLAN标签与接口的PVID一致时的处理方式 当该数据帧的VLAN标签在通过列表中时则剥离掉VLAN标签然后放行通过,如果不在则禁止通行
发送数据帧时VLAN标签与接口的PVID不同时的处理方式 当该数据帧的VLAN标签在通过列表中时则保留数据帧的VLAN标签然后放行通过,如果不在则禁止通行
Trunk接口允许多个VLAN的数据帧通过我们通常使用该接口类型来连接网络设备比如路由器、交换机、防火墙等
Hybrid:
接收到没有带有VLAN标签时的处理方式 给数据帧打上VLAN标签(PVID)当VLAN标签在允许通过的VLAN列表里时放行数据帧,如果不在则丢弃
接收到带有VLAN标签时的处理方式 当该数据帧的VLAN标签在通过列表里时放行该数据帧,不在则丢弃
发送数据帧时的处理方式 如果我们配置发送该VLAN的数据帧时不携带VLAN标签,则将数据帧的VLAN标签剥离掉然后放行通过。如果我们配置发送该VLAN的数据帧时携带VLAN标签,则保留数据帧的VLAN标签然后放行通过。
Hybrid接口与我们的Trunk接口类似,允许多个VLAN的数据帧通过,但管理员可以灵活指定某些接口携带或不携带VLAN的标签通过。
四、VLANID的范围
VLANID一共为0-4095(4096个),可用的为1-4094
VLAN1是默认存在的VLAN,不可以删除且所有的接口默认都属于VLAN1。'
五、VLAN的封装
六、实验
1、Access
拓扑
上面这个拓扑当中我们使用VLAN10与VLAN20理论上把网络分割为两个广播域,蓝色区域为一个广播域,红色为一个广播域,但这里我们使用Access端口类型所以还是为一个广播域,原因我们下面用实验的方式来解释,接下来我们来配置比较简单的VLAN内的通信并抓包看看VLAN数据是如何封装的。
(1)基础配置
(2)VLAN配置
SW1
sys
sysname SW1
vlan 10
int g 0/0/1
port link-type access(因为华为的设备端口类型默认为Hybrid类型所以我们需要配置为Access类型)
port default vlan 10(将g0/0/1端口划分到VLAN10中)
int g 0/0/2
port link-type access
port default vlan 10
int g 0/0/0
port link-type access
port default vlan 10
SW2
sys
sysname SW2
vlan 20
int g 0/0/1
port link-type access
port default vlan 20
int g 0/0/2
port link-type access
port default vlan 20
int g 0/0/0
port link-type access
port default vlan 20
测试
由于我们使用的是Access的接口类型所以我们抓包时抓不到802.1Q的数据帧封装
数据传输过程
1、PC1发送ARP请求MAC
由于我们是第一次pingPC2,PC1还没有PC2的MAC地址,所以PC1发送ARP广播去请求PC2的MAC。
2、数据到达交换机
当数据到达SW1时,由于我们配置的端口类型为Access,交换机会给数据帧打上VLAN10的标签然后SW1查MAC表发现没有PC2的MAC对应信息所以采取泛洪处理,从所有划分到VLAN10端口剥离掉VLAN10的标签然后发送出去
3、数据到达PC2
由于是Access端口所以发送出去时会剥离掉VLAN10的标签,PC2在收到这个数据帧时发现要请求的对象是自己所以会对这个请求包做单播响应,PC1收到响应报文后就有了PC2的MAC可用正常封装数据帧去访问PC2。
我们上面说到虽然我们创建了两个VLAN给他们分别划分到相应的端口当中了,理论上应该是两个广播域,但其实还是一个广播域是什么意思呢?
原因是因为我们使用的是Access端口类型,我们前面端口类型说到Access在收到一个没有VLAN标签的数据帧时会打上端口对应的VLAN标签,在发送数据帧时会剥离掉相应的数据帧,所以我们PC1去访问PC3和PC4时数据是可以互相通信的。
测试
数据是如何传输的
1、PC1发送ARP请求MAC
由于我们是第一次pingPC3,PC1还没有PC3的MAC地址,所以PC1发送ARP广播去请求PC3的MAC。
2、数据到达SW1
当数据到达SW1时,由于我们配置的端口类型为Access,交换机会给数据帧打上VLAN10的标签然后SW1查MAC表发现没有PC3的MAC对应信息所以采取泛洪处理,从所有划分到VLAN10端口剥离掉VLAN10的标签然后发送出去。
3、数据到达SW2
SW2收到SW1泛洪过来的ARP广播报文,由于没有标签所以SW2打上自己端口对应的VLAN标签,然后查MAC表从所有划分到VLAN20的端口剥离掉VLAN20的标签发送出去。
4、数据到达PC3
PC3在收到PC1的请求报文时发现请求的对象是自己所以会对数据帧做响应,数据帧回去时经过交换机还是打上标签剥离标签到达PC1,这样PC1就可以正常与PC3通信了,所以我们在抓包时是抓不到有标签的数据帧的。
2、Trunk
拓扑
这里我们使用Access接口类型来连接终端设备,使用Trunk连接交换机,一个交换机分割为两个广播域,交换机互联端口默认PVID为VLAN1。
(1)基础配置
基础配置与上面实验无差异所以不过多赘述
(2)VLAN配置
SW1
sys
sysname SW1
vlan batch 10 20(创建两个VLAN分别为10与20)
int g 0/0/1
p l a(这里的配置与上Access配置相同所以简写了)
p d v 10
int g 0/0/2
p l a
p d v 20
int g 0/0/3
port link-type trunk
port trunk allow-pass vlan 10 20
SW2
sys
sysname SW2
vlan batch 10 20
int g 0/0/1
p l a
p d v 10
int g 0/0/2
p l a
p d v 20
int g 0/0/3
port link-type trunk
port trunk allow-pass vlan 10 20
到这里我们就配置结束了使用抓包软件来看看数据是如何传输的
数据传输过程
1、PC1发送数据去访问PC3
由于PC1的ARP表中已经有了PC3的MAC所以不需要发送ARP去解析PC3的MAC,可以直接封装数据帧。
2、数据到达SW1
数据到达SW1的1号端口时是一个没有携带VLAN标签的数据,打上1号端口VLAN10的标签,从3号端口泛洪出去,由于是Trunk端口类型,查通过VLAN表发现允许通过,我们没有给3号端口配置PVID所以默认是1,在发送时并不会剥离掉VLAN10的标签会携带标签发送到SW2。
3、数据到达SW2
数据到达SW2的3号端口时,由于是Trunk端口查通过VLAN表发现允许通过,从1号端口泛洪出去由于1号端口为Access端口类型所以会剥离掉VLAN标签发送到PC3。
由于PC2和PC4属于VLAN20所以PC1发出的广播报文并不会泛洪到VLAN20广播域当中,所以PC1是访问不到PC2和PC4的,但我们可以修改Trunk的PVID让PC1可以访问到PC4但不能访问PC2
VLAN配置
SW1
int g 0/0/3
port trunk pvid vlan 10
SW2
int g 0/0/3
port trunk pvid vlan 20
测试
PC1访问PC2的数据传输过程
1、PC1发送数据去访问PC2
PC1发送数据去访问PC2到达交换机时打上VLAN10的标签,由于连接PC2的端口是VLAN20所以不会从2号端口泛洪出去。
PC1访问PC4的数据传输过程
1、PC1发送数据去访问PC4
由于PC1ARP表中没有PC4对应的MAC,所以会先发送ARP广播获取PC4的MAC
2、数据到达SW1
数据到达SW1的1号端口会打上VLAN10的标签,随后从3号端口剥离VLAN标签泛洪出去。
3、数据到达SW2
数据到达SW2的3号端口,打上VLAN20的标签从2号端口剥离VLAN标签泛洪出去。
但这样配置的话我们的PC1只能访问PC4,PC2与PC3都访问不到,要解决这样的问题我们可以使用Hybrid端口类型来进行配置
3、Hybrid
拓扑
这里我们配置连接终端的端口类型为Hybrid,发送数据时剥离VLAN标签10,20。
(1)基础配置
基础配置与上面实验相同并无差异这里不多赘述
(2)VLAN配置
SW1
sys
sysname SW1
vlan batch 10 20
int g 0/0/1
port hybrid pvid vlan 10(配置Hybrid的PVID为10)
port hybrid untagged vlan 10 20(配置通过列表,通过时剥离相应标签)
interface GigabitEthernet0/0/2
port hybrid pvid vlan 20
port hybrid untagged vlan 10 20
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 10 20
SW2
sys
sysname SW2
vlan batch 10 20
int g 0/0/1
port hybrid pvid vlan 10
port hybrid untagged vlan 10 20
interface GigabitEthernet0/0/2
port hybrid pvid vlan 20
port hybrid untagged vlan 10 20
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 10 20
测试
PC1访问PC3的数据传输过程
1、PC1发送数据访问PC3
SW1连接PC1的端口
由于上面ARP表老化时间过了所以PC1需要重新去广播ARP获取PC3的MAC地址
2、数据到达SW1
SW1连接SW2的3号端口
数据到达SW1,打上VLAN10的标签,2号端口查通过列表剥离VLAN标签泛红出去,3号端口查通过列表保留VLAN标签泛洪出去。
3、数据到达SW2
SW2连接SW1的3号端口
数据到达SW2的3号端口查通过列表保留VLAN标签从1号和2号端口查通过列表剥离VLAN标签泛洪出去。
4、数据到达PC3和PC4
PC3和PC4都会收到不携带标签的ARP的request请求报文,PC3和PC4拆包发现请求的对象是PC3所以PC4收到后不会做响应。
但是这种配置类似于傻瓜配置,倒不如把所有主机配置在同一台交换机上,虽然我们配置繁琐但最后展示的效果还是在同一广播域下,这里只是为实现上面所说的效果。
正常我们会把连接PC1与PC3的端口只允许通过剥离VLAN10的标签,PC2与PC4只允许通过剥离VLAN20的标签,这样实现的效果就变成PC1只能与PC3互通,PC2只能与PC4互通。
最后我们来配置一下动态划分VLAN的实验
4、动态划分VLAN
拓扑
详细实验可看下篇文章
到这里本章内容就到此结束了如果有疑问可以+博主私聊,如果哪里有问题欢迎私聊博主及时更改谢谢大家的观看学习!!!