前几日,在群里看见了有人问这样的问题,小朱觉得这个问题考察了我们对VLAN理论知识的理解,是一个很不错的问题,决定把这个问题做一次解答。
VLAN是Virtual LAN的缩写,所以一个VLAN就是一个局域网,是一个广播域。仅使用二层交换机就要想属于不同VLAN的PC相互通信,小朱做出来以下2个办法。
办法一:利用Native VLAN不带标签的特性。
Native VLAN,翻译为本征VLAN,针对trunk链路而言。默认经过trunk链路的VLAN中会携带tag标签,但是早期一些设备不支持VLAN,并且STP等协议也不能打tag标签,为了兼容这些设备和协议,引入了Native VLAN的概念,所以Native VLAN经过trunk链路默认不打tag标签。注意:如果我们想要经过trunk的native VLAN也打上标签,可在全局下输入:VLAN dot1qtag native。我们做个实验来看看。
拓扑图上,SW2和SW3的E0/1接口为VLAN 10的access接口,E0/0为trunk接口,默认情况下,经过trunk的数据包会携带tag标签。
我在SW2的E0/1接口上抓包,可以看到VLAN 10的802.1Q标签。
接下来我把SW2和SW3的E0/0接口的native VLAN设置为VLAN 10 和VLAN 20,并且SW2和SW3只允许VLAN 10 和 VLAN 20 通过。
我们还是在SW2的E0/0接口抓包,在PC9上pingPC10,发现没有802.1Q的标签了。
没有了802.1Q的标签,我们就能打通属于两个不同的VLAN ,使两个VLAN里面的PC相互通信。
接下来我们做一下第二种办法。
交换机的端口有三种类型,分别是access,trunk和dynamic。
access接口一般用于下联终端设备。当access接口收到不带VLAN tag的报文,则加上端口的PVID,当收到带VLAN tag的报文时,直接丢弃。
当access接口向主机发送帧时,会去掉802.1q的tag头部,发送普通的以太网帧给头部。
这样,我们的两种办法就都完成了。
值得一提的是,我们的办法一可以用办法二的拓扑图,办法二也可以用办法一的拓扑图,大家可以想一想,这是怎么实现的。