6-6: Private VLANs
Private VLANs allow for additional security between devices in a common subnet.
Private edge VLANs can be configured to prevent connectivity between devices on access switches.
Private VLANs can be configured on the Catalyst 6000 and Catalyst 4000 series products.
Within a private VLAN, you can isolate devices to prevent connectivity between devices within the isolated VLAN.
Within a private VLAN, communities can be created to allow connection between some devices and to prevent them from communicating with others.
Promiscuous ports are mapped to private VLANs to allow for connectivity to VLANs outside of this network.
Configuring Private VLANs
Private VLANs provide a mechanism to control which devices can communicate within a single subnet. The private VLAN uses isolated and community secondary VLANs to control how devices communicate. The secondary VLANs are assigned to the primary VLAN, and ports are assigned to the secondary VLANs. Ports in an isolated VLAN cannot communicate with any device in the VLAN other than the promiscuous port. Ports configured in a community VLAN can communicate with other ports in the same community and the promiscuous port. Ports in different communities cannot communicate with one another. To configure private VLANs, use the following steps.
Set VTP transparent mode:
COS
set vtp mode transparent
IOS
(privileged) vlan database
(vlan_database) vtp transparent
You must configure VTP to transparent mode before you can create a private VLAN. Private VLANs are configured in the context of a single switch and cannot have members on other switches. Private VLANs also carry TLVs that are not known to all types of Cisco switches.
Create the primary private VLAN:
COS
set vlan primary_number pvlan-type primary
IOS
(global) vlan primary_number
(vlan-config) private-vlan primary
You must first create a primary private VLAN. The number of the primary VLAN is used in later steps for binding secondary VLANs and mapping promiscuous ports.
Create isolated and community VLANs:
COS
set vlan secondary_number pvlan-type [isolated | community | twoway-community]
IOS
(global) vlan secondary_number
(vlan-config) private-vlan [isolated | community]
Configure isolated or community secondary VLANs for assignment of ports and control of the traffic. The secondary number for each of these VLANs must be unique from one another and the primary number. Members of an isolated VLAN can only communicate with the promiscuous port(s) mapped in Step 6, whereas members of a community VLAN can communicate with members of the same community and the promiscuous ports. A two-way community acts like a regular community, but has the additional aspect of allowing access control lists to check traffic going to and from (two ways) the VLAN and provides enhanced security within a private VLAN.
Bind isolated and community VLANs to the primary VLAN:
COS
set pvlan primary_number secondary_number
IOS
(global) vlan primary_number
(vlan-config) private-vlan association secondary_number_list [add secondary_number_list]
This command associates or binds the secondary VLANs to the primary VLAN. For the IOS command, the add option allows other VLANs to be associated in the future.
Place ports into the isolated and community VLANs:
COS
set pvlan primary_number secondary_number mod/port [sc0]
IOS
(global) interface type mod/port
(interface) switchport
(interface) switchport mode private-vlan host
(interface) switchport mode private-vlan host-association primary_number secondary_number
After you have created and associated the primary and secondary VLANs, you must assign ports to that VLAN. For COS switches, you can add the sc0 interface to the private VLAN as well.
Map the isolated and community VLANs to promiscuous port(s):
COS
set pvlan mapping primary_number secondary_number mod/port
IOS
(global) interface type mod/port
(interface) switchport
(interface) switchport mode private-vlan promiscuous
(interface) switchport mode private-vlan mapping primary_number secondary_number
After you have assigned ports to the secondary VLANs, you must map the VLANs to a promiscuous port for access outside of the isolated or community VLAN.
(Optional) Map the isolated and community VLANs a Multilayer Switch Feature Card (MSFC) interface:
COS
set pvlan mapping primary_number secondary_number 15/1
session 15
(privileged)config t
(global)interface vlan primary_number
(interface)ip address address mask
IOS
(global) interface primary_number
(interface) ip address address mask
(interface) private-vlan mapping primary_number secondary_number
If your switch has an MSFC, you can map the private VLANs to the MSFC. For a switch running COS, you map the VLAN to port 15/1 (or 16/1 for the MSFC in slot 2), and then configure the IP address on the VLAN interface with the number of the primary VLAN. For an IOS switch, you go to the VLAN interface with the primary number, and then map the primary and secondary VLANs to that port.
Configuring Private Edge VLANs
The 3500XL switch uses the concept of a protected port to allow for control of traffic on the switch. A protected port on a 3500XL will not forward traffic to another protected port on the same switch. This behavior is similar to an isolated VLAN in that protected ports cannot communicate with one another. Use the following command to configure a protected port.
(Optional) Configure a protected port:
COS
IOS
(global) interface type mod/port
(interface) port protected
To configure a private edge VLAN, select the interface and type the command port protected. To verify that a port is in protected mode, use the command show port protected.
Verifying Private VLAN Operation
After configuring private VLANs, use the following command to verify operation:
COS |
show pvlan number show pvlan mapping show pvlan capability mod/port |
IOS |
show vlan private-vlan [type] show interface private-vlan mapping show interface type mod/port switchport |
NOTE
A number of guidelines and restrictions apply to private VLANs. For a complete list of these items, go to http://www.cisco.com/univercd/cc/td/doc/product/lan/cat6000/sw_7_2/confg_gd/vlans.htm#xtocid21.
Feature Example
Figure 6-5 shows the network diagram for a working private VLAN configuration example. In this example, the switch Access_1 is configured with ports 1 and 2 as protected ports both in VLAN 10. The VLAN 10 server on Distribution_1 is also in VLAN 10. This allows the PCs to connect to the server but not one another. Also on the distribution switch, private VLAN 90 has been created with a community VLAN 901 and an isolated VLAN 900. Server 2 in port 3/46 and Server 3 in port 3/48 are placed in the community VLAN, and servers connected to ports 3/1 and 3/2 are to be placed in the isolated VLAN. All these devices are mapped to the router connected to port 1/2 and the MSFC port 15/1 for interface VLAN 90.
Figure 6-5 Network Diagram for Private VLAN Configuration
An example of the Catalyst OS configuration for Distribution_1 follows:
Distribution_1 (enable)>set vtp mode transparent Distribution_1 (enable)>set vlan 90 pvlan-type primary Distribution_1 (enable)>set vlan 900 pvlan-type isolated Distribution_1 (enable)>set vlan 901 pvlan-type community Distribution_1 (enable)>set pvlan 90 900 Distribution_1 (enable)>set pvlan 90 901 Distribution_1 (enable)>set pvlan 90 900 3/1-2 Distribution_1 (enable)>set pvlan 90 901 3/46,3/48 Distribution_1 (enable)>set pvlan mapping 90 900 1/2,15/1 Distribution_1 (enable)>set pvlan mapping 90 901 1/2,15/1 Distribution_1 (enable)>session 15 MSFC_Dist1>enable MSFC_Dist1#config t MSFC_Dist1(config)#interface vlan 90 MSFC_Dist1(config-if)#ip address 10.10.90.1 255.255.255.0 MSFC_Dist1(config-if)#no shut MSFC_Dist1(config-if)#end MSFC_Dist1#copy running-config startup-config
An example of the Supervisor IOS configuration for Distribution_1 follows:
Distribution_1#vlan database Distribution_1(vlan)#vtp transparent Distribution_1(vlan)#exit Distribution_1#conf t Distribution_1(config)#vlan 90 Distribution_1(config-vlan)#private-vlan primary Distribution_1(config-vlan)#vlan 900 Distribution_1(config-vlan)#private-vlan isolated Distribution_1(config-vlan)#vlan 901 Distribution_1(config-vlan)#private-vlan community Distribution_1(config-vlan)#vlan 90 Distribution_1(config-vlan)#private-vlan association 900,901 Distribution_1(config-vlan)#interface range fastethernet 3/1 - 2 Distribution_1(config-if)#switchport Distribution_1(config-if)#switchport mode private-vlan host Distribution_1(config-if)#switchport mode private-vlan host-association 90 900 Distribution_1(config-if)#no shut Distribution_1(config-if)#interface range fastethernet 3/46 , 3/48 Distribution_1(config-if)#switchport Distribution_1(config-if)#switchport mode private-vlan host Distribution_1(config-if)#switchport mode private-vlan host-association 90 901 Distribution_1(config-if)#no shut Distribution_1(config-if)#interface gigabitethernet 1/2 Distribution_1(config-if)#switchport Distribution_1(config-if)#switchport mode private-vlan promiscuous Distribution_1(config-if)#switchport mode private-vlan mapping 90 900,901 Distribution_1(config-if)#no shut Distribution_1(config-vif)#interface vlan 90 Distribution_1(config-if)#ip address 10.10.90.1 255.255.255.0 Distribution_1(config-if)#private-vlan mapping 90 900,901 Distribution_1(config-if)#no shut Distribution_1(config-if)#end Distribution_1 #copy running-config startup-config
An example of the Layer 2 IOS configuration for Access_1 follows:
Access_1 #config t Access_1 (config)#interface fastethernet 0/1 Access_1 (config-if)#switchport access vlan 10 Access_1 (config-if)#port protected Access_1 (config)#interface fastethernet 0/2 Access_1 (config-if)#switchport access vlan 10 Access_1 (config-if)#port protected Access_1 (config)#interface gigabitethernet 0/1 Access_1 (config-if)#switchport mode trunk Access_1 (config-if)#switchport trunk encapsulation dot1Q Access_1 (config-if)#end Access_1#copy running-config startup-config