尝试VLAN
以前就知道 vlan 这个概念(确切地讲是 802.1q vlan)但是一直没有使用场景。最近需要用到,就试了下。具体场景就是在不同房间复用同一根网线划分不同子网。
搜到几篇“教程”和分享大多对着交换机设置界面讲 看得云里雾里 似懂非懂,所以还是得完全理解了之后才能正确配置。
知乎有2个回答比较有用:
- 《交换机 tagged/untagged与access/trunk有什么关系? - Bcaso的回答》:个人经验之谈
- 《交换机Vlan中 tagged和untagged的区别 ? - 爱上你的凶的回答》:其中有个图就把核心逻辑给讲清楚了
核心就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 列表里,所以接受。
逻辑理顺之后,再去交换机设置界面配置起来就很容易了,不管它界面长什么样子都不会懵。