ACL,是Access Control List的简写,中文名称叫做“访问控制列表”。它是由一系列条件规则(即描述报文匹配条件的判断语句)组成, 这些条件规则可以是报文的源地址、目的地址、端口号等,是一种应用在网络设备各种软硬接口上的的指令列表。
一、访问控制列表的使用场景:
*过滤
根据ACL中的匹配条件对进站和出站的报文进行过滤处理。打个比方,ACL其实是一种报文过滤器,ACL规则就是过滤器的滤芯。安装什么样的滤芯(即根据报文特征配置相应的ACL规则),ACL就能过滤出什么样的报文。
*分类
根据ACL中的条件对流量进行标识,以供设备进一步进行特殊处理。
二、访问控制列表的类型:
*标准
-检查源地址
-通常允许、拒绝的是完整的协议
*扩展
-检查源地址和目的地址
-通常允许、拒绝的是某个特定的协议
三、访问控制列表的应用:
*入方向
-ACL应用在设备接口入方向 当接口收到数据包时,先根据应用在接口上的ACL条件进行匹配,如果允许则根据路由表进行转发,如果拒绝则直接丢弃。
总结:先匹配后路由。
*出方向
-ACL应用在设备接口出方向 报文先经过路由表路由后转至出接口,根据接口上应用的出方向ACL条件进行匹配,是允许permit还是拒绝deny,如果是允许,就根据路由表转发数据,如果是拒绝就直接将数据包丢弃了。
总结:先路由后匹配。
ACL指令的放置顺序是很重要的,不论是思科的IOS还是华为的VRP或者H3C的Comware,都是按照ACL中指令的顺序依次检查数据包是否满足某一个指令条件,当检测到某个指令满足条件时就执行该指令规定的动作,并且不会再检测后面的指令条件。
而在设备默认的ACL指令机制中,每组ACL都在末尾隐含一条deny所有报文的指令。也就是说,当接收到的数据包和ACL所有的明细条目都不匹配的时候,则就会触发这条隐藏的指令,直接将报文丢弃。
四、如何来标识ACL
*标准编号IPV4列表(1-99,1300-1999),只可以根据源地址设置IP报文过滤条件。
Router(config)#access-list 10 permit 192.168.0.0 0.0.255.255
Router(config)#access-list 10 deny 172.16.0.0 0.0.255.255
Router(config)#do sh run | i access
access-list 10 permit 192.168.0.0 0.0.255.255
access-list 10 deny 172.16.0.0 0.0.255.255
*扩展编号IPV4列表 (100-199,2000-2699),可以根据源目地址、TCP/IP协议号和TCP/UDP源目的端口条件设置IP报文过滤条件。
Router(config)#access-list 100 permit tcp 192.168.0.0 0.0.255.255 100.100.100.0 0.0.0.255 eq 8080
Router(config)#access-list 100 deny udp 172.16.0.0 0.0.0.255 eq 1000 100.100.100.0 0.0.0.255 eq 1234
Router(config)#do sh run | i access
access-list 100 permit tcp 192.168.0.0 0.0.255.255 100.100.100.0 0.0.0.255 eq 8080
access-list 100 deny udp 172.16.0.0 0.0.0.255 eq 1000 100.100.100.0 0.0.0.255 eq 1234
*命名ACL用字母数字字符串(名称)标识IP标准ACL和扩展ACL。
标准:
ip access-list standard XXXX
permit 192.168.0.0 0.0.255.255
permit 172.16.0.0 0.0.255.255
扩展:
ip access-list extended YYYY
permit tcp 192.168.0.0 0.0.255.255 eq 8080 172.168.0.0 0.0.255.255 eq 8080
deny udp 172.16.0.0 0.0.255.255 eq 8080 192.168.0.0 0.0.255.255 eq 8080
在特权模式下直接查看ACL明细条目编号
Router#sh access-lists
Standard IP access list XXXX
10 permit 192.168.0.0, wildcard bits 0.0.255.255
20 permit 172.16.0.0, wildcard bits 0.0.255.255
Extended IP access list YYYY
10 permit tcp 192.168.0.0 0.0.255.255 eq 8080 172.168.0.0 0.0.255.255 eq 8080
20 deny udp 172.16.0.0 0.0.255.255 eq 8080 192.168.0.0 0.0.255.255 eq 8080
一般在实际使用中建议使用字母数字字符串(名称)的方式来创建配置ACL,因为这样后期可以根据ACL命名容易辨别ACL的用途,比如我们应用F0/0接口入方向的ACL可以命名为“F0_0_inbound”
另外在ACL配置平面下,我们可以根据ACL的编号在前后编号间进行插入条目,如条目10和条目20中间加入条目15,同样也可以直接no 条目 的方式直接删除任意指定的条目。而在基本的编号ACL中无法删除指定条目信息,只能整个ACL删去重新配置。
PS:华为ACL的用户体验比思科的用户体验好一些哈哈哈哈…..