简介
PVLAN(Private VLAN 私有VLAN)通常用于企业内部网,用来防止连接到某些接口或接口组的网络设备之间的相互通信,但却允许与默认网关进行通信。尽管各设备处于不同的PVLAN中,它们可以使用相同的IP子网。在PVLAN中,交换机端口有3种类型:Isolated Port(隔离端口)、Community Port(团体端口)和Promiscuous Port(混杂端口);它们分别对应不同的VLAN类型:Isolated Port属于Isolated PVLAN,Community Port属于Community PVLAN,而代表一个Private VLAN整体的是Primary PVLAN(主私有VLAN),前面两类VLAN也称为Secondary PVLAN(辅助私有VLAN),它们需要和Primary PVLAN绑定在一起,Promiscuous Port属于Primary PVLAN。
传统VLAN的局限性:
随着网络的迅速发展,用户对于网络数据通信的安全性提出了更高的要求,诸如防范黑客攻击、控制病毒传播等,都要求保证网络用户通信的相对安全性;传统的解决方法是给每个客户分配一个VLAN和相关的IP子网,通过使用VLAN,每个客户被从第2层隔离开,可以防止任何恶意的行为和Ethernet的信息探听。然而,这种分配每个客户单一VLAN和IP子网的模型造成了巨大的可扩展方面的局限。这些局限主要有下述几方面:
1.VLAN的限制:交换机固有的VLAN数目的限制;
2.复杂的STP:对于每个VLAN,每个相关的Spanning Tree的拓扑都需要管理;
3.IP地址的紧缺:IP子网的划分势必造成一些IP地址的浪费;
4.路由的限制:每个子网都需要相应的默认网关的配置。
PVLAN简介
PVLAN的应用对于保证接入网络的数据通信的安全性是非常有效的,用户只需与自己的默认网关连接,一个PVLAN不需要多个VLAN和IP子网就能提供具备二层数据通信安全性的连接,所有的用户都接入PVLAN,从而实现了所有用户与默认网关的连接,而与PVLAN内的其它用户没有任何访问。PVLAN功能可以保证同一个VLAN中的各个端口相互之间不能通信,但可以穿过Trunk端口。这样即使同一VLAN中的用户相互之间也不会受到广播的影响。
PVLAN的2种VLAN:
主要VLAN(Primary VLAN):把流量从混杂端口传送到隔离、团体和同一个VLAN内部的其它主要混杂端口。
辅助VLAN(Secondary VLAN):辅助VLAN包含两种VLAN类型:
隔离VLAN(Isolated VLAN):把流量从隔离端口传送到一个混杂端口。隔离VLAN中的端口,使其不能与PVLAN
(另一个团体VLAN端口或相同隔离VLAN内的端口)内部的任何其它端口进行第2层通信。若要与其它端口通
信,则必须穿越混杂端口。
团体VLAN(Community VLAN):在相同团体VLAN内部的团体端口之间传送流量并传送到混杂端口,团体VLAN内的
端口可以在第2层彼此通信(只是在相同团体VLAN内部),但是不能与其它团体或隔离VLAN的端口进行通信。
若要与其它端口进行通信,则必须穿越混杂端口。
PVLAN的2种端口类型:
混杂端口(Promiscuous Port):隶属于“Primary VLAN”,一个混杂端口可以与所有接口通信,包括PVLAN内的
隔离和团体端口;混杂端口的功能是在团体和隔离的VLAN端口之间传递流量。
主机端口(Host Port):隶属于“Secondary VLAN”,由于“Secondary VLAN”具有两种属性,那么主机端口依
“Secondary VLAN”属性的不同也有两种分类:
隔离端口(Isolated Port):它与PVLAN内的所有其它端口相分离,除混杂端口外;来源于隔离端口的流量仅仅
传送给混杂端口。
团体端口(Community Port):它在逻辑上把相同区域内部的各个端口和混杂端口结合到一起,流量可以在它们
之间传送。
PVLAN的使用规则:
1.一个“Primary PVLAN”当中只能有1个“Promiscuous Port”;
2.一个“Primary PVLAN”当中至少有1个“Secondary PVLAN”,但是没有上限;
3.一个“Primary PVLAN”当中只能有1个“Isolated PVLAN”,可以有多个“Community PVLAN”;
4.不同“Primary PVLAN”之间的任何端口都不能互相通信(这里“互相通信”是指二层连通性);
5.“Isolated Port”只能与“Promiscuous Port”通信,除此之外不能与任何其他端口通信;
6.“Community Port”可以和“Promiscuous Port”通信,也可以和同一“Community PVLAN”中的其它物理端
口进行通信,除此之外不能和其他端口通信。
7.创建PVLAN前,需要配置VTP模式为Transparent,在配置PVLAN后,将不能再把模式转变为Server和Client;
8.在配置PVLAN中,不使用VLAN1,VLAN1002 - 1005;
9.三层的VLAN接口只能分配给主VLAN;
10.不能在PVLAN中配置EtherChannel;
11.假如交换机上一个端口作为SPAN的目的端口,这个端口会在配置PVLAN的后失效;
12.PVLAN的端口可以做SPAN的源端口;
13.假如在PVLAN中删除了一个VLAN,那么属于该VLAN的端口将失效。
受保护的端口(PVLAN边缘)和PVLAN:
这两种技术都可以实现交换机同一VLAN中的接口间不能通信的目的,但这种“不可通信”不是真正的隔离并且只是一种表面现象,通过某些办法是可以打破这种表象的。
受保护的端口要求:
①只限于同一交换机的同一VLAN,它不能隔离位于不同交换机或不同VLAN的两个受保护的端口间通信;
②受保护的端口间若要通信必须通过3层设备,在受保护端口间路由;
③控制流量是一个例外,它将在受保护的端口间进行转发(如路由选择协议更新);
④受保护的端口和非保护端口间的转发一般优于默认行为;
⑤默认情况下端口不配置受保护的端口。
配置命令:SW1(config)#int f0/1
SW1(config-if)#switchitchport protected //开启端口保护
SW1#show int f0/1 switchport //查看交换端口的配置
Catalyst交换机上的VLAN支持:
实验
命令:
SW1(config-vlan)#private-vlan community
SW1(config-vlan)#private-vlan isolated
SW1(config-vlan)#private-vlan primary
SW1(config-vlan)#private-vlan association 101-102
SW1(config-if)#switchport private-vlan host-association 100 101
SW1(config-if)#switchport mode private-vlan host
SW1(config-if)#switchport private-vlan mapping 100 101,102
SW1(config-if)#switchport mode private-vlan promiscuous
SW1(config-if)#private-vlan mapping 101-102
SW1(config)#vtp mode transparent
SW1(config)#vlan 200
SW1(config-vlan)#name VLAN-200
SW1(config)#int f0/23
SW1(config-if)#switchport access vlan 200
SW1(config-if)#switchport mode access //用于接入SW2交换机
SW1(config)#ip routing //配置三层交换,SW1承担Vlan 100和Vlan 200间的路由功能
SW1(config)#int vlan 200
SW1(config-if)#ip add 172.16.2.254 255.255.255.0
SW1(config-if)#no sh
1.创建主要和辅助PVLAN:
SW1(config)#vlan 100
SW1(config-vlan)#name VLAN-100
SW1(config-vlan)#private-vlan primary //配置该VLAN为主VLAN
SW1(config)#vlan 101
SW1(config-vlan)#private-vlan community //配置该VLAN为辅助VLAN的团体VLAN
SW1(config)#vlan 102
SW1(config-vlan)#private-vlan isolated //配置该VLAN为辅助VLAN的隔离VLAN
2.把辅助VLAN与主要VLAN关联:
SW1(config)#vlan 100
SW1(config-vlan)#private-vlan association 101-102 //把本主VLAN和辅助VLAN101、102关联
3.把辅助VLAN映射到交换机SVI(虚拟接口):
SW1(config)#int vlan 100
SW1(config-if)#ip add 172.16.1.254 255.255.255.0
SW1(config-if)#private-vlan mapping add 101-102 //将辅助VLAN映射到3层接口,允许PVLAN入口流量
的3层交换;辅助VLAN被映射到主VLAN后就不能起自己的SVI了,也就是说映射时也可以不映射全部的辅助VLAN
SW1(config-if)#no sh
4.配置一个2层端口作为隔离或团体端口,把这个2层端口与初级VLAN和可选辅助对VLAN进行关联:
SW1(config)#int f0/1
SW1(config-if)#switchport private-vlan host-association 100 101
//把本接口配置为团体接口;即本接口属于主Vlan 100,并关联到辅助Vlan 101中
SW1(config-if)#switchport mode private-vlan host //辅助VLAN的接口模式被定义为host
SW1(config)#int f0/2
SW1(config-if)#switchport private-vlan host-association 100 101
SW1(config-if)#switchport mode private-vlan host
SW1(config)#int f0/3
SW1(config-if)#switchport private-vlan host-association 100 102
SW1(config-if)#switchport mode private-vlan host
SW1(config)#int f0/4
SW1(config-if)#switchport private-vlan host-association 100 102
SW1(config-if)#switchport mode private-vlan host
5.配置一个2层端口作为PVLAN混杂端口,并将这个混杂端口映射到初级VLAN端口和可选的辅助VLAN对:
SW1(config)#int f0/13
SW1(config-if)#switchport private-vlan mapping 100 101,102 //把本接口属于主Vlan 100,
并实现主VLAN和辅助VLAN间的映射;主VLAN接口也可以不映射所有的辅助VLAN
SW1(config-if)#switchport mode private-vlan promiscuous //把本接口配置为混杂接口,即
本接口可以和Vlan 101、102通信;主VLAN接口的模式一定是Promiscuous
这时PC1/(PC2)能与PC2/(PC1)、Server、Vlan 200(SW2)通信;注意PC1/PC2与PC3和PC4是不通的!PC3/PC4只能与Server、Vlan 200(SW2)通信;注意PC3和PC4是不通的!
说明:
①只有VTP模式为透明模式,才能配置PVLAN。
②host|promiscuous:
host:只能为一个辅助VLAN服务;
promiscuous:可以为多个辅助VLAN服务。
实验调试
SW1#show int f0/1 switchport
SW1#show int private-vlan mapping
SW1#show vlan private-vlan //查看PVLAN信息
总结:
尤其对于某些应用场景,如数据中心,一般虚机之间横向很少通信,主要是纵向和网关的通信,所以要求每个虚机属于一个VLAN降低洪泛时的广播流量。
这样它能将不同的用户放在隔离VLAN中实现客户的二层隔离,这样只需要一个隔离VLAN就可以保证接入网络的数据通信的安全性,这节省了VLAN的数目。
通过给主VLAN配置SVI(在cisco交换机中,SVI就是VLAN接口),所以PVLAN共享主VLAN的IP地址,实现了所有用户与默认网关的连接,而与PVLAN内的其他用户没有任何访问,这样就不用再划分子网了,一个FLAT子网足够。所以说PVLAN也能节省IP地址。一个PVLAN也只能有一个主VLAN,未同主VLAN建立关联的辅VLAN不支持ARP报文的学习以及路由转发。