首页 > 技术文章 > 24-交换机,VLAN

ShiningArmor 2021-05-10 22:10 原文

0
交换机默认说有接口是不分割广播域的,也就是说即使两个设备之间相隔了多个交换机相连,也可以收到对方发的广播;导致广播泛滥;
而且很多攻击都是基于广播的,安全性得不到保障;
 
1.关于VLAN 
1)VLAN技术背景
0
 
划分VLAN,将广播域范围减小:
0
 
如图:如果不划分VLAN,将导致PC0发的广播所有的其它设备都能收到; 
0
 
2)VLAN的作用
VLAN是二层(数据链路层)技术(不涉及路由),可以用来分割广播域;
可以将一个交换机的接口分成多个广播域,分割后的VLAN之间要相互通信需要借助三层设备(路由器、三层交换机);
例如:傻瓜交换机就只创建了一个VLAN;
0
 
例如:
    下图中4个PC接同一个交换机;
    划分了两个VLAN;
    即使4台pc在同一个网段,左边的PC无法也直接ping通右边两个PC,因为想ping通需要知道mac地址,首先要发arp请求;
    不同VLAN之间隔离了广播域导致无法收到arp;
 
 
多个交换机也可以一起划分VLAN:
0
 
3)VLAN优点:
  • 有效控制广播域范围
  • 增强局域网的安全性
  • 灵活构建虚拟工作组(可以不同部门接在同一个交换机上)
  • 简化网络管理
例如:
    利用VLAN灵活构建工作组;
    如下图,三层楼都有销售部、人事部 、和ENG部
    每层楼都有一个交换机;
    通过多个交换机一起划分VLAN,可以实现根据部门来划分广播域,而不是通过地理位置;
    还能简化网络管理:比如一个部门的网络全瘫痪可以确定是VLAN除了问题、一层楼的网络全出问题时可以确定是那层楼的交换机出了问题;缩小排查故障范围;
0
 
4)VLAN概述:Virtual LAN 虚拟局域网
  • 将一个物理局域网在逻辑上划分成多个广播域
  • 1 VLAN = 1 广播域 = 1 子网 (划分最好一个子网一个VLAN)
  • 广播不会在不同VLAN间转发,而是限制在相同的VLAN中
  • 不同VLAN间的设备默认无法通信,需要借助三层设备(路由器、三层交换机)
 
VLAN范围:0~4095 (0和4095保留,1为默认)
理论上可以创建4096个VLAN;
2的12次方个,0~4095;
但头和为保留;也就是无法创建id为0和4095的VLAN;
 
5)VLAN标签
交换机之间通信时,需要知道其他交换机是否和自己在同一个VLAN,从而决定是否对其泛洪;
因此在交换机之间发送的数据帧之间会额外携带一个4字节的标签;
 
如图:
    上面是原始的数据帧(以太网帧),不带VLAN标签;
    下面是携带了Tag的数据帧;数据帧占4字节,在以太网头的SMAC(源mac)和TYPE(上层协议类型)之间;
    Tag的最后12位为VLAN ID也就是从0~4095,可以表示4096个VLAN;
    携带了VLAN tag的帧被称为:802.1q (也可被称为:dot1q) (点1q)
0
 
如图:抓包可以台以太网头看见VLAN标签(802.1q)、VLAN ID = 10 
0
 
  • IEEE 802.1q:又称dot1q,是VLAN的正式标准,对Ethernet帧格式进行修改,在源地址和类型字段中插入了4字节的802.1q tag
每台支持802.1q协议的交换机发送的数据帧都会包含VLAN ID,以指明数据帧属于哪一个VLAN。
因此,在一个VLAN交换网络中,以太网帧有以下两种格式
 
无标记帧 untagged frame
原始的数据帧,未加入4字节802.1q tag的字段
有标记帧 tagged frame
插入了4字节802.1q tag的字段
 
路由器和终端设备发送的数据帧默认是untagged frame,默认也识别不了tagged frame
有标记帧往往出现在交换机之间;
 
6)VLAN链路类型
 
类型
备注
Access Link
 接入链路
一般用于连接主机或路由器之间的链路
 
Trunk Link
干道/中继链路
一般用于连接交换机之间的链路
查看链路类型的命令:
dis port vlan
 
1】access链路
access链路传输的帧是UT的(不带VLAN标记Untagged) 
TG(Tagged)才是带标记的;
 
2】trunk链路
用于交换机之间的互联;
传输单位帧一般是带标记的(TG);
只有当接口的PVID和VLAN ID一样时才不带标记;这种情况下另一个交换机也通过PVID是否一致来判断在不在同一VLAN;
 
3】网络规划示例
如果是纯二层(数据链路层),不涉及到三层(网络层),一般像如图所示的方式规划网络;
交换机接终端的接口用Access;
交换机之间用trunk;
0
 
7)PVID:Port Vlan identification 端口VLAN标志
表示端口的默认 VLAN ID;
华为、思科的交换机PVID一般默认都是1,可以自己修改;
 
如下图:
    通过命令配置后,交换机的不通接口分别属于不同的PVID;
 
查看PVID的命令:
dis port vlan
 
修改g0/0/0端口为access:
sys
int g0/0/0
port link-type ?    #查看可选的类型
port link-type access
 
8)VLAN端口类型
VLAN端口有三种类型:
    Access    ->接入端口
    Trunk    ->干道端口
    Hybrid    ->混杂端口
 
1】Access的工作原理
access端口通常用于连接主机;
access的特点是发送和接收的数据帧通常不带标签;
 
 
Access
接入链路接收数据帧的工作过程
 
接收数据帧:
接收一个untagged的数据帧会打上接口的PVID
接收一个tagged的数据帧会比较与接口的PVID是否一致(一致接收,不一致丢弃)
Access
接入链路发送数据帧的工作过程
 
发送数据帧:
发送一个数据帧会剥离VLAN (也就是丢弃dot1q字段)
如图:
    主机A给交换机发送一个不带标签的帧(pc无法识VLAN Tag);
    交换机的G0/0/1接口收到帧,然后给帧数据添加VLAN Tag,标签的VLANID和端口的PVID一致,这里G0/0/1端口的PVID= 10;
    然后交换机找到相同PVID的端口,也就是PVID=10,的端口;也就是G0/0/3,从这个端口将帧转发出去,交给主机C;
    由于主机无法识别带VLAN标签的帧,在发送给主机C之前需要先去掉帧中的标签;
    
注意:
    access端口也可以接受带标签的帧;(具体效果待试验确认)
 
2】Trunk的工作原理:
Trunk一般用于连接交换机和交换机或连接交换机和路由器;
 
 
Trunk
干道/中继链路接收数据帧的工作过程
 
接收数据帧:
接收一个untagged的数据帧会打上接口的PVID
接收一个tagged的数据帧会查看tagged List是否存在
(存在接收,不存在丢弃)
 
Trunk
干道/中继链路发送数据帧的工作过程
(最多一个数据帧是untagged形式发送)
发送数据帧:
发送一个数据帧会查看tagged list和PVID
(tagged list表中存在则直接发送,如果PVID一致会剥离VLAN)
trunk的作用: 用来承载多个vlan的流量;
    如下图,SWA和SWB之间需要承载vlan id =1 和vlan id = 20的流量; 
    如果不用trunk,只能在SWA和SWB之间接两根线,分别用来承载两种vlan id的流量;
    也就是说vlan越多需要接的线越多;
    因此在交换机之间使用干道链路turnk,所有vlan都可以承载,前提是在允许列表中配置;

 

 

如上图:
    主机B - 主机D:
        主机B向交换机SWA发送一个不带标签的帧;
        B和SWA之间用的是access,根据access规则,该帧数据会被接口打上标签,标签的vlan id = 接口的pvid = 20;
        该帧数据会从交换机的右边接口发送给交换机SWB,交换机SWA和SWB之间使用trunk;
        根据trunk发送规则,先查交换机SWA右接口的允许列表,看是否允许vlan id = 20的流量通过;
        然后查看SWA右边端口的PVID = 1,和数据帧的vlan id不一致,因此不会剥离该帧数据的vlan标签,而是直接发送;
        数据帧被交换机SWB接收,根据trunk规则,SWB收到带标签的帧时,会查看左接口允许列表,看是否允许 vlan id = 20的流量通过;
        然后数据帧被SWB转发,通过右下接口转交给主机D;
        SWB和主机D之间是access,根据access规则, 在转发前会剥离VLAN标签;
    主机A - 主机C:
        A发送不带标签的数据帧给SWA,SWA收到后给数据帧打上标签 vlan id = 左接口pvid = 1;
        数据帧从SWA右接口转发,转发前,先查看允许列表,看是否允许 vlan id =1的数据;
        如果允许,由于交换机右接口的pvid 和 和数据帧的vlan id相等,都是 1,数据帧会被剥离vlan标签,变为无标签帧;
        交换机SWB左接口收到无标签帧,给该帧数据打上标签,vlan id = 接口pvid = 1;
        SWB转发该帧数据给主机C,和交换机之间是access链路,转发前会剥离到帧的标签;
 
trunk的允许列表:
查看trunk接口tagged List的命令:
dis p v
例如:
    g0/0/3端口的tagged list 的值为1,表示该trunk端口只允许vlan id = 1的流量通行;
如果想g0/0/3允许其他vlan id的流量通行:
port trunk allow-pass vlan 10 to 20    #允许vlan id=10~20的流量通过
port trunk allow-pass vlan all    #允许所有流量通行
删掉vlan id =1的允许列表
undo  p t a v 1
 
vlan之间互通的实例:
    交换机之间用trunk链路,交换机和pc之间用access链路;
    pc3给pc4发送数据帧;
    LSW3右接口的pvid =3,pc3的数据帧被lsw3接收,同时打上标签3,在转发到lsw4时由于pvid = vlan id,被剥离标签;
    无标签数据帧被lsw4接收,打上标签4;
    lsw4转发数据帧给pc4时剥离标签,数据帧被pc4接收;
    从pc4的回复帧到pc3同理;
    互通实现;
 
3】Hybrid 混杂接口(华为私有接口类型)
既可以连接主机和交换机也可以用作交换机之间连接;
特点:标签是否剥离完全由命令决定;
 
如图:
    主机A和主机B不可互通,但都能和服务器互通;
    为了达到这一目的,需要通过Hybrid使用命令让标签剥离;
0
 
9)VLAN转发过程
 
注意:首先要看交换机是否创建了VLAN,然后才判断是否允许VLAN通过;
例如:
    如下图,三个交换机;左边的交换机和右边的交换机都创建了Vlan 2;
    中间的交换机如果只允许Vlan2通过,依然无法实现互通;
    想要实现互通,需要中间的交换机也创建Vlan2;
 
 
交换机的工作原理:
0
 
2.VLAN配置
命令
备注
Vlan 10
创建单个VLAN
Vlan batch 10 20
创建多个VLAN
Port link-type access/trunk/hybrid
配置接口类型
Port default vlan 10
配置access关联VLAN/PVID
Port trunk allow-pass vlan 10
配置trunk允许VLAN通过(默认只允许VLAN1通过)
Port trunk pvid vlan 10
配置trunk的PVID
Port hybrid tagged/untagged vlan 10
配置hybrid标记VLAN
Port hybrid pvid vlan 10
配置hybrid的PVID
Display vlan
验证VLAN
Display port vlan
验证VLAN
Dot1q termination vid 10
子接口和VLAN关联
Arp broadcast enable
开启子接口的ARP广播功能
portswitch
配置接口工作为2层
Undo portswitch
配置接口工作为3层
 
 
 
 

推荐阅读