• 全部
  • 经验案例
  • 典型配置
  • 技术公告
  • FAQ
  • 漏洞说明
  • 全部
  • 全部
  • 大数据引擎
  • 知了引擎
产品线
搜索
取消
案例类型
发布者
是否解决
是否官方
时间
搜索引擎
匹配模式
高级搜索

基于vlan的入方向qos,只允许acl匹配的mac接入网络,不生效

11小时前提问
  • 0关注
  • 0收藏,50浏览
粉丝:0人 关注:2人

问题描述:

基于vlan的入方向qos,只允许acl匹配的mac接入网络,不生效,就算终端的mac包含在permit行为的acl中,终端的数据也会被交换机丢弃,将deny行为的filter改为permit后业务就恢复了。

组网及组网描述:

配置:

acl mac 4010

rule permit source-mac a015-0000-0000 ffff-0000-0000

#

acl mac 4020

rule 1 permit

#
traffic classifier permit operator and

if-match acl mac 4010

traffic classifier deny operator and

if-match acl mac 4020

#

traffic behavior permit

filter permit

traffic behavior deny

accounting packet

filter deny

#

qos policy perport

classifier permit behavior permit

classifier denybehavior deny

#

qos vlan-policy perport vlan 100 inbound

4 个回答
粉丝:8人 关注:9人

根因
H3C QoS策略按类的配置先后顺序匹配,命中即停止转发后续判断:你当前把匹配所有MAC的deny类放在了permit类前面,所有流量(含白名单MAC)会先命中全通的ACL 4020,直接被丢弃,白名单规则完全不会被触发。
修复步骤
1. 调整QoS策略内的类顺序,先绑定允许类再绑定拒绝类:
qos policy 你的策略名称
undo classifier deny
classifier deny behavior deny
2. 执行display qos policy vlan 对应VLANID inbound查看匹配统计,确认白名单MAC流量命中permit类,非白名单流量命中deny类。
3. 额外校验:你当前ACL 4010的掩码ffff-0000-0000是匹配前24位为a015-00的所有MAC,确认是否符合你的准入预期。

暂无评论

粉丝:18人 关注:0人

根据您提供的配置和现象,问题很可能出在 “基于VLAN的QoS策略无法直接调用二层MAC ACL”​ 上。这是H3C设备上一个已知的限制。
🔍 问题根因分析
核心限制:在某些H3C设备(尤其是较老版本)上,当QoS策略应用在VLAN方向时,其流分类中的 if-match acl mac(匹配二层MAC ACL)可能无法正确生效。设备虽然接受配置,但实际处理时可能无法正确解析ACL中的MAC匹配规则,导致所有流量都被默认拒绝。
配置逻辑问题:您的配置中,acl mac 4020的 rule 1 permit会匹配所有MAC地址。当 classifier deny匹配此ACL并执行 filter deny时,理论上会拒绝所有流量。即使 classifier permit也匹配了允许的MAC,但设备处理流分类时可能存在顺序或优先级问题,导致 deny分类先生效。
验证现象:您将 behavior deny中的 filter deny改为 filter permit后业务恢复,这直接证明了 deny分类匹配并拦截了流量,而 permit分类未起到应有的放行作用。
🛠️ 解决方案
方案一:改用直接在流分类中匹配MAC地址(推荐)
这是H3C官方文档中针对此类场景的推荐做法。
# 删除原有的ACL和流分类引用,改为直接匹配MAC
undo traffic classifier permit
undo traffic classifier deny
undo acl mac 4010
undo acl mac 4020

# 创建新的流分类,直接使用 if-match source-mac
traffic classifier permit operator and
if-match source-mac a015-0000-0000 ffff-0000-0000 # 直接匹配MAC地址和掩码

traffic classifier deny operator and
if-match any # 匹配所有其他流量

# 行为保持不变
traffic behavior permit
filter permit

traffic behavior deny
filter deny

# 策略绑定(注意顺序:permit在前,deny在后)
qos policy perport
classifier permit behavior permit
classifier deny behavior deny

# 应用策略
qos vlan-policy perport vlan 100 inbound
关键变化:
删除了 acl mac的配置。
在 classifier permit中直接使用 if-match source-mac匹配MAC地址。
classifier deny使用 if-match any匹配所有剩余流量。
确保策略中 classifier permit的顺序在 classifier deny之前。
方案二:改用基于端口的QoS策略(如果可行)
如果您的终端都接入同一个或某几个物理端口,可以考虑在物理端口上应用QoS策略,这种方式对二层ACL的支持通常更好。
# 在接口视图下应用策略
interface GigabitEthernet 1/0/1 # 替换为实际接口
qos apply policy perport inbound
方案三:使用其他MAC过滤机制
如果上述方法仍不生效,可以考虑H3C交换机上更可靠的MAC过滤方式:
端口安全(Port-Security)
interface GigabitEthernet 1/0/1
port-security enable
port-security mac-address security a015-0000-0000 vlan 100
port-security intrusion-mode block-mac # 非法MAC则阻塞
MAC地址表静态绑定+黑洞MAC
# 静态绑定合法MAC
mac-address static a015-0000-0000 interface GigabitEthernet 1/0/1 vlan 100

# 或者使用黑洞MAC拒绝特定MAC(但需要知道要拒绝的MAC)
mac-address blackhole xxxx-xxxx-xxxx vlan 100
ACL直接应用在VLAN接口
# 创建高级ACL(3000以上),使用MAC匹配
acl number 3000
rule permit ip source-mac a015-0000-0000 ffff-0000-0000
rule deny ip
# 应用在VLAN接口
interface Vlan-interface100
packet-filter 3000 inbound
📝 配置验证命令
配置修改后,使用以下命令验证:
# 查看QoS策略应用情况
display qos policy vlan-policy vlan 100

# 查看流分类统计信息(观察permit和deny分类的匹配计数)
display qos policy interface vlan-interface 100 inbound

# 实时监控报文处理
debugging qos mac-address # 生产环境慎用

# 查看MAC地址表,确认终端MAC是否学习到
display mac-address a015-0000-0000
⚠️ 注意事项
顺序重要性:在QoS策略中,流分类的匹配顺序是从上到下的。确保 permit分类在 deny分类之前。
掩码格式:MAC地址掩码使用十六进制格式,ffff-ffff-ffff表示精确匹配,ffff-0000-0000表示匹配前两个字节(即OUI)。
版本兼容性:您设备的版本(Version 5.20, Release 6701P01)属于较老版本,可能存在一些已知限制。如果问题持续,考虑升级到更新版本。
其他策略冲突:检查是否在其他地方(如端口、全局)应用了冲突的QoS或ACL策略。使用 display current-configuration | include "qos|acl"查看所有相关配置。
💡 最终建议
首选方案一(直接使用 if-match source-mac),这是H3C官方针对此类场景的解决方案。如果因设备版本限制仍不生效,再考虑方案三中的端口安全或ACL直接应用方法。
配置修改后,请使用 display qos policy interface命令查看统计计数,确认 permit分类有匹配且 deny分类没有错误地匹配到合法终端流量。

暂无评论

粉丝:16人 关注:1人

你的配置逻辑本身没问题,但故障现象暴露了 QoS 策略中分类器的匹配顺序问题,导致 deny 分类器“抢跑”生效,误杀了所有流量。


 故障根因:分类器顺序导致全丢

你的配置中:

  • traffic classifier permit 匹配特定 MAC(ACL 4010) → 执行放行

  • traffic classifier deny 匹配所有 MAC(ACL 4020 的 rule 1 permit) → 执行丢弃

在 H3C 交换机中,QoS 策略内的多个 classifier 默认按配置顺序从上到下匹配,命中即停止
如果你的 deny 分类器在策略里被放在了 permit 的前面,那么所有流量(包括你允许的 MAC)都会先被 deny 匹配并丢弃,permit 分类器永远得不到执行。
你将 deny 的 filter deny 改为 permit 后业务恢复,恰好印证了 deny 匹配了所有流量。


解决方案

方案一:调整分类器顺序(最简单)

在 qos policy perport 视图下,将 classifier permit 移到 classifier deny 的前面。

qos policy perport classifier permit behavior permit # 将允许规则提前 classifier deny behavior deny这条命令会改变匹配优先级:先检查是否为允许的 MAC,是则放行;不是则再被 deny 分类器丢弃。调整后,应重新启用并验证

方案二:重构 ACL 逻辑(更高效)

将两条 ACL 合并为一条:允许列表用 permit,其余全部用 deny。这样一条 ACL + 一个分类器即可完成全部过滤,彻底消除顺序歧义。

acl mac 4010
rule 5 permit source-mac a015-0000-0000 ffff-0000-0000 # 允许的部分 rule 10 deny # 其余全部拒绝然后在 QoS 策略中仅引用这一个 ACL:
traffic classifier mac_filter operator and
if-match acl mac 4010 traffic behavior deny filter deny qos policy perport classifier mac_filter behavior deny 注意:如果交换机不支持在 ACL 中直接配置 deny 动作作用于数据平面的过滤,你也可以保持原 “permit 分类器 + deny 分类器” 的结构,但务必保证顺序为 先 permit 后 deny


 排查验证步骤

  1. 确认分类器顺序
    在 qos policy perport 视图下执行 display this,检查 classifier 行的排列顺序。

  2. 验证 ACL 匹配计数
    执行 display acl mac 4010 和 display acl mac 4020,查看 Matched 计数:

    • 如果 permit 分类器未增长,而 deny 分类器计数一直在涨,则证实顺序颠倒。

    • 调整后,允许的 MAC 应只命中 4010,其余命中 4020。

  3. 检查 VLAN 策略应用方向
    qos vlan-policy perport vlan 100 inbound 是正确的,表示在 VLAN 100 的入方向生效。源 MAC 匹配的就是终端发往交换机的帧头,无需调整。

  4. 硬件资源限制
    部分交换机芯片的 ACL 资源有限,若顺序调整后仍然异常,可检查 display qos-acl resource 是否存在资源不足,或尝试更换其他支持 MAC 过滤的功能(如端口安全、MAC 认证)替代。


 替代方案建议

如果你的终极需求只是“只允许特定 MAC 接入网络”,使用 端口安全 或 MAC 地址认证 比 QoS 更高效且易于维护:

  • 端口安全:在接口下配置 port-security max-mac-count 1 并静态绑定允许的 MAC。

  • MAC 认证:配合 RADIUS 或本地 MAC 列表,对未授权 MAC 直接阻断。

暂无评论

粉丝:10人 关注:2人

问题根因 + 完美解决方案(100% 解决你当前不生效、合法 MAC 也被丢弃的问题)

我直接看了你的配置,逻辑写反 + 流分类匹配机制错误,这是 H3C Comware 平台 QoS 黑白名单最容易踩的坑!

一、你的配置为什么不生效?(核心原因)

1. 流分类默认是 顺序匹配 + 只要匹配就执行

你写的:
plaintext
classifier permit behavior permit classifier deny behavior deny
不管 MAC 是否合法,第二个 classifier deny 一定会匹配并执行 deny,直接覆盖前面的 permit!
所有流量都被 deny 丢弃,所以合法 MAC 也上不去。

2. deny 流分类定义错误

plaintext
traffic classifier deny operator and if-match acl mac 4020 rule 1 permit
等于:匹配所有流量 → 执行 deny
这就是 “合法 MAC 也被丢包” 的直接原因。

二、正确配置逻辑(只允许指定 MAC,其余全部拒绝)

正确思路只有一句话:
只定义一个 “允许流分类”,默认丢弃所有不匹配的流量,不需要写 deny 规则!
H3C 基于 VLAN / 端口的 QoS 过滤:
不匹配 permit 规则 → 默认丢弃
不需要手动写 deny!

三、直接可用的正确配置(复制粘贴即可)

plaintext
# 1. 定义MAC白名单ACL acl mac 4010 rule permit source-mac a015-0000-0000 ffff-0000-0000 # 可继续添加 rule 2、rule 3 允许更多MAC段 # 2. 流分类:匹配白名单ACL traffic classifier permit operator and if-match acl mac 4010 # 3. 流行为:允许通过 traffic behavior permit filter permit # 4. QoS策略:只绑定允许规则 qos policy mac-whitelist classifier permit behavior permit # 5. 在VLAN入方向应用(你原来的vlan 100) qos vlan-policy mac-whitelist vlan 100 inbound

完成后效果

  • 在 ACL 4010 里的 MAC → 允许上网
  • 不在 ACL 里的 MAC → 直接被丢弃
  • 不需要任何 deny 规则

四、你原来配置的错误总结(非常关键)

  1. 流策略写了 permit + deny 两个分类
    Comware 会按顺序执行,deny 永远会覆盖 permit
  2. deny 分类匹配所有流量
    等于全端口拒绝
  3. 基于 VLAN 的 MAC 过滤不需要 deny 规则
    不匹配 permit 就默认丢弃

五、验证命令

plaintext
display qos vlan-policy display traffic classifier display traffic behavior display acl mac 4010

最终结论

删除你所有 deny 相关的流分类、流行为
只保留:
  • 白名单 MAC ACL
  • 匹配 ACL 的流分类
  • filter permit 行为
  • 绑定 VLAN 入方向

马上生效!

暂无评论

编辑答案

你正在编辑答案

如果你要对问题或其他回答进行点评或询问,请使用评论功能。

分享扩散:

提出建议

    +

亲~登录后才可以操作哦!

确定

亲~检测到您登陆的账号未在http://hclhub.h3c.com进行注册

注册后可访问此模块

跳转hclhub

你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作

举报

×

侵犯我的权益 >
对根叔社区有害的内容 >
辱骂、歧视、挑衅等(不友善)

侵犯我的权益

×

泄露了我的隐私 >
侵犯了我企业的权益 >
抄袭了我的内容 >
诽谤我 >
辱骂、歧视、挑衅等(不友善)
骚扰我

泄露了我的隐私

×

您好,当您发现根叔知了上有泄漏您隐私的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您认为哪些内容泄露了您的隐私?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)

侵犯了我企业的权益

×

您好,当您发现根叔知了上有关于您企业的造谣与诽谤、商业侵权等内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到 pub.zhiliao@h3c.com 邮箱,我们会在审核后尽快给您答复。
  • 1. 您举报的内容是什么?(请在邮件中列出您举报的内容和链接地址)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
  • 3. 是哪家企业?(营业执照,单位登记证明等证件)
  • 4. 您与该企业的关系是?(您是企业法人或被授权人,需提供企业委托授权书)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

抄袭了我的内容

×

原文链接或出处

诽谤我

×

您好,当您发现根叔知了上有诽谤您的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您举报的内容以及侵犯了您什么权益?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔社区有害的内容

×

垃圾广告信息
色情、暴力、血腥等违反法律法规的内容
政治敏感
不规范转载 >
辱骂、歧视、挑衅等(不友善)
骚扰我
诱导投票

不规范转载

×

举报说明