一. ACL概述
ACL(Access Control List)访问控制列表,主要用于过滤网络中的流量,是控制访问的一种技术手段。网络设备为了过滤报文,需要配置一系列的匹配条件对报文进行分类,应用在端口上,根据预先设定的策略,对特定端口的流量起到控制作用。 ACL一般只在以下路由器上配置:
1. 内部网和外部网的边界路由器。
2. 两个功能网络交界的路由器。
二. ACL的作用
1. ACL可以限制网络流量、提高网络性能。例如,ACL可以根据数据包的协议,指定数据包的优先级。
2. ACL提供对通信流量的控制手段。例如,ACL可以限定或简化路由更新信息的长度,从而限制通过路由器某一网段的通信流量。
3. ACL是提供网络安全访问的基本手段。如:ACL允许主机A访问人力资源网络,而拒绝主机B访问。
4. ACL可以在路由器端口处决定哪种类型的通信流量被转发或被阻塞。例如,用户可以允许E-mail通信流量被路由,拒绝所有的Telnet通信流量。
三. ACL的分类
ACL分类方法:
一种分为:标准ACL,扩展ACL和命名ACL。
另一种分为:标准MAC ACL,时间控制ACL,IP ACL,IPv6 ACL。
MAC ACL 是对二层包字段的过滤,比如Macaddress,ethertype,vlanid,cos等。
IP ACL 主要是对IPv4的报文进行过滤,应用的域从IPv4报头开始。
IPv6 ACL 是针对IPv6报文特有的域进行过滤。
时间控制ACL 就是在设定的时间范围内ACL才生效,其中有相对时间和绝对时间两种。
命名ACL,用字母和数字组合的字符串定义ACL,其中的名字范围为1~31个字符。而且是全局唯一的。
ACL 分类 |
List ID 范围(netgear/dni) |
区分报文的依据 |
||
MAC ACL |
10000~10099 |
1~99 |
Src mac&mask,Dst mac&mask,vlan id ,etherType,CoS |
|
IP ACL |
标准ACL |
1~99 |
1~99 |
Src IP & mask |
扩展ACL |
100~199 |
100~199 |
Src IP & mask, dst IP& mask,src L4port, Dst L4 port,protocol type,TCP flag,TOS/DSCP/IP precedence |
|
命名ACL |
1000~1099 |
1000~1099 |
一个访问控制列表(ACL)可由多条语句组成,每条ACL语句的形式为:
Router(config)#access-list表号处理方式 条件
ACL表号:用于区分各访问控制列表。
一台路由器中可定义多个ACL,每个ACL使用一个表号。
其中针对IP数据报的ACL可使用的表号为:
标准访问控制列表:1~99。
扩展访问控制列表:100~199。
同一个ACL中各语句的表号相同。
处理方式:取值有permit(允许)和deny(拒绝)两种。当数据包与该语句的条件相匹配时,用给定的处理方式进行处理。
条件:定义一系列的匹配方式,一条ACL语句只能定义一个条件。
例:
access-list 1 permit 10.0.0.0 0.255.255.255
access-list 1 deny 20.0.0.0 0.255.255.255
第1句表示允许地址为10.*.*.*的数据包通过。
第2句表示拒绝地址为20.*.*.*的数据包通过。
这里的地址指数据包的源地址。注:ACL用的是反掩码,0代表匹配,1代表不匹配。
标准ACL
标准ACL只能使用地址作为条件。
标准ACL使用数据包的源地址匹配ACL语句中的条件。
定义标准ACL时,可使用的表号为1~99。(针对IP数据报)
标准ACL的语句
R1(config)#access-list1 permit 10.0.0.0 0.255.255.255
R1(config)#access-list50 deny 192.168.0.0 0.0.0.255
R1(config)#access-list99 permit 192.168.1.0 0.0.0.0
扩展访问ACL
扩展ACL可以使用地址作为条件,也可以用上层协议作为条件。
扩展ACL既可以测试数据包的源地址,也可以测试数据包的目的地址。
定义扩展ACL时,可使用的表号为100~199。(针对IP数据报)
扩展ACL的语句:
access-list 表号 处理方式 条件
表号:取值100~199。
处理方式:permit(允许)或deny(拒绝)。
条件:协议 源地址 目的地址[运算符 端口号][established]
协议:用于匹配数据包使用的网络层或传输层协议,如IP、TCP、UDP、ICMP、IGMP等。
源地址、目的地址:使用“地址 通配符掩码”的形式,也可以使用any、host关键字。
运算符 端口号:用于匹配TCP、UDP数据包中的端口号。
R1(config)#access-list 100 denytcp anyanyeq 20
R1(config)#access-list 101 permitudp 192.168.1.0 0.0.0.255 anyeq40
R1(config)#access-list 199 permiticmp anyany precedence 7
命名ACL
命名ACL使用一个符号串作为ACL的名字,不再使用表号。
(config)#ip access-list acl1
(config-ipv4-acl)# permit 1 any anytos0x11 0xff
(config-ipv4-acl)# deny igmpany 192.1.0.0 255.255.0.0
命名的ACL和扩展的ACL可以对流量进行更加精确的控制。
注意:在每个ACL末尾都有一条默认语句:
默认deny所有ip包,permit所有二层包(在没有配置定义匹配ethertype时),当macacl定义了匹配ethertype的rule时默认的语句为denyanyany。
三. ACL的工作过程
访问控制列表(ACL)由多条判断语句组成。每条语句给出一个条件和处理方式(允许或拒绝)。
路由器对收到的数据包按照判断语句的书写次序进行检查,当遇到相匹配的条件时,就按照指定的处理方式进行处理。
ACL中各语句的书写次序非常重要,如果一个数据包和某判断语句的条件相匹配时,该数据包的匹配过程就结束了,剩下的条件语句被忽略。
四. 通配符掩码
在ACL语句中,当使用地址作为条件时,它的一般格式为:地址 通配符掩码(反掩码)。
通配符掩码决定了地址中的哪些位需要精确匹配,哪些为不需要匹配。
通配符掩码是一个32位数,采用点分十进制方式书写。匹配时,“0”表示检查的位,“1”表示不检查的位。
如:192.168.1.1 0.0.255.255
表示检查前16位,忽略后16位,所以这个条件表示的地址是192.168.*.*。
any条件:
当条件为所有地址时,如果使用通配符掩码应写为:
0.0.0.0 255.255.255.255
这时可以用“any”表示这个条件。
如:
Router(config)#access-list1 permit 0.0.0.0 255.255.255.255
Router(config)#access-list1 permit any
上面两个语句是等价的。
host关键字:
当条件为单一IP地址时,如果使用通配符掩码应写为:
IP地址 0.0.0.0
这时可以用“host”关键字定义这个条件。
如:
Router(config)#access-list1 permit 200.1.1.5 0.0.0.0
Router(config)#access-list1 permit host 200.1.1.5
上面两个语句是等价的。