以前就知道 vlan 这个概念(确切地讲是 802.1q vlan)但是一直没有使用场景。最近需要用到,就试了下。具体场景就是在不同房间复用同一根网线划分不同子网。

搜到几篇“教程”和分享大多对着交换机设置界面讲 看得云里雾里 似懂非懂,所以还是得完全理解了之后才能正确配置。

知乎有2个回答比较有用:

核心就3个概念: 端口PVID,数据包tag,tagged/untagged表。根据上面这两个流程图看就明白了。

很多交换机设置里都是以 vlan 为 key 配置端口是 tagged 还是 untagged,我感觉从端口视角看会更清晰一些。

假如是 5口交换机,1,2口 vlan=100,3,4口 vlan=101,5口连接两个交换机。(交换机默认 1-5口 untagged vlan=1,此处省略)

端口 1,2 3,4 5
pvid 100 101 1
tagged 100, 101
untagged 100 101

比如:从路由器1进入交换机1口的数据包没有tag,那么交换机会给数据包打上端口1的pvid (tag=100) 然后转发, 对于当前交换机的端口2: tag=100 在自己的 untagged 列表里,所以移除 tag 后转发。 对于当前交换机的端口3: tag=100 不在自己的 tagged/untagged 列表里,所以不处理。 对于当前交换机的端口5: tag=100 不在自己的 tagged 列表里,所以直接转发。 对于另一个交换机的端口5: tag=100 在自己的 tagged 列表里,所以接受。

逻辑理顺之后,再去交换机设置界面配置起来就很容易了,不管它界面长什么样子都不会懵。