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
  • 接口工作模式:

    • 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 接口 或 /19 接口所连接的设备)无需感知 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。
    

参考

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。