前几日,在群里看见了有人问这样的问题,小朱觉得这个问题考察了我们对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。我们做个实验来看看。
![51d53e85601304dd44bb972d488638e3.png](https://i-blog.csdnimg.cn/blog_migrate/53746d6cde373e7f0ce7a5dd6128bfd4.png)
拓扑图上,SW2和SW3的E0/1接口为VLAN 10的access接口,E0/0为trunk接口,默认情况下,经过trunk的数据包会携带tag标签。
![7b0289e4c4f113241a7596d2445d0ec4.png](https://i-blog.csdnimg.cn/blog_migrate/c9b527db408219d908d955ee75c03646.png)
我在SW2的E0/1接口上抓包,可以看到VLAN 10的802.1Q标签。
![91dd838920d49b78668b7c28fd934b9b.png](https://i-blog.csdnimg.cn/blog_migrate/b0fc0fba08e6b49c85bee91953a6c631.jpeg)
接下来我把SW2和SW3的E0/0接口的native VLAN设置为VLAN 10 和VLAN 20,并且SW2和SW3只允许VLAN 10 和 VLAN 20 通过。
![34df87044921dff343d599432dd24624.png](https://i-blog.csdnimg.cn/blog_migrate/fafae5e6e29e955e6262601bf724d70f.jpeg)
我们还是在SW2的E0/0接口抓包,在PC9上pingPC10,发现没有802.1Q的标签了。
![68f5a1ca6c7959ac77e1bacc3c7f8f5f.png](https://i-blog.csdnimg.cn/blog_migrate/2450a9a0f6ea1979baf0c0a6ddaafd2d.jpeg)
没有了802.1Q的标签,我们就能打通属于两个不同的VLAN ,使两个VLAN里面的PC相互通信。
接下来我们做一下第二种办法。
![1ff9ba3bfa56b1a8a10692e442b96090.png](https://i-blog.csdnimg.cn/blog_migrate/7ef291f56e6425e5da0c9fe97d95ab00.png)
交换机的端口有三种类型,分别是access,trunk和dynamic。
access接口一般用于下联终端设备。当access接口收到不带VLAN tag的报文,则加上端口的PVID,当收到带VLAN tag的报文时,直接丢弃。
当access接口向主机发送帧时,会去掉802.1q的tag头部,发送普通的以太网帧给头部。
![fbf565c16e526c441a9864ba13eec0fe.png](https://i-blog.csdnimg.cn/blog_migrate/fe45638d039ea7b4c411d5c27dca8493.jpeg)
这样,我们的两种办法就都完成了。
值得一提的是,我们的办法一可以用办法二的拓扑图,办法二也可以用办法一的拓扑图,大家可以想一想,这是怎么实现的。