Private vlan与native vlan
Private vlan的产生背景
Private vlan又被称为私有vlan
在super vlan中,开启ARP代理后,可以做到sub vlan互通的效果,但是在某些场景中,我们想做到让部分vlan之间可以通信,让部分vlan之间不能通信
我们称这种现象为二层隔离
而Private vlan就能很好地做到这一点,如下图,我们可以使得vlan 10①与vlan 20即便是开启ARP代理,但还是无法通信,达到了vlan间二层隔离的效果
上述说的现象是vlan间二层隔离,但还有一种二层隔离Private vlan也能够做到,那就是vlan内的二层隔离
vlan内部二层隔离最明显的现象就是vlan 10①与vlan 20②即使同为一个vlan,但还是无法进行通信

总结:Private vlan在原本super vlan节约IP地址的基础之上,做到了两点super vlan做不到的内容
1、当super vlan开启ARP代理之后,会使得vlan 10与vlan 20的vlan间通。对于Private vlan正好恰恰相反,Private vlan可以使得vlan 10与vlan 20即使在开启了ARP代理之后,也不能互相通信,从而起到二层隔离的效果
2、Private vlan与之不同的是,可以使得vlan内部起到二层隔离的效果,如刚刚所说的vlan 10①与vlan 20②即使同为一个vlan,但还是无法进行通信
Private vlan的概述
Private vlan 将一个通过将vlan的广播域划分了多个子域,而子域又是由一对Private vlan对组成的
这一对Private vlan对由主vlan(Primary vlan)和辅助vlan(Second vlan)组成
在一个Private中只有一个Primary vlan,辅助vlan分为隔离vlan(isolated vlan)和团体vlan(community vlan)两种

隔离vlan(isolated vlan)
在上面我们提到过Priate vlan可以做到vlan内部二层隔离的效果,该效果就是由隔离vlan进行的
配置隔离vlan后,隔离vlan内的主机之间也是不能通信的,但是可以与主vlan进行通信,主vlan就相当于其网关
在整个Private vlan中就只能存在一个隔离vlan(isolated vlan)

团体vlan(community vlan)
在团体vlan中,完完全全地将二层的广播域给分离开了,使得vlan与vlan之间无法进行通信,但vlan内部还是可以进行通信的
如下图,PC1/PC2无法与PC3进行通信,但是PC1却可以与PC2进行通信
想必大家也已经看到了,community vlan不像隔离vlan那样,在整个Private vlan中只能存在一个,与其相反的是,Private vlan中可以存在多个团体vlan

辅助vlan总结
一个Private vlan对分为隔离vlan(isolated vlan)和团体vlan(community vlan)
隔离vlan使得vlan内二层隔离,团体vlan使得vlan间二层隔离
一个Private vlan域中只能由一个隔离vlan,可以有多个团体vlan
为什么一个Private vlan域中只能有一个isolated vlan呢?因为两个isolated vlan没有任何的意义
如vlan 10和vlan 20都是isolated vlan的话,因为放在commuity vlan中vlan 10和vlan 20本身就不能通信,这就使得存在多个的isolated vlan没有任何意义
Private vlan经典拓扑
如下图,通过我们刚刚认识到的isolated vlan和community vlan ,我们应该可以了解到下图中各个PC能域谁通信
因为community vlan可以达到vlan间二层隔离的效果,所以我们可以知道PC1与PC3是无法通信的,但是community vlan阻止不了vlan内部的通信,所以说,PC1和PC2还是可以通信的,依次类推,PC5和PC6还是可以通信的。
PC7和PC8所在的vlan是isolated vlan,因为isolated vlan是能够达到vlan内部二层隔离的效果,所以PC7与PC8是无法通信的
重点:无论是community vlan还是isolated vlan,它们都是可以和主vlan通信的,因为主vlan上联的就是各个PC的网关,也可以理解为主vlan就是各个vlan的网关

Private vlan绑定的端口类型
如果将主vlan和辅助vlan细分,那么将会产生三种vlan的类型,1、主vlan(primary vlan),2、隔离vlan(isolated vlan),3、群体vlan(community vlan)
vlan总是会被绑定到端口上,所以哪些被绑定的端口,也有它们的名字
1、主vlan 对应的端口叫混杂端口 ,2、隔离vlan 对应的端口叫做隔离端口 ,3、团体vlan 对应的端口叫做团体端口

Private vlan的应用场景
如下图,我们可以达到控制相同类型的服务可以互相访问,而不同类型的服务器不能互相访问
就只需要将HTTP server放在同一个community vlan中,而DNS server与DHCP server则放在isolated vlan中

Private vlan的配置以及实验

PC机基础IP配置省略
Private vlan也是vlan,所以在配置的第一步,我们应该先将所需要的vlan给创建好
在SW1上
创建vlan 10,20并配置它们为community vlan
SW1(config)#vlan 10
SW1(config-vlan)#private-vlan community
SW1(config-vlan)#ex
SW1(config)#vlan 20
SW1(config-vlan)#private-vlan community
SW1(config-vlan)#ex
创建vlan 30并配置vlan 30为隔离vlan
SW1(config)#vlan 30
SW1(config-vlan)#private-vlan isolated
SW1(config-vlan)#ex
创建vlan 2并配置vlan 2为主vlan
SW1(config)#vlan 2
SW1(config-vlan)#private-vlan primary
SW1(config-vlan)#ex
创建完主vlan后,主vlan又怎么知道与它关联的辅助vlan呢,这就需要我们的配置了
SW1(config)#vlan 2
SW1(config-vlan)#private-vlan association 10,20,30,2
将vlan划入到端口中,与将端口配置access口不同的是,我们还需要配置端口关于Private vlan的属性。Private vlan的属性就是该端口是混杂端口、隔离端口、群体端口,三选一
SW1(config)#int range g0/1-2
SW1(config-if-range)#switchport mode private-vlan host
SW1(config-if-range)#switchport private-vlan host-association 2 10 //将该端口加入团体vlan 10
SW1(config-if-range)#ex
SW1(config)#int range g0/1-2
SW1(config-if-range)#switchport mode private-vlan host
SW2(config-if-range)#switchport private-vlan host-association 2 20 //将该端口加入团体vlan 20
SW2上
创建vlan 2并配置vlan 2为主vlan
SW2(config)#vlan 2
SW2(config-vlan)#private-vlan primary
SW2(config-vlan)#ex
创建vlan10,并配置vlan 10为community vlan
SW2(config)#vlan 10
SW2(config-vlan)#private-vlan community
SW2(config-vlan)#ex
创建vlan20,并配置vlan 20为community vlan
SW2(config)#vlan 20
SW2(config-vlan)#private-vlan community
SW2(config-vlan)#ex
创建vlan 30,并配置其为isolated vlan
SW2(config)#vlan 30
SW2(config-vlan)#private-vlan isolated
SW2(config-vlan)#ex
将vlan划入到端口中,配置端口关于Private vlan的属性。Private vlan的属性就是该端口是混杂端口、隔离端口、群体端口,三选一,隔离端口与群体端口不同的是群体端口的配置多了一条需要指定主端口"switchport mode private-vlan host"
SW2(config)#int range g0/1
SW2(config-if-range)#switchport mode private-vlan host
SW2(config-if-range)#switchport private-vlan host-association 2 20 //将该端口加入团体vlan 20
SW2(config-if-range)#exit
SW2(config)#int range g0/2-3
SW2(config-if-range)#switchport private-vlan host-association 2 30 //将该端口加入隔离vlan 30
既然是交换机互联,那么我们就应该将SW1和SW2之间的端口设置为trunk接口,并允许所有vlan通过
SW1上
SW1(config)#int g0/5
SW1(config-if)#switchport mode trunk //交换机默认已创建的所有vlan通过
SW2上
SW2(config)#int g0/0
SW2(config-if)#switchport mode trunk //交换机默认已创建的所有vlan通过
SW1与SW2之间的关系是挂设备的Private vlan,而SW1与R1之间的关系是交换机与网关的关系,并且主vlan也在这个端口上,所以在配置该端口的trunk时,我们也应该将其设为混杂端口
SW1上
SW1(config)#int g0/3
SW1(config-if)#switchport mode trunk
SW1(config-if)#switchport mode private-vlan promiscuous
网关交换机R1的配置
由于R1为网关的身份,所以在R1上也要创建下联的vlan,并将这些vlan配置为相对应的Private vlan
在R1上
创建并配置community vlan 10,20
R1(config)#vlan range 10,20
R1(config-vlan)#private-vlan community
R1(config-vlan)#exit
创建并配置isolated vlan 30
R1(config)#vlan 30
R1(config-vlan)#private-vlan isolated
R1(config-vlan)#exit
创建并配置主vlan
R1(config)#vlan 2
R1(config-vlan)#private-vlan primary
R1(config-vlan)#private-vlan association 10,20,30
配置SVI接口,并将两种辅助vlan映射到主vlan上
R1(config)#int vlan 2
R1(config-vlan)#ip add 192.168.1.1 24
R1(config-vlan)#private-vlan mapping 10,20,30
R1(config-vlan)#ex
配置下联接口为trunk口
R1(config)#int g0/0
R1(config-if)#switchport mode trunk
Native vlan特性
1、native vlan最主要的能力就是在trunk链路中不会被打上标记,如下,当native vlan id=20时,如果又vlan 20内发出的数据,则该数据是不会被打上标记的

2、如果换个思路的话,如果有无标签的数据经过trunk链路的时候,该数据就会被打上native vlan 的tag
如下,无标签的data经过trunk链路后,此时SW1的native vlan id为20,所以data就会被打上tag为20的标签

3、交换机两端的native vlan id必须一致,如下SW1和SW2的native vlan id都为vlan 20

如果不一致,将会造成数据合并的后果,如下图,SW1内的vlan 2发出data,而SW1的native vlan 为2 ,所以data在trunk链路传输中是不被打上标签的
而到了SW2上,由于SW2的native vlan id为3,并且data是没有标签的数据,SW2就自然地将数据转发到vlan 3中,造成了应该转发给vlan 2的数据现在转发出现错误
如果此时SW1内的vlan 3中有主机也发送一个data01,那么久会造成data+data01合并一起发到SW2的vlan 3的广播域内

4、在交换机中默认的native vlan为1,可以通过在接口视图内使用以下命令进行修改,如下将g0/0的native vlan 改为vlan 10
SW1(config)#int g0/0
SW1(config-if)#switchport trunk native vlan 10
