ACL规则无法匹配、包过滤不生效
一、开始
高端交换机(S12500/9500E)包过滤策略的排查思路如下:
二、流程图相关操作说明:
首先通过命令:display packet-filter来检查包过滤配置的方向是否正确。如下图:需要在设备A的G0/1口配置包过滤,使得PCB 不能从PCA下载FTP报文,但其他报文能正常通信。配置后发现PCB依旧能从PCA进行FTP下载。

通过display packet-filter 查看G0/1配置方向是出方向,配置错误了,应该配置入方向,因为ACL写的目的地址是30.0.0.2,那么需要配置入方向。
[H3C]dis packet-filter interface
Interface: GigabitEthernet0/1
Out-bound policy:
ACL 3000
[H3C]dis acl 3000
Advanced ACL 3000, named -none-, 1 rule,
ACL"s step is 5
rule 5 deny udp destination 30.0.0.2 0 destination-port eq 20
将QOS策略下发到正确方向。例如这个例子中,需要将包过滤下发到接口的IN方向。
[H3C-GigabitEthernet0/1]undo packet-filter 3000 outbound
[H3C-GigabitEthernet0/1]packet-filter 3000 inbound
[H3C]dis packet-filter interface
Interface: GigabitEthernet0/1
In-bound policy:
ACL 3000
如果ACL规则写错了,没有匹配到报文,那么也是不会生效的。需要查看ACL规则的配置,确认ACL规则是否写的正确。
命令: display acl XXXX
例如:通过命令确认ACL规则是否匹配了需要做包过滤的流量。这个例子中因为需求是限制FTP的流量,这里写错了UDP端口号,而FTP是TCP报文。
[H3C]dis acl 3000
Advanced ACL 3000, named -none-, 1 rule,
ACL"s step is 5
rule 5 deny udp destination 30.0.0.2 0 destination-port eq 20
若通过display acl命令,查看规则中所写的rule规格错误,则需要重新下发rule命令,修改rule规则,确保rule规则匹配到流量。如果ACL中rule规则没有匹配所需做包过滤的流量,则需新增rule规则匹配该流量。
命令:rule
例如:ACL规则中将需要做包过滤策略改为匹配TCP报文。
[H3C]dis acl 3000
[H3C-acl-adv-3000]rule 10 deny tcp destination 30.0.0.2 0 destination-port eq ftp
[H3C-acl-adv-3000]undo rule 5
[H3C-acl-adv-3000]display this
#
acl number 3000
rule 10 deny tcp destination 30.0.0.2 0 destination-port eq ftp
查看单板ACL资源利用情况,判断ACL资源是否已被耗尽,导致下发的ACL规则实际没有生效。
V5平台命令:
display acl resource
V7平台命令:
dis qos-acl resource
例如:通过下发命令查看各个槽位单板ACL资源利用情况。
V5:
<H3C>display acl resource
Interface:
GE2/0/1 to GE2/0/24
---------------------------------------------------------------------
Type Total Reserved Configured Remaining Usage
---------------------------------------------------------------------
ACL rule 2048 0 1978 70 96%
Inbound ACL 2048 0 1978 70 96%
Outbound ACL 2048 0 0 70 0%
Interface:
XGE3/0/1 to XGE3/0/2
---------------------------------------------------------------------
Type Total Reserved Configured Remaining Usage
---------------------------------------------------------------------
ACL rule 8192 96 3 8093 1%
Inbound ACL 8192 96 3 8093 1%
Outbound ACL 8192 0 0 8093 0%
Interface:
XGE3/0/3 to XGE3/0/4
---------------------------------------------------------------------
Type Total Reserved Configured Remaining Usage
---------------------------------------------------------------------
ACL rule 8192 96 3 8093 1%
Inbound ACL 8192 96 3 8093 1%
Outbound ACL 8192 0 0 8093 0%
V7:
[H3C]dis qos-acl resource slot 2
Interfaces: GE2/0/1 to GE2/0/24
---------------------------------------------------------------------
Type Total Reserved Configured Remaining Usage
---------------------------------------------------------------------
ACL rule 8192 96 6 8090 1%
Inbound ACL 8192 96 5 8090 1%
Outbound ACL 8192 0 1 8090 0%
IN-MQC-CAR 8192 0 0 8192 0%
IN-COMM-CAR 7168 0 0 7168 0%
IN-COUNT 8192 0 64 8128 0%
OUT-MQC-CAR 8192 0 64 8128 0%
OUT-COUNT 8192 0 64 8128 0%
ACL资源是按芯片划分的,多个接口共有一个芯片资源。通过display acl resource命令可以看到所有槽位芯片ACL资源的利用情况,如上V5所示,2槽位单板的GE2/0/1至GE2/0/24属于同一个芯片,2048的ACL资源由这24个接口共用。从示例中看到2槽位单板2048的ACL资源已利用了96%,已接近ACL资源耗尽,会导致涉及ACL下发的功能出现异常,包括包过滤的使用。而3槽位的XG3/0/1和XG3/0/2属于同一个芯片,共用8192的ACL资源,当前ACL资源利用率为1%,ACL资源充足。XG3/0/3和XG3/0/4类似。V7平台的情况一样。
如果确定ACL超资源,那么可以根据现场情况优化ACL资源,如果不能优化,只能更换高规格单板。例如,对于高端交换机,如果相同的包过滤策略下发到多个接口,占用的acl资源是这几个接口占用ACL的资源之和。这种情况下,如果这几个接口vlan相同,可以基于vlan下发,不要基于接口下发。如果是V5设备不能基于vlan下发,可以改为MQC方式,然后基于VLAN下发,这样芯片就只占用一份ACL资源了。
对于V7系列高端交换机,包过滤可以下发在全局,下发在接口,也可以下发在VLAN中,当设备同时这几种情况都下发时,那么需要检查这包过滤的ACL中是否有rule冲突的情况,对于高端交换机,包过滤策略下发到不同视图下的优先级关系为:全局视图>接口视图>VLAN视图。因此如果全局包过滤匹配的ACL中的报文与接口包过滤ACL的报文有重叠的时候,会出现该报文匹配全局包过滤后,不能再匹配接口包过滤的情况,因此出现接口包过滤不生效。需要结合所需做包过滤的ACL规则,对配置进行排查。
命令: display packet-filter
例如:在G3/2/0/1下发packet-filter 3000,过滤目的地址30.0.0.2的ftp报文,发现没有生效,display packet-flter global查看到下发了全局的包过滤3001,允许了到目的网段30.0.0.0的所有报文,这个网段包括了30.0.0.2这个主机,因此下发到接口的packet-filter 3000没有生效。虽然vlan也下发了一个包过滤,允许所有报文,但是vlan内的优先级最低,不影响接口的包过滤。
H3C]dis packet-filter global //查看全局视图下发的包过滤
Global:
Out-bound policy:
ACL 3001
[H3C]dis acl 3001
Advanced ACL 3001, named -none-, 1 rule,
ACL"s step is 5
rule 0 permit ip destination 30.0.0.0 0.0.0.255
[H3C]dis packet-filter interface //查看接口视图下发的包过滤
Interface: GigabitEthernet3/2/0/1
Out-bound policy:
ACL 3000
[H3C]dis acl 3000
Advanced ACL 3000, named -none-, 1 rule,
ACL"s step is 5
rule 5 deny tcp destination 30.0.0.2 0 destination-port eq ftp
[H3C]dis packet-filter vlan //查看在vlan下发的包过滤
VLAN: 10
Out-bound policy:
ACL 3002
[H3C]dis acl 3002
Advanced ACL 3002, named -none-, 1 rule,
ACL"s step is 5
rule 0 permit ip
对于V5和V7系列高端交换机,包过滤可以下发在物理接口和vlan虚接口,如果它们的ACL中的rule匹配的报文有重叠,那么下发在物理接口的优先匹配,那么vlan虚接口的就不会生效。例如:我需要在int vlan 10里面下发packet-filter, 过滤目的地址30.0.0.2的ftp报文,发现没有生效,display packet-flter interface查看到vlan10所在的物理接口也下发了packet-filter,允许了到目的网段30.0.0.0的所有报文,这个网段包括了30.0.0.2这个主机,因此下发到vlan虚接口的packet-filter 3000没有生效。
interface GigabitEthernet3/2/0/1
port link-mode bridge
port link-type access
port access vlan 10
packet-filter 3000 inbound
#
return
[H3C]dis packet-filter interface
Interface: GigabitEthernet3/2/0/1
In-bound policy:
ACL 3001
Interface: Vlan-interface10
In-bound policy:
ACL 3000
[H3C]dis acl 3000
Advanced ACL 3000, named -none-, 1 rule,
ACL"s step is 5
rule 5 deny tcp destination 30.0.0.2 0 destination-port eq ftp
[H3C]dis acl 3001
Advanced ACL 3001, named -none-, 1 rule,
ACL"s step is 5
rule 0 permit ip destination 30.0.0.0 0.0.0.255
通过上一步的排查发现:不同视图下匹配的报文有重叠,导致低优先级视图下发的包过滤不生效,需修改配置。
例如:上面vlan虚接口和物理接口同时下发的情况,可以直接在物理接口下包过滤的ACL中条件需要过滤的rule规则,不需要继续在vlan虚接口下发了。
[H3C]dis acl 3001
Advanced ACL 3001, named -none-, 1 rule,
ACL"s step is 5
rule 0 permit ip destination 30.0.0.0 0.0.0.255
[H3C]acl number 3001
[H3C-acl-adv-3001]rule 10 deny tcp destination 30.0.0.2 0 destination-port eq ftp
[H3C-acl-adv-3001]undo rule 0
[H3C-acl-adv-3001]rule 15 permit ip destination 30.0.0.0 0.0.0.255
[H3C-acl-adv-3001]dis this
#
acl number 3001
rule 10 deny tcp destination 30.0.0.2 0 destination-port eq ftp
rule 15 permit ip destination 30.0.0.0 0.0.0.255
高端交换机支持的rule规则的长度为40B/48B/80B,这表示ACL规则中各个字段的长度(单位字节),如MAC占用6个字节。
在标准板(EB类单板)中只支持48B的表项。
在增强板(除了EB外的其他单板,包括EC,EF,FD,FG等)默认工作为标准模式(48B),支持40B/80B的转换。可以通过全局命令acl ipv6 enable 修改支持acl字段的长度为80B,需要整框重启后才能生效。
入方向的支持情况如下:
出方向的支持情况:
默认情况下,高端交换机出方向不支持匹配目的MAC的二层ipv4报文,因为默认情况下只能支持40B的字段。
例如: S125 配合多插卡遇到的最多的情况,插入OAA板卡(IPS,FW)。报文二层到交换机,然后二层到IPS插卡处理后回到S12508,网关在S12508上面.配置完成后,发现下联服务器与网关不通,为了实现需求,配置如下,配置中为了防止环路,只允许访问网关地址的报文通过。
acl number 4000
rule 0 permit type 0800 ffff dest-mac 000f-e22e-94b3 ffff-ffff-ffff
rule 1 permit type 88a7 ffff
rule 5 deny
interface Ten-GigabitEthernet3/0/1
packet-filter 4000 outbound
查看设备中的配置,配置中默认有如下配置:
acl ipv6 disable
该命令作用为将EC、EF类等增强单板,将acl规则长度改为40字节(缺省支持40B),但是当acl规则长度为40字节时,该acl在出方向下发则不支持匹配ipv4的目的mac地址,现场的IPS插卡和FW插卡都是EC单板。packet filter和MQC都是下发在这些OAA插卡的内联口的, acl num 4000中rule 0为匹配目的mac,所以无法生效,进而匹配了rule5的deny规则,因此出现网关不通的问题.
对于这样的情况,需要将acl ipv6 disable改为acl ipv6 enable,然后重启整框生效。更改模式后,可以支持80B长度的字段。
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作