一、ACL概述
1、利用ACL可以对经过路由器的数据包按照设定的规则进行过滤,使数据包有选择的通过路由器,起到防火墙的作用。
访问控制列表(ACL)由一组规则组成,在规则中定义允许或拒绝通过路由器的条件。
ACL过滤的依据主要包括源地址、目的地址、上层协议等。
ACL有两种:标准访问控制列表、扩展访问控制列表
2、ACL的基本用途是限制访问网络的用户,保护网络的安全。
ACL一般只在以下路由器上配置:
(1)内部网和外部网的边界路由器。
(2)两个功能网络交界的路由器。
3、限制的内容通常包括:
(1)允许那些用户访问网络。(根据用户的IP地址进行限制)
(2)允许用户访问的类型,如允许http和ftp的访问,但拒绝Telnet的访问。(根据用户使用的上层协议进行限制)
二、ACL语句
访问控制列表形式为:
Router(config)# access-list 表号 处理方式 条件
表号:用于区分访问控制列表(一台路由器中可定义多个ACL,每个ACL都有一个表号)
标准访问控制列表表号:1-99
扩展访问控制列表表号:100-199
同一个ACL中各语句表号相同
处理方式:取值permit和deny,当数据包与该语句条件匹配时,用给定的处理方式处理
条件:每条ACL只定义一个条件
例:Access-list 1 permit10.0.0.0 0.255.255.255.255
Access-lis 1 1deny20.0.0.0 0.255.255.255.255
调用到接口;
Router(config)# interface 接口号
Router(config-if)# ip access-group 表号 [in | out]
三、通配符掩码
1、在ACL语句中,当使用地址作为条件时,它的一般格式为:地址 通配符掩码。
通配符掩码决定了地址中的哪些位需要精确匹配,哪些为不需要匹配。
通配符掩码是一个32位数,采用点分十进制方式书写。匹配时,“0”表示检查的位,“1”表示不检查的位。
如:192.168.1.1 0.0.255.255
表示检查前16位,忽略后16位,所以这个条件表示的地址是 192.168.*.*。
2、any条件:
当条件为所有地址时,如果使用通配符掩码应写为:
0.0.0.0 255.255.255.255
这时可以用“any”表示这个条件。
如:
Router(config)# access-list 1 permit 0.0.0.0 255.255.255.255
Router(config)# access-list 1 permit any
上面两个语句是等价的
3、host关键字
当条件为单一ip地址时,如果使用通配符掩码应写为:IP地址 0.0.0.0。这是可以用host关键字来定义这个条件。
Access-list 10 permit 200.1.1.5 0.0.0.0
Access-list 10 permit host 200.1.1.5
上面两个语句等价
四、标准访问控制列表
标准ACL只能使用地址作为条件。
标准ACL使用数据包的源地址匹配ACL语句中的条件。
定义标准ACL时,可使用的表号为1~99。(针对IP数据报)
标准ACL配置举例1
一个局域网连接在路由器R1的E0口,这个局域网要求只有来自10.0.0.0/8、192.168.0.0/24、192.168.1.0/24的用户能够访问。
access-list 1 permit 10.0.0.0 0.255.255.255
Access-list 1 permit 192.168.0.0 0.0.255.255
Access-list 1 permit 192.168.1.0 0.0.255.255
说明:定义ACL时,每条语句都按输入的次序加入到ACL的末尾,如果想要更改某条语句,或者更改语句的顺序,只能先删除整个ACL,再重新输入。
比如删除表号为1的ACL:
Router(config)# no access-list 1
五、扩展访问控制列表
扩展ACL可以使用地址作为条件,也可以用上层协议作为条件。
扩展ACL既可以测试数据包的源地址,也可以测试数据包的目的地址。
定义扩展ACL时,可使用的表号为100~199。(针对IP数据报)
扩展ACL的语句:access-list 表号 处理方式 条件
表号:取值100~199。
处理方式:permit(允许)或deny(拒绝)。
条件:协议 源地址 目的地址 [运算符 端口号] [established]
协议:用于匹配数据包使用的网络层或传输层协议,如IP、TCP、UDP、ICMP等。
源地址、目的地址:使用“地址 通配符掩码”的形式,也可以使用any、host关键字。
运算符 端口号:用于匹配TCP、UDP数据包中的端口号。
(1)运算符包括lt(小于)、gt(大于)、eq(等于)、neq(不等于)。
(2)端口号用于对应一种应用,如21―FTP、23―Telnet、25―SMTP、53―DNS、80―HTTP等。
“运算符 端口号”可匹配数据包的用途。如:“eq 80”可匹配那些访问Web网站的数据包。
在扩展ACL语句中, “运算符 端口号”可以没有。
例:access-list 100 permit tcp 192.168.0.0 0.0.255.255 10.0.0.0 0.255.255.255 eq 80
端口调用:
Router(config)# interface e0
Router(config-if)# ip access-group 100 out
在每个扩展ACL末尾也有一条默认语句:
access-list list-num deny ip any any
它会拒绝所有与前面语句不匹配的数据包。
1、扩展ACL配置举例
一个局域网连接在路由器R1的E0口,这个局域网只允许Web通信流量和Ftp通信流量,其它都拒绝。
Access-list 100 permit tcp any any eq 80
Access-list 100 permit tcp any any eq 20
Access-list 100 permit tcp any any eq 21
Interface E0
IP access-group 100 out
2、R1是局域网和外网的边界路由器,禁止外网用户用Telnet远程登录本路由器。
Access-list 100 deny tcp any host 200.1.1.1 0 eq 23
Access-list 100 deny tcp any host 192.168.0.1 eq 23
Access-list 100 permit ip any any
Interface s0
Ip access-group 100 in
3.R1是局域网和外网的边界路由器,60.54.145.21是一个有害的Web网站,禁止内网用户访问该网站。(上图)
Access-list 100 deny tcp 192.168.0.0 0.0.255.255 host 60.54.145.21 eq 80
Access-list 100 permit ip any any
Interface e0
Ip access-group 100 in
4.R1是局域网和外网的边界路由器,禁止对S0口的ping操作。(同上图)
Access-list 100 deny icmp any 200.1.1.1 0.255.255.255
Access-list permit IP any any
Interface s0
IP access-group 100 in
六、命名访问控制列表
命名ACL也有标准ACL和扩展ACL两种,一个命名ACL只能是其中的一种。(不在使用表号)
Ip access-list {standard|extended} name
standard:定义标准命名ACL。
extended:定义扩展命名ACL。
name:ACL的名字,可自定义。
该命令执行后,提示符变为Router(config-std-nacl)#或Router(config-ext-nacl)#。在此提示符下可输入ACL语句。
命名ACL语句格式:处理方式 条件。
它只比以前的ACL少了前面的“access-list 表号”部分,其它都相同。
例1 配置标准命名ACL
要求拒绝来自200.1.1.0/24的数据包通过S0口进入路由器,其它都允许
Ip access-list standard Name
Deny 200.1.1.0 0.0.0.255
Permit any
Exit
Int s0
Ip access-group Name in
2、禁止内网用户访问地址为60.54.145.21的Web网站
Ip access-list extended Name1
Deny tcp 192.168.0.0 0.255.255.255 host 60.54.145.21 eq 80
Permit any
Interface e0
Ip access-group Name1 in
本文出自 “ACL” 博客,转载请与作者联系!