native vlan 实验及抓包测试

简介

交换机(Switch)是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。
也许目前的云计算时代,这些底层的东西许多公司不再需要自己管理了。或者者是更多的通过虚拟交换机隔离网络。即使是虚拟交换机,如 OVS ,也是在当前硬件交换机功能的基础上进一步完善的,通过软件虚拟出相关功能。
最近在工作中需要使用交换机构建网络进行一些功能测试,在配置网络时因为 native vlan 导致了一些问题,本文将介绍一些交换机及网络相关知识,然后进行一些实验验证 native vlan 的作用。

一些交换机的知识

三层交换机 : 一层转发物理层协议。二层可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中,转发数据链路层协议。三层带有部分路由功能,可以转发网络层 IP 报文。

ARP 协议:地址解析协议,根据 IP 协议获取物理层地址(MAC)的一个 TCP/IP 协议。

VLAN: 虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样。

VLAN IP 的意义 :为了能够远程管理控制这台交换机。如使用 telnet 连接到交换机。

[BUG] 命令 switchport trunk allowed vlan all : 允许所有 vlan 流量通过(默认)。但是 gns3 模拟测试发现需要本地交换机的 vlan database 中存在对应的 vlan ,而不是所有未知的 vlan ,这个也有可能是 GNS3 模拟器或者交换机版本的问题.

广播风暴 : 一个数据帧或包被传输到本地网段 (由广播域定义)上的每个节点就是广播。广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪,这就发生了“广播风暴”。

交换机端口的三种链路类型
Access : 只能属于一种 vlan, 与计算机终端连接,进入的报文加上 tag ,出去的报文去掉 tag.
Hybrid: 混合模式, Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。
Trunk: 主要用于交换机之间连接。可以允许多个VLAN通过,可以接收和发送多个VLAN的报文。

Native Vlan: 用于 trunk 链路,如果进入 trunk 时是没有标记的,则trunk会给它加上 native vlan。原理如下:

1) 报文入端口时:对于没有vlan的报文,trunk端口把这些报文标记为带native vlan的报文
2) 报文入端口时,对于有vlan的报文,根据规则转发而不做处理。
3) 报文出端口时,对于没有vlan的报文,trunk端口将这些报文标记为带native vlan的报文
4) 报文出端口时,对于有vlan的报文,trunk端口检查报文的vlan是否与native vlan相同,
    如果相同,则剥掉vlan,以untag的形式在线路上传播;
    如果不同,则检查是否在allowed vlan list里面,如果在,在原封不动的转发报文,
    如果不在,在丢弃报文

PVID: Port-base Vlan ID ,是端口的属性,一个端口可以属于多个vlan,但是只能有一个PVID。
VID: 是VLAN的标识,在交换机里面用来划分端口 。
PVLAN: 私有VLAN(Private VLAN),“专用虚拟局域网”。
802.1Q协议 : IEEE于1999年颁布的用以标准化VLAN实现方案的IEEE 802.1Q协议标准草案。

Vlan tag 是如何工作的?
1> PC 无法识别 tag ,交换机可以识别 tag
2> 当交换机收到数据帧即将转发时,查看pvid,若转发的数据帧的tag和pvid相同,那么交换机就去掉tag标签进行转发;若转发的数据帧的tag和pvid不相同,那么交换机就带上相应的tag标签进行转发。这也就是交换机trunk链路的转发过程。说专业点就是trunk链路可以转发一个不带tag标签的数据帧和多个带标签的数据帧。
3> wireshark 无法查看到 tag 信息,可以将数据包保存到文件后,通过 tcpdump -e 查看到 tag 信息。

交换机 vlan 及 trunk&&native vlan 实验

实验环境 :本文 GNS3 + VMware 模拟思科交换机的拓扑,进行相关实验。若使用 CPT (Cisco Packet Tracer) 模拟器,则无法抓取到报文,与真实环境相差较多,这里建议模拟环境使用 GNS3 。

实验一,trunk 链路测试:

native vlan 实验及抓包测试_第1张图片
两个 vlan 10 的 PC 可以通信,监控 trunk 链路可以看到报文携带 vlan 10 的 tag.

实验二,native vlan 测试与抓包分析:

native vlan 实验及抓包测试_第2张图片
1. 当在其中一个交换机的 trunk 口上配上 native vlan 10 , 两个 PC 将无法 ping 通.
2. 实际上通过抓包可以发现,报文可以从 PC2 发送到 PC1 ,但是从 PC1 无法发到 PC2(也就是收不到回复报文) 。这是由于 PC1 -> PC2 的过程中, 左边交换机的 trunk 口的 native vlan 与 报文 tag 相同,出去的流量将被剥掉 tag ,所以 PC2 无法收到报文。
3. 将 PC2 所连端口设置为 vlan 1 (默认 tag) 则可以 ping 通。原因参考 native vlan 的原理。

抓包分析,上述拓扑图,监控两个交换机(IOU1、IOU2)之间 trunk 链路的流量,依次进行下述步骤:
1. 清除 PC1 和 PC2 的 arp 表,从 PC1(1.1.1.11) ping PC2 (1.1.1.12) ;
2. 清除 PC1 和 PC2 的 arp 表,从 PC2 (1.1.1.11) ping PC1 (1.1.1.12) :
3. 筛选此时的 arp 报文如下:
这里写图片描述
可以看到,第一步时 arp 协议没有找到 PC2 的 MAC 地址,而第二步的时候找到了 PC1 的报文,但 PC2 并没有收到 arp 的回复报文,仍然发送了三次 ARP 报文。第二步的结果是 PC1 存储了 PC2 的 MAC 地址。
4. 不清除 arp 表(注意与第二步的时间间隔,arp 表条目具有时效),再次从从 PC1(1.1.1.11) ping PC2 (1.1.1.12) , 筛选此时的 ICMP 报文如下:
这里写图片描述
可以看到 PC1 因为有 PC2 的 MAC 地址,这次发出了 ICMP 报文,但 PC1 并没有收到 PC2 的回复报文。

实验三,native vlan 跳跃攻击:

native vlan 实验及抓包测试_第3张图片
如上图,拓扑图 3 所示,属于两个不通 vlan 的 PC 可以 ping 通,这就是 native vlan 的跳跃攻击。其原理参照 native vlan 的原理即可。

https://blog.csdn.net/ixidof/article/details/7858327 [802.1Q VLAN技术原理]
https://blog.csdn.net/misterdo/article/details/48708843 [PVID和VID详解]

你可能感兴趣的:(c/c++,网络,云计算,交换机,SDN)