概念
是一种基于包过滤的流控制技术。控制列表通过把源地址、目的地址及端口号作为数据包检查的基本元素,并可以规定符合条件的数据包是否允许通过。ACL通常应用在企业的出口控制上,可以通过实施ACL,可以有效的部署企业网络出网策略
工作原理
ACL由一系列允许语句和拒绝语句所组成
ACL按照自上而下的顺序执行(一般范围小的条件在上面,大的在下面)
第一个匹配项会执行允许或拒绝操作,进而停止进一步的ACL匹配操作
ACL中应该至少包含一条permit语句,否则ACL将拒绝所有数据包
每个ACL的末尾都有一条隐式的deny all语句
ACL语句以逻辑方式顺序运行。这些语句自上而下地评估数据包,每次使用一条语句。如果某个数据包报头和ACL语句匹配,则会略过列表中的其他语句。然后会允许或拒绝这个数据包,具体由匹配的语句确定。如果数据包报头与ACL语句不匹配,那么将使用列表中的下一条语句测试数据包。此匹配过程会一直继续,直到抵达列表末尾
ACL通配符掩码
当处理ACL时,路由器需要一个机制来确定IP地址的哪些位必须匹配。通配符掩码描述IP地址的哪些位必须匹配IP数据包,才会与permit或deny语句匹配
反掩码与子网掩码的关系
用255减去子网掩码的每个数得到的就是反掩码
子网掩码:255.255.255.0 11111111.11111111.11111111.00000000
反掩码 : 0.0.0.255 00000000.00000000.00000000.11111111
通配符掩码规则
通配符掩码(反掩码)和子网掩码之间的差异在于它们匹配二进制 1 和 0 的方式。通配符掩码使用以下规则匹配二进制 1 和 0:
• 通配符掩码位 0 :匹配地址中对应位的值
• 通配符掩码位 1 :忽略地址中对应位的值
例:
IP子网 172.30.16.0/24 到 172.30.31.0/24的过滤器
地址和通配符掩码:172.30.16.0 0.0.15.255
下图为IP子网的通配符掩码过程
通过通配符掩码可知:必须要匹配前4位(0001)才可以,而能满足这个条件的有16 ~ 31,匹配主机为172.30.16.0/24 ~ 172.30.31.0/24
ACL的两种主要类型
1. 标准ACL(数字范围或标识符:1-99,1300-1999)
检查源IP地址
允许或拒绝整个协议簇
不能控制目的IP和应用程序
2. 扩展ACL(数字范围或标识符:100-199,2000-2699)
检查源和目的IP地址
通常允许或拒绝特定协议和应用
能匹配端口号
对于同一个协议,可以创建多个ACL。在给定协议中,要为每个新ACL选择不同的ACL编号。但是,在接口上,每个协议,每个方向只能应用一个ACL
采用1到99之间和1300到1999之间的数字进行编号的标准IPv4 ACL或命名AXL,根据源地址和掩码过滤数据包,而且还可允许或拒绝整个TCP/IP协议簇
ACL工作原理
当ACL用于流量过滤时,它们可以运行入站或出站。这一方向决定了数据包在通过路由器时在哪个点接受ACL的测试
出站ACL:传入数据包被路由到出站接口,然后由出站ACL进行处理。如果数据包符合一条permit语句,则由接口转发。如果数据包符合一个deny语句或者没有匹配语句,则丢弃它们
入站ACL:传入数据包在被路由到出站接口之前由ACL进行处理。入站ACL是高效的,因为如果过滤测试拒绝了数据包,则会将数据包丢弃,这样就节省了路由查找的开销。如果测试允许了数据包,则对数据包进行路由
举例
1. 标准ACL
要求:
• 拒绝特定主机10.1.1.101访问网络
• 允许所有其他LAN主机访问网络
access-list 1 deny 10.1.1.101
access-list 1 permit 10.1.1.0 0.0.0.255
interface GigabitEthernet 0/1
ip access-group 1 out
该图显示了在路由器的出站方向上应用ACL 1 来提供流量过滤的场景。ACL 1 中包含一条与IP地址为10.1.1.101的特定主机的流量相匹配的deny语句。ACL中的第二行允许来自网络10.1.1.0/24内主机的流量。指定一条permit语句非常重要,因为ACL末尾都有一条隐式deny all语句
或者,ACL可以应用在接口GigabitEthernet 0/0 的入站方向上。此解决方案不仅阻止主机PC2访问网络,而且也拒绝PC2和路由器之间的所有通信
2. 扩展ACL
要求:
• 仅防止PC2访问网络上的某一台服务器(209.165.202.197)
• 只允许其他用户进行网络访问
为了阻止PC2与某一特定服务器进行通信,需要使用一个将PC2的IP地址作为源地址,将服务器的IP地址作为目的地址的扩展ACL
access-list 110 deny ip host 10.1.1.101 host 209.165.202.197
access-list 110 permit tcp 10.1.1.0 0.0.0.255 any eq 80
ip access-group 110 in
选用数字110将ACL定义为一个扩展ACL
第一条语句匹配两个特定主机间的IP流量,因此拒绝其要求
第二条语句匹配来自网络10.1.1.0/24的HTTP TCP流量。使用运算符eq(等于)匹配TCP端口80
ACL末尾存在隐式deny语句
在接口上激活扩展ACL的方式与激活标准ACL的方式相同