交换机默认说有接口是不分割广播域的,也就是说即使两个设备之间相隔了多个交换机相连,也可以收到对方发的广播;导致广播泛滥;
而且很多攻击都是基于广播的,安全性得不到保障;
1.关于VLAN
1)VLAN技术背景
划分VLAN,将广播域范围减小:
如图:如果不划分VLAN,将导致PC0发的广播所有的其它设备都能收到;
2)VLAN的作用
VLAN是二层(数据链路层)技术(不涉及路由),可以用来分割广播域;
可以将一个交换机的接口分成多个广播域,分割后的VLAN之间要相互通信需要借助三层设备(路由器、三层交换机);
例如:傻瓜交换机就只创建了一个VLAN;
例如:
下图中4个PC接同一个交换机;
划分了两个VLAN;
即使4台pc在同一个网段,左边的PC无法也直接ping通右边两个PC,因为想ping通需要知道mac地址,首先要发arp请求;
不同VLAN之间隔离了广播域导致无法收到arp;
多个交换机也可以一起划分VLAN:
3)VLAN优点:
- 有效控制广播域范围
- 增强局域网的安全性
- 灵活构建虚拟工作组(可以不同部门接在同一个交换机上)
- 简化网络管理
例如:
利用VLAN灵活构建工作组;
如下图,三层楼都有销售部、人事部 、和ENG部
每层楼都有一个交换机;
通过多个交换机一起划分VLAN,可以实现根据部门来划分广播域,而不是通过地理位置;
还能简化网络管理:比如一个部门的网络全瘫痪可以确定是VLAN除了问题、一层楼的网络全出问题时可以确定是那层楼的交换机出了问题;缩小排查故障范围;
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)
如图:抓包可以台以太网头看见VLAN标签(802.1q)、VLAN ID = 10
- 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;
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使用命令让标签剥离;
9)VLAN转发过程
注意:首先要看交换机是否创建了VLAN,然后才判断是否允许VLAN通过;
例如:
如下图,三个交换机;左边的交换机和右边的交换机都创建了Vlan 2;
中间的交换机如果只允许Vlan2通过,依然无法实现互通;
想要实现互通,需要中间的交换机也创建Vlan2;
交换机的工作原理:
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层 |