interface Vlan-interface1036
ip binding vpn-instance Core_AppDB_Zone
ip address 10.74.36.1 255.255.255.0
packet-filter 3036 outbound
#
return
[AGG]dis cu int vlan 1044
#
interface Vlan-interface1044
description OCEANBASE_SOC
ip binding vpn-instance Core_AppDB_Zone
ip address 10.74.44.1 255.255.255.0
packet-filter 3044 outbound
[AGG]dis acl 3036
Advanced IPv4 ACL 3036, 8 rules,
ACL's step is 5
rule 10 permit ip source 10.74.36.0 0.0.0.255
rule 20 permit tcp source 10.74.34.0 0.0.0.255 destination 10.74.36.0 0.0.0.255
rule 9990 deny ip source 10.74.32.0 0.0.31.255
rule 10000 permit ip
[AGG]dis acl 3044
Advanced IPv4 ACL 3044, 15 rules,
ACL's step is 5
rule 10 permit ip source 10.74.44.0 0.0.0.255
rule 20 permit tcp source 10.74.33.0 0.0.0.255 destination 10.74.44.0 0.0.0.255 source-port eq 22
rule 30 permit tcp source 10.74.33.0 0.0.0.255 destination 10.74.44.0 0.0.0.255 source-port range 2881 2885
rule 40 permit tcp source 10.74.33.0 0.0.0.255 destination 10.74.44.0 0.0.0.255 source-port range 62881 63881
rule 50 permit tcp source 10.74.33.0 0.0.0.255 destination 10.74.44.0 0.0.0.255 destination-port eq 22
rule 60 permit tcp source 10.74.33.0 0.0.0.255 destination 10.74.44.0 0.0.0.255 destination-port eq www
rule 70 permit tcp source 10.74.33.0 0.0.0.255 destination 10.74.44.0 0.0.0.255 destination-port range 2881 2884
rule 80 permit tcp source 10.74.33.0 0.0.0.255 destination 10.74.44.0 0.0.0.255 destination-port range 3306 3307
rule 90 permit tcp source 10.74.33.0 0.0.0.255 destination 10.74.44.0 0.0.0.255 destination-port eq 8080
rule 100 permit icmp source 10.74.33.0 0.0.0.255 destination 10.74.44.0 0.0.0.255
rule 110 permit tcp source 10.74.35.40 0 destination 10.74.44.0 0.0.0.255
rule 120 permit tcp source 10.74.35.0 0.0.0.255 destination 10.74.44.0 0.0.0.255 source-port range 1521 1522
rule 130 permit tcp source 10.74.39.0 0.0.0.255 destination 10.74.44.0 0.0.0.255 destination-port eq 2883
rule 9990 deny ip source 10.74.32.0 0.0.31.255
rule 10000 permit ip
[AGG]
如上,源 10.74.36.3,目的10.74.44.17,这里ACL 中rule 9990 deny为什么没有拦截,还能正常访问?
核心结论
10.74.36.3 → 10.74.44.17 流量不会被 rule 9990 deny 拦截,根源两点:
rule 9990 匹配源段:10.74.32.0 0.0.31.255,先算网段范围;
ACL 是出方向 packet-filter 绑定在 Vlanif,流量匹配逻辑区分 “源、目的是否属于本 VLAN 接口网段”。
一、先计算 rule 9990 拒绝的源地址段
掩码反掩码 0.0.31.255,块大小 32:
网络段:10.74.32.0 ~ 10.74.63.255
你的源 IP:10.74.36.3,确实落在 10.74.32.0/19 范围内,单看 IP 是匹配这条 deny 规则的。
关键不在 IP 段,在 ACL 绑定位置 + 流量方向。
二、梳理组网与流量走向
Vlanif1036:10.74.36.1/24,绑定 acl 3036 outbound
本接口网段:10.74.36.0/24
Vlanif1044:10.74.44.1/24,绑定 acl 3044 outbound
本接口网段:10.74.44.0/24
流量:10.74.36.3 (Vlan1036) → 10.74.44.17 (Vlan1044)
完整转发路径:
流量从接入侧进入交换机,路由转发到 Vlanif1044;
从Vlanif1044 接口 outbound 方向转发出去,去往 10.74.44.0/24 终端;
此时生效的 ACL 是 packet-filter 3044 outbound,acl 3036 只在 Vlanif1036 出方向生效,对这条跨 VLAN 流量不生效。
三、分清楚两条 ACL 各自管控什么流量
1. ACL 3036(绑定 Vlanif1036 outbound)
仅管控:源为 10.74.36.0/24,从 Vlanif1036 往外转发的流量。
场景举例:10.74.36.x 访问 10.74.44.x,流量离开 Vlanif1036 时才会匹配 acl3036。
2. ACL 3044(绑定 Vlanif1044 outbound)
管控:所有从 Vlanif1044 接口向外转发的流量,你这条跨 VLAN 流量最终从 Vlanif1044 发出,匹配 acl3044。
四、逐条核对 acl 3044 对 10.74.36.3→10.74.44.17 的匹配顺序
acl 规则从小到大依次匹配,命中即停止后续规则:
rule10:permit ip source 10.74.44.0 0.0.0.255
源是 10.74.36.3,不匹配,跳过;
rule20~rule130:所有规则源是 10.74.33.0/24、10.74.35.40、10.74.35.0/24、10.74.39.0/24,均不包含 10.74.36.3,全部跳过;
rule9990:deny ip source 10.74.32.0 0.0.31.255
虽然源 IP 段匹配,但这条规则排在前面十几条允许规则之后,只有前面全部不命中才会走到这条;
rule10000:permit ip
所有前面规则未匹配的流量全部放行。
完整逻辑复现
10.74.36.3→10.74.44.17 进入 acl3044 校验:
rule10~rule130 全都不匹配 → 走到 rule9990(deny 段)→ 再往下还有 rule10000 全允许,rule9990 只拦截同源段、且前面规则未放行的流量,但末尾全局 permit 覆盖了它。
等于:只要不是前面精确放行的业务源,先过一次 deny 段,但最后一条全部放通,deny 9990 形同虚设。
五、两个核心问题总结
流量生效的是 acl3044,不是 acl3036;acl3036 的 deny 9990 管不到这条跨 VLAN 流量;
acl3044 内部规则顺序错误:
rule9990 deny 放在一堆业务允许规则之后、全局 permit 之前;
全局rule 10000 permit ip兜底,任何未被前面业务规则放行的流量,即使匹配 9990 deny,依然会被最后一条允许放行。
六、修复方案(两种按需选择)
方案 1:把黑名单 deny 规则移到 ACL 最前面(推荐)
plaintext
acl number 3044
undo rule 9990
rule 0 deny ip source 10.74.32.0 0.0.31.255
原理:黑名单优先匹配,只要源属于 10.74.32.0/19,直接丢弃,不会走到后面业务放行与全局 permit。
方案 2:删除末尾兜底 permit(不推荐,容易误阻断运维)
plaintext
acl number 3044
undo rule 10000
默认 ACL 末尾隐含 deny all,未匹配任何允许规则的流量全部丢弃。
补充:acl3036 同样存在相同缺陷
acl3036 里 rule9990 deny 也在业务规则后、rule10000 permit 前,10.74.32.0/19 网段访问 10.74.36.0/24 同样不会被拦截,建议同步调整规则顺序。
七、补充验证命令
plaintext
# 查看流量是否匹配对应ACL规则计数
display acl 3044
# 查看VLANIF出方向ACL绑定关系
display packet-filter interface Vlan-interface 1044
# 测试流量并抓ACL计数增量,确认命中哪条rule
暂无评论
rule 9990 deny ip source 10.74.32.0 0.0.31.255 未能拦截源IP 10.74.36.3 的流量,根本原因在于ACL规则的匹配顺序。
你提供的ACL 3036,其规则生效顺序是从上到下逐条匹配的。由于 rule 10 排在 rule 9990 之前,流量首先命中了 rule 10,因此被直接放行,后续的 rule 9990 不再执行。
具体分析如下:
规则匹配顺序:H3C交换机的ACL默认按照配置顺序(config) 进行匹配。设备会从第一条规则开始,逐一检查报文是否匹配。
命中即停止:一旦报文匹配到某条规则,设备会立即执行该规则的动作(permit或deny),并停止继续向下匹配。
你的ACL 3036规则顺序:
rule 10 permit ip source 10.74.36.0 0.0.0.255 (允许源网段 10.74.36.0/24)
rule 20 permit tcp ... (允许特定TCP流量)
rule 9990 deny ip source 10.74.32.0 0.0.31.255 (拒绝源网段 10.74.32.0/19)
rule 10000 permit ip (允许所有其他流量)
你的测试流量:源IP 10.74.36.3,目的IP 10.74.44.17。
第一步:报文到达VLAN接口1036,应用出方向ACL 3036。
匹配规则10:源IP 10.74.36.3 匹配 rule 10 的 source 10.74.36.0 0.0.0.255。这是一个精确匹配规则。
执行动作:因为 rule 10 的动作是 permit,报文被允许通过。
停止匹配:匹配过程结束,不再检查后续的 rule 9990。
因此,rule 9990 对这条特定流量从未生效。
要实现你的拦截目标,有以下几种调整方法:
调整规则顺序(推荐):将 rule 9990 deny ... 移动到 rule 10 permit ... 之前。这样,流量会先匹配到拒绝规则而被拦截。
注意:修改ACL规则顺序时,通常需要先删除原有规则,再按新顺序添加。为减少对业务的影响,建议在维护窗口操作。
修改规则10(需谨慎):让 rule 10 更精确,排除掉你想拒绝的源IP。例如,可以改为只允许特定IP,但此操作风险较高,可能误伤其他正常流量。
使用更精确的拒绝规则:在 rule 10 之前,添加一条专门拒绝 10.74.36.3 的规则。
这样可以精确拦截,不影响 rule 10 对网段内其他IP的放行
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论