ACL原理
1.ACL概述
ACL(访问控制列表)是应用在路由器接口的指令列表(即规则),这些规则告诉路由器:哪些数据包可以接收、哪些数据包可以拒绝
2.基本原理
ACL使用包过滤技术,在路由器上读取OSI七层模型的第三层及第四层包头中的信息,如源地址、目的地址、源端口、目的端口等,根据预先定义好的规则,对包进行过滤,从而达到访向控制的目的
3.ACL的类型
1)标准ACL
根据数据包的源IP地址来允许或拒绝数据包。标准ACL的访问控制列表号是1-99。
2)扩展ACL
根据数据包的源IP地址、目的P地址、指定协议、端口和标志来允许或拒绝数据包。扩展ACL的访问控制列表号是100-199.
3)命名ACL
允许在标准ACL和扩展ACL中使用名称代替表号。
4.ACL的检查条件
5.ACL规则的匹配顺序
➢如果匹配第一条规则,则不再往下检查,路由器将决定该数据包允许通过或拒绝通过。
➢如果不匹配第一条规则,则依次在下检查,直到有任何一条规则匹配,路由器将决定该数据包允许通过或拒绝通过,
➢如果最后没有任何一条规则匹配。则路由器根据默认的规则将丢弃该数据包。
由此可见。数据包要么被允许,要么被拒绝。
6.ACL的应用方向
出:已经过路由器的处理,正离开路由器接口的数据包
入:已到达路由器接口的数据包,将被路由器处
ACL只对该方向的数据包进行检查,对反方向的数据包不做任何处理
下面就来标准ACL的配置
1.创建标准ACL
Router(config)#access-list access-list-number {permit | deny} source [source-wildcard]
access-list-number:ACL表号
permit | deny:如果满足测试条件,则允许/拒绝该通信流量
Source:数据包的源地址
source-wildcard:通配符掩码,也称为反码
举例:
Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255
Router(config)# access-list 1 permit 192.168.2.2 0.0.0.0
如果反码是0.0.0.255,那么正码是255.255.255.0,反码计算:用/32-正码
2.隐含的拒绝语句
拒绝所有流量
Router(config)# access-list 1 deny 0.0.0.0 255.255.255.255
3.关键字host、any
host代表某一个主机,any代表所有主机
举例:
Router(config)# access-list 1 permit host 192.168.2.2
Router(config)# access-list 1 deny any
4.删除ACL
Router(config)# no access-list access-list-number
对于标准ACL来说,不能删除单条ACL语句,只能删除整个ACL,如果要改变一条或几条ACL语句,必须删除整个ACL,然后输入所要的语句
Router(config)# no access-list 1
5.将标准ACL应用于接口
Router(config-if)# ip access-group access-list-number {in |out}
举例:
Router(config-if)# ip access-group 10 in
6.取消ACL应用
Router(config-if)# no ip access-group access-list-number {in |out}
举例:
Router(config-if)# no ip access-group 10 in
每个方向上只能有一个ACL,也就是每个接口最多只能有2个ACL;一个入方向ACL,一个出方向ACL。
标准ACL的配置实例:
如图所示,要求配置标准ACL实现:禁止PC2访问PC1,允许PC3访问PC1,PC1不做要求
双工、速率
接口地址
DHCP分配地址
创建ACL,表号为10,禁止主机192.168.20.2(即PC2)的流量,允许其他的流量,将f0/1接口变成10的入口
查看列表
验证:PC3能ping通PC1,PC2不能ping通PC1
而PC1属于其他网段,不在20.0的范围,也没有配置ACL,所以PC1被隐含的拒绝词句拒绝了,若想让PC1能ping通PC2和PC3,则要为PC1单独配置一条ACL