PVLAN
pvlan
PVLAN(Private VLAN,私有 VLAN),是对现有 vlan 行为的一个安全/性能的加强版,转发行为和传统的 vlan 有所不同,下面先对 pvlan 中的一些术语做一下介绍:
概念
-
PVLAN: 由一组 VLAN 集构成,包括 1 个 Primary VLAN 和其对应的一个或多个 Secondary VLAN。
-
Primary VLAN: 主 vlan,上行设备感知的用户 VLAN。
-
Secondary VLAN: 从 vlan,用户真正属于的 VLAN,Secondary VLAN 有两种类型:
- Community:同一 Secondary VLAN 的终端
可以
互通,不同 Secondary VLAN 的终端无法互通,可以和 Primary VLAN 终端互通; - Isolated:同一 Secondary VLAN 的终端
无法
互通,不同 Secondary VLAN 的终端无法互通,可以和 Primary VLAN 终端互通; - 如下图,Primary VLAN 100,Secondary VLAN101 community,102 isolated
- Community:同一 Secondary VLAN 的终端
-
接口工作模式:
- host:可以理解为 Secondary VLAN 的 access 接口;
- Promiscuous:可以理解为 Primary VLAN 的 access 接口;
- Trunk promiscuous:可以理解为 Primary VLAN 的 Trunk 接口,但仅能包含一个或多个 Primary VLAN,不能包含 Secondary VLAN。
- Trunk secondary:可以理解为 Secondary VLAN 的 truhk 接口,仅能包含不同 pvlan 的一个或多个 secondary vlan,同一 pvlan 下的不同 Secondary VLAN 是不能同时包含的。
- Trunk:这个其实不是 pvlan 专用接口,就是正常 802.1Q trunk。转发方式和正常 trunk 一样,在这里提一下,通常用于两个支持 PVLAN 的交换机互联;
-
PVLAN L3 域: 在 Primary VLAN 接口上指定三层互通的 Secondary VLAN,配置 Primary VLAN 接口的 IP 地址及开启本地代理 ARP(Address Resolution Protocol,地址解析协议)/ND(Neighbor Discovery,邻居发现)功能可以建立 PVLAN L3 域。其中三层互通的 Secondary VLAN 被认为加入了该 PVLAN L3 域,这些 Secondary VLAN 共用 Primary VLAN 接口作为网关;这个功能其实和 Super Vlan 很像。
配置实例
两台交换机使用 trunk 连接,建立 2 个 pvlan 分别使用不同接口模式连接终端。
- V100 Primary
- V101 Secondary Community
- V102 Secondary Isolated
- V200 Primary
- V201 Secondary Community
- V202 Secondary Isolated
此配置使用物理机交换机,设备型号为 H3C-S6520X-EI 固件版本为 Version 7.1.070, Release 6652P02;内侧的/17 等编号为交换机物理接口编号,V101 为接入的 vlan/pvlan,最外侧使用虚线连接的为终端。
接入配置
#本命令基于s6520x-cmw710-system-r6652p02
#SW1
vlan 100
vlan 101
vlan 102
vlan 200
vlan 201
vlan 202
vlan 100
private-vlan primary
private-vlan secondary 101 to 102
#
vlan 101
private-vlan community
#
vlan 102
private-vlan isolated
#
vlan 200
private-vlan primary
private-vlan secondary 201 to 202
#
vlan 201
private-vlan community
#
vlan 202
private-vlan isolated
#
interface Ten-GigabitEthernet1/0/13
port link-mode bridge
description T1
#实际命令为如下两条,其余皆为自动替换或自动生成
#13~16口类似不在重复注释
#port access vlan 101
#port private-vlan host
port link-type hybrid
undo port hybrid vlan 1
port hybrid vlan 100 to 101 untagged
port hybrid pvid vlan 101
port private-vlan host
#
interface Ten-GigabitEthernet1/0/14
port link-mode bridge
description T2
port link-type hybrid
undo port hybrid vlan 1
port hybrid vlan 100 102 untagged
port hybrid pvid vlan 102
port private-vlan host
#
interface Ten-GigabitEthernet1/0/15
port link-mode bridge
description T3
port link-type hybrid
undo port hybrid vlan 1
port hybrid vlan 200 to 201 untagged
port hybrid pvid vlan 201
port private-vlan host
#
interface Ten-GigabitEthernet1/0/16
port link-mode bridge
description T4
port link-type hybrid
undo port hybrid vlan 1
port hybrid vlan 200 202 untagged
port hybrid pvid vlan 202
port private-vlan host
#
interface Ten-GigabitEthernet1/0/17
port link-mode bridge
description T9&T10
#实际命令仅为如下一条,其余为自动生成
#port private-vlan 101 202 trunk secondary
port link-type hybrid
port hybrid vlan 100 to 101 200 202 tagged
port hybrid vlan 1 untagged
port private-vlan 101 202 trunk secondary
#
interface Ten-GigabitEthernet1/0/18
port link-mode bridge
description T101
#实际命令仅为如下一条,其余为自动生成
#port private-vlan 100 promiscuous
port link-type hybrid
undo port hybrid vlan 1
port hybrid vlan 100 to 102 untagged
port hybrid pvid vlan 100
port private-vlan 100 promiscuous
#
interface Ten-GigabitEthernet1/0/19
port link-mode bridge
description T103&T104
#实际命令仅为如下一条,其余为自动生成
#port private-vlan 100 200 trunk promiscuous
port link-type hybrid
port hybrid vlan 100 to 102 200 to 202 tagged
port hybrid vlan 1 untagged
port private-vlan 100 200 trunk promiscuous
#
interface Ten-GigabitEthernet1/0/48
port link-mode bridge
port link-type trunk
port trunk permit vlan all
#
#############
#SW2
vlan 100
vlan 101
vlan 102
vlan 200
vlan 201
vlan 202
vlan 100
private-vlan primary
private-vlan secondary 101 to 102
#
vlan 101
private-vlan community
#
vlan 102
private-vlan isolated
#
vlan 200
private-vlan primary
private-vlan secondary 201 to 202
#
vlan 201
private-vlan community
#
vlan 202
private-vlan isolated
#
interface Ten-GigabitEthernet1/0/13
port link-mode bridge
description T5
#实际命令为如下两条,其余皆为自动替换或自动生成
#13~16口类似不在重复注释
#port access vlan 101
#port private-vlan host
port link-type hybrid
undo port hybrid vlan 1
port hybrid vlan 100 to 101 untagged
port hybrid pvid vlan 101
port private-vlan host
#
interface Ten-GigabitEthernet1/0/14
port link-mode bridge
description T6
port link-type hybrid
undo port hybrid vlan 1
port hybrid vlan 100 102 untagged
port hybrid pvid vlan 102
port private-vlan host
#
interface Ten-GigabitEthernet1/0/15
port link-mode bridge
description T7
port link-type hybrid
undo port hybrid vlan 1
port hybrid vlan 200 to 201 untagged
port hybrid pvid vlan 201
port private-vlan host
#
interface Ten-GigabitEthernet1/0/16
port link-mode bridge
description T8
port link-type hybrid
undo port hybrid vlan 1
port hybrid vlan 200 202 untagged
port hybrid pvid vlan 202
port private-vlan host
#
interface Ten-GigabitEthernet1/0/17
port link-mode bridge
description T11&T12
#实际命令仅为如下一条,其余为自动生成
#port private-vlan 102 201 trunk secondary
port link-type hybrid
port hybrid vlan 100 102 200 to 201 tagged
port hybrid vlan 1 untagged
port private-vlan 102 201 trunk secondary
#
interface Ten-GigabitEthernet1/0/18
port link-mode bridge
description T102
#实际命令仅为如下一条,其余为自动生成
#port private-vlan 200 promiscuous
port link-type hybrid
undo port hybrid vlan 1
port hybrid vlan 200 to 202 untagged
port hybrid pvid vlan 200
port private-vlan 200 promiscuous
#
interface Ten-GigabitEthernet1/0/19
port link-mode bridge
description T105&T106
#实际命令仅为如下一条,其余为自动生成
#port private-vlan 100 200 trunk promiscuous
port link-type hybrid
port hybrid vlan 100 to 102 200 to 202 tagged
port hybrid vlan 1 untagged
port private-vlan 100 200 trunk promiscuous
#
interface Ten-GigabitEthernet1/0/48
port link-mode bridge
port link-type trunk
port trunk permit vlan all
#
测试互通结果;√:互通 ×:不互通
PVLAN100
- | T1 | T2 | T5 | T6 | T9 | T11 | T101 | T103 | T105 |
---|---|---|---|---|---|---|---|---|---|
T1 | - | × | √ | × | √ | × | √ | √ | √ |
T2 | × | - | × | × | × | × | √ | √ | √ |
T5 | √ | × | - | × | √ | × | √ | √ | √ |
T6 | × | × | × | - | × | × | √ | √ | √ |
T9 | √ | × | √ | × | - | × | √ | √ | √ |
T11 | × | × | × | × | × | - | √ | √ | √ |
T101 | √ | √ | √ | √ | √ | √ | - | √ | √ |
T103 | √ | √ | √ | √ | √ | √ | √ | - | √ |
T105 | √ | √ | √ | √ | √ | √ | √ | √ | - |
PVLAN 200
- | T3 | T4 | T7 | T8 | T10 | T12 | T102 | T104 | T106 |
---|---|---|---|---|---|---|---|---|---|
T3 | - | × | √ | × | × | √ | √ | √ | √ |
T4 | × | - | × | × | × | × | √ | √ | √ |
T7 | √ | × | - | × | × | √ | √ | √ | √ |
T8 | × | × | × | - | × | × | √ | √ | √ |
T10 | × | × | × | × | - | × | √ | √ | √ |
T12 | √ | × | √ | × | × | - | √ | √ | √ |
T102 | √ | √ | √ | √ | √ | √ | - | √ | √ |
T104 | √ | √ | √ | √ | √ | √ | √ | - | √ |
T106 | √ | √ | √ | √ | √ | √ | √ | √ | - |
PVLAN L3 域配置
如果想实现控制广播域大小,实现二层隔离三层互访的效果可以使用 PVLAN L3 域功能,此功能和 super vlan 类似,我没有考证过这两个功能哪个先产生不知道是否有借鉴;三层互访的原理就是使用 vlanif 开启 arp 代理,代理响应不同 secondary vlan 中的 arp 请求,配置相对简单,比如使上例中的 V101 和 V102 可以三层互访,配置如下:
#由于两交换机间使用trunk互通,下面配置在任意一个交换机上配置均可
interface Vlan-interface100
private-vlan secondary 101 to 102
ip address 192.168.1.254 255.255.255.0
local-proxy-arp enable #ipv4 arp代理
local-proxy-nd enable #ipv6 nd代理
以上配置使得 v101 可以和 v102 三层相互通信,二层隔离,跨 secondary vlan 访问的 arp 均为 vlanif 的 mac 地址,如下:
经测试 isolated vlan 内的终端也可以互访了,同样是由 vlanif100 代理 arp 访问。
其他
- 端口隔离:很多交换机不支持 pvlan,但是支持端口隔离,这可以理解为简化版的 pvlan isolated,在常规 vlan 的接入口上配置 port-isolate,表现出的行为是:隔离端口仅能和 vlan 内的非隔离端口进行二层通信。
注意
-
pvlan 的 vlan 从属关系通过 hybrid 接口实现,主从端口通信时回包会发生 vlan 转换,当通过 trunk 多交换机互联的时候配置不当会导致问题;如下图,互联 trunk 接口上抓包,流量的往返其实不是同一个 vlan;因此跨交换机主从端口互访时,trunk 相应的 primary/secondary vlan 都需要放行。
-
当 vlan 属于 pvlan 时候,无论 primary 还时 secondary,连接终端时应使用 pvlan 的接入方式(即:四种接口工作模式),否则会导致无法正常通信。同样是由于上面原因,回包的 vlan 转换需要在 hybrid 接口实现。
当然如果非要使用常规 access 或者 trunk 对接终端也不是不可以,前提是你知道自己在做什么。
-
pvlan secondary trunk 接入的终端侧(即上图中/17 接口所连接的设备)无需感知 pvlan 和 primary vlan,做常规 trunk 即可(放行 vlan 应该是 secondary 的 vlan id)。
-
单纯使用 pvlan 隔离访问安全性不高,在有网关的情况下(不开启 arp 代理)终端通过一些设置也可以实现三层通信,上例中:
T1:192.168.1.1/24
T2:192.168.1.2/24
GW: 192.168.1.254/24 网关不开启 arp 代理,此 PVLAN 环境下,此时 T1 和 T2 不能通信。#在T1添加路由: 目的网段:192.168.1.2/32 下一跳:192.168.1.254 #在T2添加路由: 目的网段:192.168.1.1/32 下一跳:192.168.1.254 #通过添加上述路由,使用32位静态路由抑制24位的直连路由;T1 T2通信绕路网关变成三层通信不直接请求arp; #网关转发该数据包的同时一般还会发送icmp redirect,如果终端接受icmp redirect,现象就是前几个包可以通,后边就不通了。这里的网关指的是路由器等标准网关,如果是防火墙的安全特性较多的设备可能不会转发而是直接丢包; #如下截图,T1并没有请求T2地址的arp,而是请求了网关254的arp。