VLAN/理解 VLAN

https://www.zhihu.com/question/51675361/answer/127319076
车小胖

发现一个规律,凡是带V(Virtual )的技术,包括 VLAN、VRF、VPN、vSwitch、VMWare,很多人理解起来很吃力,Virtual 中文意思是虚拟,既然是虚拟技术,则需要一点抽象思维。

比如电信公司一台物理路由器,希望将这台路由器逻辑分割成100台虚拟路由器vRouter,每台vRouter给一个客户公司提供服务,每台vRouter分别与客户公司路由器交换路由表,并将客户路由表保存在一个独立的容器中,这个容器就是VRF,则有如下的对应关系:

Customer 1 ----- vRouter1 ---VRF1

Customer 2 ----- vRouter2 ---VRF2

Customer 100 ---vRouter100---VRF100

既然VRF之间是逻辑隔离的,那客户的路由信息就是逻辑隔离的,井水不犯河水,即使客户公司都使用相同的IP地址段,如 10.0.0.0/8 也不会引起歧义,一般vRouter也无法直接通信,所以安全性高。

绕了一大圈热身,其实是想自然过渡到这个问题的本身。先来看看没有VLAN概念(不懂VLAN为何物)的交换机如何工作?

假设是一台24口交换机,连着24台PC,其中有12台是位于1.1.1.0/24网段,另外12台位于 2.2.2.0/24 网段。

则任何关于1.1.1.0/24网段的ARP广播请求到达交换机,交换机会将广播请求发给其它23个端口,其中有12台位于2.2.2.0/24 网段的PC同样也可以收到,然后它们的ARP模块会一脸懵逼,不知所措,愤愤然丢弃。

以上情况就是不同网段在没有VLAN隔离情况下的互相干扰,一方面干扰大,资源浪费;另一方面也不安全,完全可以用ARP Spoofing欺骗另一个网段的主机,实现流量黑洞。

既然没有VLAN的世界不太平,那就引入VLAN到二层交换机吧。同理,也是类似将一台物理交换机逻辑分割成多个虚拟交换机vSwitch(对应一个VLAN),然后将客户PC的MAC地址放在一个容器内,这个容器就是VLAN,其对应关系为:

PC ---- vSwitch ----VLAN

至于哪个PC连着哪个端口,属于哪个vSwitch,由交换机端口配置而成。

那再使用刚才的场景,假定交换机VLAN 10 连着12台PC,同时有一个trunk口连接其它交换机,VLAN 10 里的PC使用 1.1.1.0/24 网段,则一个ARP广播请求会发给多少个端口?(12 -1)+ 1 = 12 ,记住一点,trunk口缺省状态下属于任何VLAN,所以属于VLAN 10 一共有13个端口,去掉一个发送端口,则剩下12个接收端口。

一个VLAN对应一个网段,或者一个网段对应一个VLAN,对于初学者这些知识足够了。

但世界是复杂的,总有例外,如果一个VLAN内有多个网段的PC,网段之间的广播还会互相干扰,那要VLAN又有何意义?此外这种情况不同网段还是需要三层交换机或路由器的帮助才可以通信,所以没有任何意义。

一个网段可以有不同的VLAN,这种一般借助外部的桥接设备将两个VLAN搭接在一起,虽然是两个VLAN,但是是一个广播域,网段内(不同VLAN)可以直接通信。

比如一个交换机vlan10 是客户端,vlan 20 是服务器,它们的IP地址是一个网段,有一台桥接设备一个接口在 vlan 10,另一个接口在vlan 20,客户端和服务器可以直接发ARP广播请求,发现对方的MAC,从而实现通信,为何要这样啊?因为桥接设备要监控客户端与服务器的所有流量啊!

编辑于 2016-10-20


Last update: 2018-05-18 01:56:21 UTC