二层交换机VLAN间可以通信吗?

我们知道VLAN属于“二层”概念,VLAN之间一般情况下是不允许相互通信的,这也下是VLAN的核心用之一--隔离数据通信,减少广播传播范围。在“三层”交换机上,我们可以通信开启IP routing来达到VLAN间通信的目的,但这不在本文讨论范围之内。今天我们要谈的是,二层交换机VLAN间可以通信吗?



网络环境搭建

带着问题,我们先来搭建一个简单的网络。


网络拓扑

两台2950交换机(二层设备)均通过f0/1接口互联,2台PC,PC0连接switch0的f0/2口,PC1连接switch1的f0/2口。PC0的IP地址设置为192.168.10.1,子网掩码255.255.255.0,PC1的IP地址设置为192.168.10.2,子网掩码同样是255.255.255.0。是的,这两台PC在同一个子网里。

配置交换机

在switch0上,将f0/1和f0/2网络接口进行如下配置:


switch0关键配置

其实就是将f0/1和f0/2设置为access模式,并且归属于vlan 10。

在switch1上,将f0/1和f0/2网络接口进行如下配置:


switch1关键配置

将f0/1和f0/2设置为access模式,并且归属于vlan 20。

测试VLAN间通信

在PC0上使用PING命令,看是否能够PING通PC1。


PC0与PC1网络连接性测试

我们可以观察到从PC0上(192.168.10.1)是通过与PC1(192.168.10.2)正常通信的。按理说,PC0和PC1归属于不同的VLAN,他们之间应该不能通信才对,可偏偏,他们之间能够正常通信,似乎不太科学。

纸面分析

我们分析一下整个通信过程,PC0首先发起通信,数据包到了switch0的f0/2口,这个接口被配置为vlan 10,此时,switch0会查找有没有其它也归属为vlan 10的接口,经过查找,switch0发现f0/1口也被配置为了vlan 10,于是它将来自PC0的报文转发到了f0/1口,因为是ACCESS模式,报文并不会被打上VLAN标签,而只是单纯的转发报文(这是重点!要理解哟!)。报文通过switch0的f0/1口发送到了switch1的f0/1口,而switch1的f0/1被配置为vlan 20,因为这是一个普通的报文(未被打上任何VLAN标签),它会将这个报文归属为vlan 20,并且也不会给报文打上VLAN标签,此时switch1只是寻找在设备上其它归属为vlan 20的端口并转发该报文,经过查找,switch1发现f0/2口归属于vlan 20,于是就将报文转发到了f0/2口,而f0/2口接的是PC1,此时PC1正常接收到了来自PC0的报文,经过处理,PC1将报文返回到f0/2口,交换机再次重复进行前面分析的步骤,最终报文回到了PC0上,完成了一次PC0和PC1的交互通信。这就是二层交换机上VLAN间能够通信的秘密。

通过上述分析,我们得到了答案,二层交换机VLAN间是有办法通信的,前提是通信双方要配置为一个网段,并且都得使用ACCESS模式(只有这种模式不会给报文打上VLAN标签)。通过这个例子,希望能够加深大家对VLAN间通信的理解,如果能让看官们有所收获,那么,本文就有了价值。