因配置错误导致ACL下发不生效

发布时间:  2012-07-26 浏览次数:  76 下载次数:  0
问题描述
一台1760版本为1.74--0010,通过做NAT后下挂一个小区的用户上网。业务开通后不久,小区用户反映上网慢,查看路由器的NAT转换表,发现有一个地址(192.168.1.1/24)比较异常,对应了很多的端口号;如果这个地址用户下线后其他的用户上网则正常。于是决定在路由器上做ACL将这个地址给禁止掉,不让它上网。配置如下:
[Router]ACL 110 
[Router-acl-110]rule deny ip source 192.168.1.1 0.0.0.0 destination any 
[Router-Ethernet0]firewall packet-filter 110 inbound
同时,在路由器上还共存另外一条ACL 120,是防病毒配置(以前已经配置),禁止一些病毒端口号,SUCH AS:
[Router-acl-120]rule deny tcp  source any destination any destination-port eq 135
 ................
 ................
 ................
[router-Ethernet0]firewall packet-filter 120 inbound
但是在下发ACL 110后,在display nat translations时仍然可以看到192.168.1.1这个地址;在display  acl 110 时候发现匹配上的数据包为零,也就是说下发的ACL 110没有生效
告警信息
处理过程
将ACL 110去掉,把原有的ACL 110中的rule规则配置到ACL 120中,再次查看display  nat translations,192.168.1.1这个地址已经去掉,查看display acl 120,看到rule deny ip source 192.168.1.1 0.0.0.0 destination any 这条规则已经生效
具体的配置如下:
  [Router-acl-120]rule deny ip source 192.168.1.1 0.0.0.0 destination any  
  [Router-acl-120]rule deny tcp  source any destination any destination-port eq 135
   .............
   .............
   .............
  [Router-Ethernet0]firewall packet-filter 120 inbound

同理:
   如果将ACL 110改为ACL 130(只要序列号比120大),也一样能解决这个问题
[Router]ACL 130
[Router-acl-130]rule deny ip source 192.168.1.1 0.0.0.0 destination any  
[Router-Ethernet0]firewall packet-filter 130 inbound
根因
造成ACL下发失效的原因一般来讲都是配置问题,检查配置,在display current时候能看到两条ACL:110和120。虽然路由器1.74版本的ACL的匹配顺序是AUTO的(最长匹配原则),按道理讲那么应该先匹配ACL 110。但是关于匹配顺序AUTO只是针对同一个ACL里,比如在ACL 110或者是ACL 120里,它匹配的顺序是按照AUTO的。而在不同的ACL间则是按照ACL的序列号来匹配的,谁的序列号大就最先匹配谁。而在不同的ACL之间是或的关系,只要匹配其中一个,就不会再匹配下一个acl。所以在上述配置中,报文一到eth0口,就先匹配上ACL 120,而ACL 120对192.168.1.1 这个地址来讲是permit的,因此ACL 110不会生效

END