APP下载

抓包法深度解析VLAN

2018-11-07

网络安全和信息化 2018年8期
关键词:PC机路由器交换机

VLAN(虚拟局域网)是一种常见的二层交换技术,在局域网中用于实现缩小广播域、减少广播风暴、实现同一物理网络的逻辑隔离、提高网络的安全性等组网需求,在实际的网络工程中有大量应用。

在单交换机中实现VLAN技术,对于很多的初学者而言应该是比较简单的,但一涉及到多交换机间的VLAN通讯、不同网段及不同VLAN间的路由、Native VLAN、Private VLAN等稍为复杂些的应用,很多的学习者就有些模糊不清,究其原因,还是对VLAN的工作机制、相关协议特点不清楚。下面通过抓取不同设备间的协议包来分析VLAN的工作原理,以提供对VLAN技术更清晰的认识。

图1 两种协议的帧结构

图2 VLAN配置

VLAN技术有两种实现协议,分别是IEEE802.1Q和ISL。其中IEEE802.1Q是国际标准,所有厂商的设备都支持,而ISL是Cisco私有协议,仅Cisco的产品支持。VLAN的实现方式有多种,基于交换机端口、基于用户的MAC等,而其中基于交换机端口划分VLAN是最常见的一种实现形式,所以,下面以IEEE802.1Q协议、以基于交换机端口的VLAN为例来抓取相应的数据包。

首先我们来看看,从Ethernet协议到IEEE802.1Q协议数据帧的结构变化,如图1所示。由图可以看出,从Ethernet到IEEE802.1Q就是在帧中插入了一个四字节TAG标记,这个标记由TPID和TCI两部分构成。TPID固定为0x8100,标识该帧是一个打了TAG标记的Ethernet帧,而TCI则是TAG控制信息,包括用户优先级、范式指示器、VLAN ID值等,CRC字段是把TPI、TCI与原帧进行重新运算而得。

下面通过一个拓扑的两种配置来说明VLAN的工作原理,如图2所示。

第一种配置,switch0的 f0/1、f0/2口和switch1的f0/1、f0/2口都是Access类型,且都在VLAN100中。这种情况下,不管是抓取PC机到交换机的数据包,还是抓取交换机到交换机的数据包,包的结构都如图3所示。由数据的帧结构可以看出,这是一个典型的Ethernet帧,没有任何TAG标签,似乎跟创建的VLAN100无任何关系。

其实不然,这个结果正是VLAN的基本工作原理:来自PC机的数据是普通的Ethernet数据,当这个数据进入到一个创建了VLAN的交换机后,交换机根据进入的接口所在的VLAN ID给数据打标签,形成Ethernet802.1Q数据帧,这个打了标签的数据帧会广播到该交换机的所有同VLAN ID的接口中,不在同一VLAN ID的接口则不能收到这个数据帧,从而起到对物理接口的逻辑隔离作用。收到Ethernet802.1Q数据帧的Access接口在把数据往下转发之前会去掉标签,将数据还原成普通的Ethernet数据帧再送出去,所以抓到的数据帧看不到标签。

图3 未打标签的数据帧

图4 带标签的数据帧

如果一台交换机上有多个VLAN,这种配置就满足不了组网需求了,实际工程中也经常是一台交换机上有多个不同VLAN。

第二种配置情况,其他不变,将switch0和switch1相连的接口由Access类型改为Trunk类型,允许所有VLAN或指定的某些VLAN通过,再来抓包。这时,抓取的PC机到交换机的包仍然还是普通的Ethernet包,但抓取的交换机到交换机的包,即两个Trunk口之间的包,则变成如图4所示的结构。图中虚框内部分即IEEE802.1Q的 4字 节 标 签,0x8100即TPID,TCI为 0x64,将其转换成十进制为100,刚好就是交换机上VLAN100的ID值。这说明,交换机的Trunk口能保留VLAN的Tag信息,将其传送到对端Trunk口后,对端Trunk口根据VLAN ID值将数据帧送到确定的VLAN。因为Trunk口能携带VLAN Tag,从而让跨交换机相同VLAN间的通信成为可能,扩大了VLAN的范围。

根据以上两种情况得出结论,在配置了VLAN的环境中有两种数据帧在流动——不带标签的Ethernet帧和带标签的IEEE802.1Q帧,不带标签的Ethernet帧从交换机的Access口流出,带标签的IEEE802.1Q帧用于交换机内部进行数据走向的判定及从Trunk口流出。把这种数据流的走向及特点弄清楚之后,对于各种类型的VLAN技术就比较好理解。

例如对于Native VLAN,作为Trunk口一个属性,决定了两个问题:一是Trunk口收到未打标的数据帧,会往该接口指定的Native VLAN发送;二是收到来自该接口Native VLAN的数据帧,会去掉IEEE802.1Q的标签再往下转发。对于用路由器实现VLAN间的路由,一定要将路由器的物理接口划分成多个逻辑子接口,然后在子接口上封装802.1Q协议,让接口能识别打了标签的数据帧才可。

所以,VLAN技术的本质就是数据包进入了VLAN环境后,通过加标签来对数据帧进行逻辑隔离,加入的标签什么时候带着走,什么时候剥离,由交换机的端口类型来决定。路由器的端口要识别加了标签的数据帧,必须通过在子接口上手工来封装802.1Q协议来实现。

猜你喜欢

PC机路由器交换机
买千兆路由器看接口参数
维持生命
路由器每天都要关
路由器每天都要关
基于地铁交换机电源设计思考
修复损坏的交换机NOS
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
缔造工业级的强悍——评测三旺通信IPS7110-2GC-8PoE工业交换机
VC.NET下实现dsPIC单片机与PC机的通信
基于单片机与PC机的电气量采集系统设计