VLAN 配置其实是非常简单的,但是想要学得比较精还是需要花费一些功夫的,根据不同的 VLAN 划分方式用不同的配置方法,但其实配置方法基本上都大同小异。
下面就以在实际网络中最常用的基于接口划分 VLAN 的方式来了解一下 VLAN 的内容。基于接口的 VLAN 划分依赖于交换机的接口类型。以太网中的二层接口类型分为了 Access 接口、Trunk 接口、Hybrid 接口,对于这些接口的用法后面会单独再写一个详细的讲解。
注:VLAN 主要工作在 OSI 七层参考模型中的第二层,也就是数据链路层
基于接口划分 VLAN 是最简单、最有效、同时也是用的最多的 VLAN 划分方法。
基于接口划分 VLAN 的方式实际上就是根据设备的接口来定义 VLAN 成员。
将接口加入到指定 VLAN 中之后,接口就可以转发该 VLAN 的报文,从而实现同一个 VLAN 内的主机可以直接互相通信(或者说是互相访问,即二层互访),而不同的 VLAN 之间的 PC 是不能直接互相通信的,就将广播报文限制在一个 VLAN 之内。
只是单纯的根据理论去理解的话,效果很差,所以还是通过具体实验来学习会好理解的多。
注:在进行如下 VLAN 配置实验的时候,并不涉及跨网段的通信,所以 PC 上面配不配置网关都可以。
PC 的 IP 以及子网掩码如下图所示:
交换机 sw1 配置:
<Huawei>system-view //进入系统视图
[Huawei]sysname sw1 //设备重命名为 sw1
[sw1]vlan batch 10 20 //批量创建 VLAN,这里创建 VLAN 10 和 VLAN 20
[sw1]interface g0/0/2 //进入 G0/0/2 端口
[sw1-GigabitEthernet0/0/2]port link-type access //将该端口类型设置为 Access 接口
[sw1-GigabitEthernet0/0/2]port default vlan 10 //将该端口加入 VLAN 10
[sw1-GigabitEthernet0/0/2]quit //退出该接口
[sw1]interface g0/0/3 //进入 G0/0/3 端口
[sw1-GigabitEthernet0/0/3]port link-type access //将该端口类型设置为 Access 接口
[sw1-GigabitEthernet0/0/3]port default vlan 20 //将该端口加入 VLAN 10
[sw1-GigabitEthernet0/0/3]quit //退出该接口
交换机 sw2 配置:
<Huawei>system-view //进入系统视图
[Huawei]sysname sw2 //设备重命名为 sw2
[sw2]vlan batch 10 20 //批量创建 VLAN
[sw2]int g0/0/2 //进入 G0/0/2 端口
[sw2-GigabitEthernet0/0/2]port link-type access //将该端口类型设置为 Access 接口
[sw2-GigabitEthernet0/0/2]port default vlan 10 //将该端口加入 VLAN 10
[sw2-GigabitEthernet0/0/2]quit //退出该接口
[sw2]int g0/0/3 //进入 G0/0/3 端口
[sw2-GigabitEthernet0/0/3]port link-type access //将该端口类型设置为 Access 接口
[sw2-GigabitEthernet0/0/3]port default vlan 20 //将该端口加入 VLAN 20
[sw2-GigabitEthernet0/0/3]quit //退出该接口
允许 VLAN 通过可以使用 Trunk 接口或者 Hybrid 接口来进行配置,这里就用 Trunk 接口来进行演示
交换机 SW1 配置:
[sw1]int g0/0/1 //进入 G0/0/1 端口
[sw1-GigabitEthernet0/0/1]port link-type trunk //将该接口类型设置为 Trunk 接口
[sw1-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20 //允许 VLAN 10 和 VLAN 20 通过
[sw1-GigabitEthernet0/0/1]quit //退出该接口
交换机 SW2 配置:
[sw2]int g0/0/1 //进入 G0/0/1 端口
[sw2-GigabitEthernet0/0/1]port link-type trunk //将该接口类型设置为 Trunk 接口
[sw2-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20 //允许 VLAN 10 和 VLAN 20 通过
[sw2-GigabitEthernet0/0/1]quit //退出该接口
由于 PC1 和 PC2 处于不同的 VLAN 中,不同 VLAN 之间相互隔离
所以即便 PC1 和 PC2 都是通过同一台交换机连接的,却也是目标主机不可达(Destination host unreachable)的状态
同样的 PC3 和 PC4 也是属于不同的 VLAN,所以即便都是连接在同一台交换机上,它们之间也是相互隔的
PC1 和 PC3 都属于 VLAN 10,即便它们之间跨了几台设备,PC1 和 PC2 之间也是可以进行互相通信的
PC2 和 PC4 都属于 VLAN 20,所以它们之间也是可以互相通信的
先使用 Wireshark 抓包工具抓一下交换机 SW1 的 G0/0/1 端口,再使用左边蓝色区域的 PC 去 ping 右边红色区域的 PC,观察一下 VLAN 的数据包。
PC1 发出的报文中打上了 VLAN ID = 10 的标签,代表它属于 VLAN 10
PC1 的报文发出之后,对端设备会先检查自己的 VLAN ID 是否和 PC1 发出的报文中 VLAN ID一致:
实际上 VLAN 也就是通过这种方式来进行隔离和通信的了
在 VLAN 的数据帧中主要有 PRI、DEI、ID 三个字段
- PRI:Priority 优先级
- DEI:Drop Eligible Indicator,丢弃优先级指示。一般配合 PRI 字段使用,共同指示帧的丢弃优先级,也就是系统发生了拥塞时,这些报文会被优先丢弃。
- ID:表示 VLAN ID
注:数据包要有去有回才是完整的,也就是数据一定要有去有回才可以 ping 通
下面这个就是 PC3 给 PC1 回复的数据报文
同样的也是在 PC3 的报文中打上了 VLAN ID = 10 的标签,代表它属于 VLAN 10
PC2 发出的报文中打上了 VLAN ID = 20 的标签,代表它属于 VLAN 20
PC4 给 PC2 回复的数据报文
使用 Wireshark 抓包工具去同时抓一下交换机 SW2 的 G0/0/2 和 G0/0/3 两个端口,也就是交换机 SW2 就连接 PC 的两个端口,再使用 PC1 去 ping PC2
G0/0/2 端口抓包情况:
可以看到 G0/0/2 端口会收到一个 ARP 的广播报文,用来询问谁是 192.168.10.30
当 192.168.10.30 这台设备收到对应的 ARP 广播之后,就会把自己的 MAC 地址告诉给对应的设备
注:在二层通信中必须知道对方的 MAC 地址,通过 MAC 地址去找到对应的设备才可以进行通信
G0/0/3 端口抓包情况:
可以看到 G0/0/3 端口除了一些 STP 生成树的报文之外,并没有收到 ARP 的广播。
即便 G0/0/2 和 G0/0/3 都是属于同一台交换机上的端口,但由于 VLAN 的原因,不同的 VLAN 之间还是把广播域隔离开了,也就是 VLAN 中比较重要的作用之一。
通过上面的端口现象我们可以得出如下的结论:
如果文章对各位小伙伴有帮助的话欢迎三连!!!
另外,文章如有错误之处,也欢迎各位大佬批评指正!!!