吸烟
有害健康!

为什么无法通过ACL丢弃目的IP是本机地址的报文

【现象描述】

场景一:禁止PC访问S系列交换机

图1 禁止PC访问S系列交换机

如上图所示,PC 1和PC 2加入VLAN 10,PC 3和PC 4加入VLAN20,交换机Switch A下挂二层交换机做二层透传,交换机Switch A上配置接口VLANIF 10和VLANIF 20,所有的终端之间都互通。

现在希望PC 1可以访问VLAN 10内的所有终端(例如PC 2),但不能访问其他VLAN内的终端(例如PC 3和PC 4),也不能访问交换机(例如Switch A)。按照如下示例配置Switch A后,发现VLAN 10内的终端不能访问VLAN 20内的终端,但VLAN 10内的终端可以ping通Switch A。

#

acl number 3001

rule 5 permit ip source 192.168.10.0 0.0.0.255 destination 192.168.20.0 0.0.0.255

rule 10 permit ip source 192.168.10.0 0.0.0.255 destination 192.168.10.3 0

#

traffic classifier c1 operator or precedence 5

if-match acl 3001

#

traffic behavior b1

deny

#

traffic policy p1 match-order config

classifier c1 behavior b1

#

interface GE0/0/1

traffic-policy p1 inbound

#

场景二:只允许交换机的1个VLANIF接口地址做管理地址

图2 只允许交换机的1个VLANIF接口地址做管理地址

如上图所示,SwitchA上有多个VLANIF接口(例如VLANIF 10和VLANIF 20)。现在只希望VLANIF 10的地址(192.168.10.3)作为管理地址,该地址用于Telnet登录,其他VLANIF接口的地址(192.168.20.3)不能用于Telnet登录。按照如下示例,配置SwitchA后,发现VLAN10内的终端仍然可以ping通其他VLANIF接口的地址(192.168.20.3)。

#

acl number 3001

rule 5 permit tcp destination 192.168.20.3 0 destination-port eq telnet

#

traffic classifier c1 operator or precedence 5

if-match acl 3001

#

traffic behavior b1

deny

#

traffic policy p1 match-order config

classifier c1 behavior b1

#

interface GE0/0/1

traffic-policy p1 inbound

#

【原因分析】

用户访问交换机时,会发送目的IP地址为交换机地址的报文。交换机收到这类报文后,会将报文上送CPU处理。缺省情况下,交换机对上送CPU的报文按照系统自带的default防攻击策略进行限速;即便在交换机上应用新的防攻击策略,且管理员没有配置限速规则,新的防攻击策略仍然会使用default策略的缺省配置。因此,交换机始终会对用户发送的这类报文进行限速,也就是始终应用CPCAR(Control Plane Committed Access Rate)功能。

此时,如果我们使用流策略限制用户访问,那么交换机所收到的这类上送CPU处理的报文,一定会匹配流策略中的流分类规则,CPCAR功能和流策略动作就会产生冲突。

前面的例子中,匹配ACL 3001的报文都会上送交换机CPU进行处理,CPCAR功能会对其进行限速,而流策略p1中的deny动作与限速动作产生冲突。

CPCAR和流策略产生冲突时,只有优先级高的生效。对于V200R020C10及之前版本的设备,二者间的优先级关系如下表所示。

表1  CPCAR和流策略的优先级关系

形态

优先级顺序

  • 盒式交换机:S2700-EI、S2710-SI、S2720-EI、S2750-EI、S3700、S5700-LI、S5700S-LI、S5710-C-LI、S5710-X-LI、S5700-SI、S5700-EI、S5710-EI、S5720-LI、S5720S-LI、S5720-SI、S5720S-SI、S5720I-SI、S5700-HI、S5710-HI、S5730-SI、S5736-S、S5730S-EI、S6700-EI、S6720-LI、S6720S-LI、S6720-SI、S6720S-SI、S600-E、E600

流策略优先级高于CPCAR。

说明:

对于DHCP以及NAC认证时需要上送的ARP协议报文优先级高于流策略。

  • 盒式交换机:S6720-EI、S6720S-EI、S5720-EI、S2730S-S、S5735-L1、S300、S5735R、S5735-L、S5735S-L1、S5735S-L、S5735S-L-M、S500、S5735-S、S5735S-S、S5735-S-I、S5720-HI、S5730-HI、S5731-H、S5731-H-K、S5731S-H、S5731-S、S5731S-S、S6720-HI、S5732-H、S5732-H-K、S6730-H、S6730-H-K、S6730S-H、S6730-S、S6730S-S
  • 所有框式交换机

CPCAR优先级高于流策略。

说明:

对于S5720-EI,V200R007版本流策略优先级高于CPCAR,其他版本CPCAR优先级高于流策略。

【解决办法】

综上,通常情况下,推荐您配置CPU防攻击功能进行用户访问限制,而不是配置流策略。一方面,大部分交换机形态的CPCAR优先级高于流策略,无法通过流策略丢弃上送交换机CPU的报文;另一方面,即便判断出某款交换机的流策略优先级高于CPCAR,相较于CPU防攻击功能,流策略的配置也更为复杂。

因此,如果想解决前文中PC仍然可以ping通交换机的问题,就可以按照下面的步骤重新配置。

场景一:禁止PC访问S系列交换机

图3 禁止PC访问S系列交换机

PC1和PC2加入VLAN10,PC3和PC4加入VLAN20,交换机SwitchA下挂二层交换机做二层透传,交换机SwitchA上配置接口VLANIF10和VLANIF20,所有的终端之间都互通。

现在希望PC1可以访问VLAN10内的所有终端(例如PC2),但不能访问其他VLAN内的终端(例如PC3和PC4),也不能访问交换机(例如SwitchA)。可以按照如下示例配置Switch A:

#

acl number 3001

rule 5 permit ip source 192.168.10.0 0.0.0.255 destination 192.168.20.0 0.0.0.255

rule 10 permit ip source 192.168.10.0 0.0.0.255 destination 192.168.10.3 0

#

cpu-defend policy test

blacklist 1 acl 3001

#

cpu-defend-policy test global

#

场景二:只允许交换机的1个VLANIF接口地址做管理地址

图4 只允许交换机的1个VLANIF接口地址做管理地址

如上图所示,Switch A上有多个VLANIF接口(例如VLANIF10和VLANIF20)。现在只希望VLANIF10的地址(192.168.10.3)作为管理地址,该地址用于Telnet登录,其他VLANIF接口的地址(192.168.20.3)不能用于Telnet登录。

可以按照如下示例配置Switch A:

#

acl number 3001

rule 5 permit tcp destination 192.168.20.3 0 destination-port eq telnet

#

cpu-defend policy test

blacklist 1 acl 3001

#

cpu-defend-policy test global

#

【补充资料

为什么通过流策略无法丢弃Ping主机地址的ICMP报文?

因为设备的ICMP报文是通过ACL上送CPU的,流策略是通过ACL丢弃,两个ACL,一个要上送,一个丢弃,优先级高的ACL生效,上送CPU的ACL优先级高,因此通过配置流策略是无法丢弃ICMP报文的,只有通过黑名单才能丢弃。

如果报文是通过路由上送CPU的,则可以通过配置流策略进行丢弃。

赞(3) 打赏
未经允许不得转载:交换云生 » 为什么无法通过ACL丢弃目的IP是本机地址的报文
分享到

评论 抢沙发

交换云生

始于1908

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫