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的关联关系。通过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功能只在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,使员工从任意接口接入,都会被自动划分到部门所在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典型组网图
配置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