MAC VLAN

功能介绍

MAC VLAN概述

MAC VLAN是基于MAC地址划分的VLAN。如此划分的主要好处在于,当用户终端设备的物理位置发生移动导致接入接口发生变化时,可以根据用户的MAC地址将用户定向分配到指定的VLAN中,而不需要重新配置用户所在接口的VLAN。

起源和功能

起源

随着移动办公的普及,终端设备不再通过固定接口接入,它可能有时使用接口1接入网络,有时使用接口2接入网络。如果按接口划分VLAN,若接口1和接口2的VLAN配置不同,当终端设备使用接口2接入时,则会被划分到与接口1不同VLAN中,导致无法使用接口1所在VLAN内的资源;若接口1和接口2的VLAN配置相同,当别的终端接入接口2时则会引入安全问题。因此,为了在同一接口下允许不同VLAN的主机按需接入,产生了MAC VLAN功能。

功能

MAC VLAN实现的功能是,根据终端的MAC地址将终端划分到对应的VLAN。根据MAC地址划分VLAN的方法是一种基于用户的VLAN。

该功能常和802.1X下发VLAN功能结合使用,二层交换设备通过配置或下发MAC VLAN表项,实现根据用户MAC地址来分配VLAN的功能,从而实现802.1X终端安全、灵活的接入。

工作原理

MAC VLAN功能只能在Hybrid口上配置,MAC VLAN规则对所有开启MAC VLAN功能的Hybrid口生效。

MAC VLAN功能仅针对Untagged报文生效。

MAC VLAN规则的优先级高于Voice VLAN、子网VLAN、协议VLAN、端口VLAN;若开启了MAC VLAN功能,一旦Untagged报文进入接口,接口则会将数据流的源MAC地址与MAC VLAN规则中的MAC地址进行比较,判断报文是否匹配MAC VLAN规则。

若匹配成功,则将报文所属VLAN修改为MAC VLAN规则指定的VLAN,后续功能和协议都是按照修改后的VLAN进行处理。比如Untagged的报文匹配MAC VLAN规则后,设备通过MAC地址学习学到的VLAN,是MAC VLAN规则重定向之后的VLAN。

若匹配失败,才会继续比较Voice VLAN、子网VLAN、协议VLAN等基于报文内容的VLAN划分规则。因此,若Untagged报文同时匹配MAC VLAN规则和其它基于报文内容的VLAN划分规则,报文重定向的VLAN以MAC VLAN为准。

若基于报文内容的VLAN划分规则全部匹配失败,则遵照端口VLAN(普通VLAN)划分规则,判断帧属于本接口的Native VLAN,允许报文进入,并标识为Native VLAN的帧。

MAC VLAN功能对携带Tag的报文不生效。

接口收到携带Tag的帧时,遵照普通VLAN的收帧规则,若接口许可该Tag标识的VLAN报文通过则接收,不许可则丢弃。

MAC VLAN功能对于Priority报文也不生效,处理行为不确定。

Priority报文的VLAN Tag中VLAN ID为0,表示其不携带VLAN信息,只携带CoS Priority信息。

MAC VLAN规则

命令行静态配置

MAC VLAN规则体现MAC地址和VLAN的对应关系。用户可以通过命令行,在本地设备上配置MAC地址和VLAN的关联关系。通过show mac-vlan查看MAC VLAN规则时,标识为S(Static)的即静态配置的MAC VLAN规则。

认证服务器动态配置

802.1X VLAN下发功能可以自动配置和下发MAC地址和VLAN的关联关系。通过show mac-vlan查看,标识为D(Dynamic)的即动态配置的MAC VLAN规则。当用户通过802.1X认证后,本设备会根据认证服务器提供的信息,动态创建MAC地址和VLAN的关联关系。若用户下线,则设备立刻自动删除该对应关系。本方式需要在认证服务器上配置MAC地址和VLAN的关联,有关“802.1X VLAN下发功能”的详细介绍请参见“安全配置指南”中的“802.1x”。

可以同时在本地设备上和认证服务器上配置MAC VLAN规则。如果两种规则一致则均生效;如果不一致,则先配置的规则生效,后配置的规则虽然可以查看到但不生效。为了便于管理,建议避免同时使用两种配置方式。

注意

如果在802.1x功能中配置了FAIL VLAN功能,当用户认证失败后,用户数据就会被分配到FAIL VLAN中,比如分配到VLAN 100中,但是静态配置的MAC VLAN规则优先级更高,将把用户报文重定向到VLAN 200中,导致该用户无法在FAIL VLAN 100中正常通讯。因此,若要使用802.1x的FAIL VLAN功能,请勿在设备上静态配置MAC VLAN规则。

协议规范

IEEE 802.1Q:IEEE Standard for Local and Metropolitan Area Networks-Virtual Bridged Local Area Networks

配置MAC VLAN功能

功能简介

先配置静态MAC VLAN表项,绑定MAC地址和VLAN的关联关系,再基于接口配置MAC VLAN,使得MAC VLAN表项在接口上生效。

配置限制与指导

MAC VLAN功能只在Hybrid口上生效,只有二层接口可以配置为Hybrid模式。

可使用show interface switchport命令查看接口类型:若接口对应的Switchport字段为“enabled”,表示该接口为二层接口;若接口对应的Switchport字段为“disabled”,表示该接口为三层接口。

使用switchport命令可以将接口配置为二层接口。先使用no switchport mode命令恢复二层接口的模式为缺省值,再使用no switchport命令可以将二层接口配置为三层接口。当修改接口的二层/三层模式时,接口的所有属性恢复为该类型接口的缺省值。

使用mac-vlan命令配置静态MAC VLAN表项,使用no mac-vlan命令删除MAC VLAN表项。

mac-address mac-address参数配置MAC地址,MAC VLAN表项中指定的MAC地址必须是单播地址。mask mac-mask参数配置MAC地址掩码。若开启MAC VLAN功能的接口接收到一个报文,报文可以同时匹配掩码不为全F和掩码为全F的MAC VLAN表项,则接口按照掩码不为全F(范围较大的)的MAC VLAN表项来处理报文。使用no mac-vlan mac-address mac-address [ mask mac-mask ]命令可以删除指定MAC地址的静态MAC VLAN表项。

vlan vlan-id参数配置MAC VLAN规则匹配时报文被分配到的VLAN。静态配置或动态生成MAC VLAN表项时,指定VLAN必需已经存在。MAC VLAN表项中指定的VLAN不能是Super VLAN(可以是Sub VLAN)、Remote VLAN、Primary VLAN(可以是Secondary VLAN)。Untagged报文同时匹配MAC VLAN规则和Voice VLAN规则时,VLAN重定向以MAC VLAN为准。使用no mac-vlan vlan vlan-id命令可以删除指定VLAN的静态MAC VLAN表项。

priority priority-value参数配置802.1p优先级,缺省值为0;当报文匹配MAC VLAN规则时,接口修改报文的CoS优先级为priority-value。若需要修改报文优先级,请确保QoS模块信任接口对报文优先级的修改,否则接口修改报文优先级无效。Untagged报文同时匹配MAC VLAN规则和Voice VLAN规则时,修改报文优先级以Voice VLAN为准。

缺省情况下QoS模块的报文信任模式处于关闭状态,这会导致QoS模块修改所有报文的Priority信息为0,从而覆盖MAC VLAN功能对报文Priority的修改。在接口配置模式下执行mls qos trust { cos | ip-precedence | dscp | exp }命令,参数选cos,开启QoS信任CoS修改,信任MAC VLAN修改后的报文Priority信息。

使用no mac-vlan all命令可以删除全部MAC VLAN表项。

必须在接口上使用mac-vlan enable命令开启MAC VLAN功能,本功能才生效。否则即便存在全局MAC VLAN表项,MAC VLAN功能也不会生效。

接口上的MAC VLAN功能需要待接口配置完成后开启,否则不能修改Hybrid口的许可VLAN列表。

配置步骤

创建MAC VLAN。

进入特权模式。

enable

进入全局配置模式。

configure terminal

创建MAC VLAN。

vlan { vlan-id | range vlan-range }

缺省情况下,不存在VLAN 1以外的VLAN。

退出VLAN配置模式。

exit

配置全局静态MAC VLAN规则,指定MAC地址和MAC VLAN的对应关系。

mac-vlan mac-address mac-address [ mask mac-mask ] vlan vlan-id [ priority priority-value ]

缺省情况下,不存在静态MAC VLAN规则。

进入接口配置模式。

进入二层以太网接口配置模式。

interface { ethernet-type interface-number | range ethernet-type interface-range }

进入二层聚合接口配置模式。

interface { aggregateport interface-number | range aggregateport interface-range }

配置二层接口为Hybrid口。

switchport mode hybrid

缺省情况下,二层接口的模式为Access。

配置MAC VLAN加入Hybrid口许可的Untagged VLAN列表。

switchport hybrid allowed vlan untagged vlan_list

缺省情况下,Hybrid口许可的Untagged VLAN为VLAN 1。

开启接口MAC VLAN功能。

mac-vlan enable

缺省情况下,MAC VLAN功能处于关闭状态。

监视与维护

可以通过show命令行查看功能配置后的运行情况以验证配置效果。

可以通过debug命令行列举输出的各种调试信息。

注意

debug命令输出调试信息,会占用系统资源。使用完毕后,请立即关闭调试开关。

可以通过执行clear命令来清除各类信息。

注意

在设备运行过程中执行clear命令,可能因为重要信息丢失而导致业务中断。

监视与维护

作用

命令

查看所有的MAC VLAN表项,包括静态配置和动态生成的

show mac-vlan all

查看动态生成的MAC VLAN表项

show mac-vlan dynamic

查看静态配置的MAC VLAN表项

show mac-vlan static

查看指定VLAN的MAC VLAN表项

show mac-vlan vlan vlan-id

查看开启MAC VLAN功能的接口列表

show mac-vlan interface

查看指定MAC地址的MAC VLAN表项

show mac-vlan mac-address mac-address [ mask mac-mask ]

打开MAC VLAN的调试功能

debug bridge mvlan

典型配置举例

MAC VLAN配置举例

组网需求

公司在会议室提供了临时办公场所,会议室公用接口按照员工笔记本电脑的MAC地址划分VLAN,使员工从任意接口接入,都会被自动划分到部门所在VLAN中。

组网图

PC-A1、PC-A2属于部门A,规划为VLAN 100;PC-B1、PC-B2属于部门B,规划为VLAN 200。会议室为公用接口,PC-A1、A2接入后只能划分到VLAN 100,PC-B1、B2接入后只能划分到VLAN 200。

MAC VLAN典型组网图

image.png

配置要点

配置Device D与接入设备相连的接口为TRUNK口。

在Device C上创建MAC VLAN;配置全局静态MAC VLAN规则:

A部门申请在会议室接入的电脑MAC地址为54bf.6450.dd10,分配到VLAN 100中,优先级为1。

B部门有多人申请在会议室接入,MAC地址为54bf.6450.dd20到54bf.6450.dd2F,用54bf.6440.dd20加掩码ffff.ffff.fff0表示,分配到VLAN 200中,优先级为2。

配置Device C与终端相连的接口为Hybrid口,将MAC VLAN加入接口许可通过的Untagged VLAN列表。配置接口信任报文的CoS优先级。开启接口的MAC VLAN功能。

Deviec A和Device B的上联口配置为Trunk口,连接终端的接口配置为Access口。Device A上配置接口加入VLAN 100,Device B上配置接口加入VLAN 200。

配置步骤

创建VLAN。

# 在Device D上配置VLAN 100、200。

DeviceD> enable

DeviceD# configure terminal

DeviceD(config)# vlan range 100,200

DeviceD(config-vlan-range)# exit

# 在Device C上配置VLAN 100、200。

DeviceC> enable

DeviceC# configure terminal

DeviceC(config)# vlan rang 100,200

DeviceC(config-vlan-range)# exit

# 在Device A上配置VLAN 100。

DeviceA> enable

DeviceA# configure terminal

DeviceA(config)# vlan 100

DeviceA(config-vlan-range)# exit

# 在Device B上配置VLAN 200。

DeviceB> enable

DeviceB# configure terminal

DeviceB(config)# vlan 200

DeviceB(config-vlan-range)# exit

配置干道接口。

# 将Device D的下联口GigabitEthernet 0/1~3配置为Trunk口。

DeviceD(config)# interface range gigabitethernet 0/1-3

DeviceD(config-if-range)# switchport

DeviceD(config-if-range)# switchport mode trunk

DeviceD(config-if-range)# switchport trunk native vlan 1

DeviceD(config-if-range)# switchport trunk allowed vlan all

DeviceD(config-if-range)# end

DeviceD# write

# 将Device A、B、C的上联口GigabitEthernet 0/1配置为Trunk口。A、B、C配置类似,以Device A为例。

DeviceA(config)# interface gigabitethernet 0/1

DeviceA(config-if-GigabitEthernet 0/1)# switchport

DeviceA(config-if-GigabitEthernet 0/1)# switchport mode trunk

DeviceA(config-if-GigabitEthernet 0/1)# switchport trunk native vlan 1

DeviceA(config-if-GigabitEthernet 0/1)# switchport trunk allowed vlan all

DeviceA(config-if-GigabitEthernet 0/1)# exit

配置Office中连接用户的接口加入固定VLAN。

# Device A上连接用户的接口GigabitEthernet 0/2~3加入VLAN 100。

DeviceA(config)# interface range gigabitethernet 0/2-3

DeviceA(config-if-range)# switchport

DeviceA(config-if-range)# switchport mode access

DeviceA(config-if-range)# switchport access vlan 100

DeviceA(config-if-range)# end

DeviceA# write

# Device B上连接用户的接口GigabitEthernet 0/2~3加入VLAN 200。

DeviceB(config)# interface range gigabitethernet 0/2-3

DeviceB(config-if-range)# switchport

DeviceB(config-if-range)# switchport mode access

DeviceB(config-if-range)# switchport access vlan 200

DeviceB(config-if-range)# end

DeviceB# write

配置Device C上连接用户的接口GigabitEthernet 0/2,根据用户MAC地址的不同,加入不同VLAN。

# 配置全局静态MAC VLAN规则。

DeviceC(config)# mac-vlan mac-address 54bf.6450.dd10 vlan 100 priority 1

DeviceC(config)# mac-vlan mac-address 54bf.6450.dd20 mask ffff.ffff.fff0 vlan 200 priority 2

# 配置下联口GigabitEthernet 0/2为Hybrid口,将MAC VLAN加入Hybrid口许可通过的Untagged VLAN列表。

DeviceC(config)# interface gigabitethernet 0/2

DeviceC(config-if-GigabitEthernet 0/2)# switchport

DeviceC(config-if-GigabitEthernet 0/2)# switchport mode hybrid

DeviceC(config-if-GigabitEthernet 0/2)# switchport hybrid native vlan 1

DeviceC(config-if-GigabitEthernet 0/2)# switchport hybrid allowed vlan add untagged 1,100,200

# 开启接口MAC VLAN功能。

DeviceC(config-if-GigabitEthernet 0/2)# mac-vlan enable

DeviceC(config-if-GigabitEthernet 0/2)# end

DeviceC# write

验证配置结果

通过show mac-vlan interface命令查看开启MAC VLAN功能的接口信息。

DeviceC# show mac-vlan interface

MAC VLAN is enabled on following interface:

---------------------------------------

GigabitEthernet 0/2

通过show interface命令查看接口GigabitEthernet 0/2发送MAC VLAN的报文不带Tag。

DeviceC(config-if-GigabitEthernet 0/2)# show interface gigabitethernet 0/2

Bridge attributes:

Port-type: hybrid

Tagged vlan id: 2-99,101-199,201-4094

Untagged vlan id: 1,100,200

在Device C上查看静态(Static)MAC VLAN表项。

DeviceC# show mac-vlan static

The following MAC VLAN address exist:

S: Static   D: Dynamic

MAC ADDR            MASK             VLAN ID   PRIO   STATE

-------------------------------------------------------

54bf.6450.dd10      ffff.ffff.ffff   100       1       S

54bf.6450.dd20      ffff.ffff.fff0   200       2       S

Total MAC VLAN address count: 2

为了验证MAC VLAN功能将终端划分到不同VLAN中实现二层隔离,将PC-A1、PC-A2、PC-B2配置到同一网段中,验证只有同VLAN中的终端可以ping通。

# PC-A2在Office A接入,属于VLAN 100,配置其IP地址和掩码为192.168.5.12/24。

PC-A2> enable

PC-A2# configure terminal

PC-A2(config)# interface gigabitethernet 0/1

PC-A2(config-if-GigabitEthernet 0/1)# no switchport

PC-A2(config-if-GigabitEthernet 0/1)# ip address 192.168.5.12/24

# PC-B2在Office B接入,属于VLAN 200,配置其IP地址和掩码为192.168.5.22/24。

PC-B2> enable

PC-B2# configure terminal

PC-B2(config)# interface gigabitethernet 0/1

PC-B2(config-if-GigabitEthernet 0/1)# no switchport

PC-B2(config-if-GigabitEthernet 0/1)# ip address 192.168.5.22/24

# PC-A1在会议室接入,配置其IP地址和掩码为192.168.5.11/24。验证PC-A1能ping通VLAN 100中的PC-A2,不能ping通VLAN 200中的PC-B2,说明PC-A1被MAC VLAN功能分配到VLAN 100中。

PC-A1> enable

PC-A1# configure terminal

PC-A1(config)# interface gigabitethernet 0/1

PC-A1(config-if-GigabitEthernet 0/1)# no switchport

PC-A1(config-if-GigabitEthernet 0/1)# ip address 192.168.5.11/24

PC-A1(config-if-GigabitEthernet 0/1)# end

PC-A1# ping 192.168.5.12

Sending 5, 100-byte ICMP Echoes to 192.168.5.12, timeout is 2 seconds:

< press Ctrl+C to break >

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 2/22/103 ms.

PC-A1# ping 192.168.5.22

Sending 5, 100-byte ICMP Echoes to 192.168.5.22, timeout is 2 seconds:

< press Ctrl+C to break >

....

Success rate is 0 percent (0/5).

配置文件

Device C的配置文件

vlan range 1,100,200

!

mac-vlan mac-address 54bf.645c.dd10 vlan 100 priority 1

mac-vlan mac-address 54bf.6450.dd20 mask ffff.ffff.fff0 vlan 200 priority 2

!

interface GigabitEthernet 0/1

switchport

switchport mode trunk

switchport trunk native vlan 1

switchport trunk allowed vlan only 1-4094

!

interface GigabitEthernet 0/2

switchport

switchport mode hybrid

switchport hybrid native vlan 1

switchport hybrid allowed vlan only tagged 2-99,101-199,201-4094

mac-vlan enable

Device A的配置文件

vlan range 1,100

!

interface GigabitEthernet 0/1

switchport

switchport mode trunk

switchport trunk native vlan 1

switchport trunk allowed vlan only 1-4094

!

interface GigabitEthernet 0/2

switchport

switchport mode access

switchport access vlan 100

!

interface GigabitEthernet 0/3

switchport

switchport mode access

switchport access vlan 100

Device B的配置文件

vlan range 1,200

!

interface GigabitEthernet 0/1

switchport

switchport mode trunk

switchport trunk native vlan 1

switchport trunk allowed vlan only 1-4094

!

interface GigabitEthernet 0/2

switchport

switchport mode trunk

switchport trunk native vlan 1

switchport trunk allowed vlan only 1-4094

!

interface GigabitEthernet 0/3

switchport

switchport mode trunk

switchport trunk native vlan 1

switchport trunk allowed vlan only 1-4094

Device D的配置文件

vlan range 1,100,200

!

interface GigabitEthernet 0/1

switchport

switchport mode trunk

switchport trunk native vlan 1

switchport trunk allowed vlan only 1-4094

!

interface GigabitEthernet 0/2

switchport

switchport mode trunk

switchport trunk native vlan 1

switchport trunk allowed vlan only 1-4094

!

interface GigabitEthernet 0/3

switchport

switchport mode trunk

switchport trunk native vlan 1

switchport trunk allowed vlan only 1-4094

常见错误

配置接口MAC VLAN功能时,未将以太网接口或聚合接口先配置为二层接口。