十一、CCNA-访问控制列表ACL

  • ACL:Access Control List
  • ACL不能针对路由器本身始发的过滤,只能对穿越本路由器的流量做过滤。
  • 在一个接口的一个方向,针对某种协议,一次只能应用一个ACL。

11.1  用途

部署策略:对流量进行控制

11.2  类型

通过十进制数标识ACL,没法通过数字直观的区分两种类型不适合,可以通过名字进行定义。

标准访问控制:

允许或者禁止指定源地址IP通过路由器,不能对目的地址IP进行过滤,也不能对源地址的某个具体协议禁止。

能根据多元组进行访问控制;

11.3  操作

11.3.1  入站及出站

ACL定义完后,会被应用在接口上,需要关联针对接口的入流量还是出流量方向。

  • 如果在接口定义了入方向的控制;
  • 当数据包从接口进入时,路由器会查看这个接口的入方向是否配置了ACL;
  • 如果没有配置,该包就直接进入路由器执行转发动作;
  • 如果入口方向应用了ACL,根据ACL列表动作进行匹配,如果符合ACL允许的操作,则进入路由器进行转发,否则会被丢弃。
  • 入站方向是先判断,再路由,出站则是先路由,在根据需要出的接口判断该接口的出口方向是否有ACL。
  • 路由器收到流量后,路由器先执行相关路由操作,查表;
  • 如果是从没有ACL的接口出去,则正常转发;
  • 如果是从有ACL控制出口接口的方向出去,则会进行ACL匹配,并根据相关动作判断是出去还是丢弃。

11.3.2  ACL列表

语句匹配顺序,如果采用编号方式,则是按输入顺序匹配,一旦匹配成功,则不再向下匹配,如果都没有匹配成功,则默认丢弃。

11.3.3  ACL标识

  • 数字方式和字符串方式。
  • 数字方式:标准访问限制在(1-99、1300-1999)、扩展访问限制(100-199、2000-2699);

11.4  标准访问控制

11.4.1  配置

标准是根据源地址判断;

第一步:

在全局模式下进行配置,如定义编号为1的访问控制列表,包含3个条目:

  • Access-list 1 动作 源地址(条件1)
  • Access-list 1 动作 源地址(条件2)
  • Access-list 1 动作 源地址(条件3)
  • Access-list 1 deny any(隐含,所以不能所有ACL动作都是DENY,最后还隐含了DENY,则所有都会丢弃,配置时,至少得有个permit)
  • 当收到数据包时,接口方向有ACL时,拿源地址依次匹配条件,匹配到符合条件时就执行动作,不再向下匹配,都不匹配的情况下,默认丢弃。
  • 格式:Access-list 1(1-99) (deny|permit) 源地址(192.168.1.0)通配符(默认0.0.0.0)

注意:如果想在现有列表中插入一行,是不允许的;想删除或者修改某一行也不行,只能全部删除后,重新配。

删除:no access-list 1

第二步:

如果仅仅是单纯定义ACL是不会生效的,需要应用到接口上。

  • 先进入接口,因为ACL需要配置在接口上:
  • ip access-group 1 in|out

11.4.2  通配符

  • 用来匹配特定位,和掩码反着。
  • 如果全0,则只;匹配一个IP;
  • 如果全1,则都匹配;

比如:

  • 入口定义ACL,过滤192.168.1.1-192.168.1.7,不让进。
  • Access-list 1 deny 192.168.1.1 0.0.0.7
  • Access-list 1 permit any
  • 注意会最后隐含DENY ALL。
  • 一组ACL定义,至少要有一条permit any;

11.4.3  示例

11.4.3.1 示例1

  • 先匹配192.168.1.1,不允许192.168.1.1通过;
  • 需要加一条其他的都允许,否则有隐藏条目都拒绝。

11.4.3.2 示例2

11.5  扩展访问控制

11.5.1  配置

能根据IP、协议、端口号进行过滤。

如:access-list 101 permit|deny 协议号 源地址 通配符 目的地之 通配符

11.5.2  示例

Ip表示禁止整个IP访问,而不是某个协议;

禁止访问tcp端口号为23的流量。

11.6  命名访问控制

之前介绍的ACL:无法命名、修改、编辑;只能删除整个列表,重新设置;而且数字不直观。

11.6.1  配置

可以插入、删除、修改,默认序号从10开始

11.7  总结

第2条:匹配度比较高的放在顶部;

11.8  实验

11.8.1  准备

R1路由器配置:

interface FastEthernet0/0
ip address 192.168.10.254 255.255.255.0
no shutdown

interface FastEthernet0/1
ip address 192.168.20.254 255.255.255.0 
no shutdown

interface Serial1/0
ip address 192.168.1.1 255.255.255.0
clock rate 38400 
no shutdown

路由配置RIP:

router rip
network 192.168.1.0
network 192.168.10.0
network 192.168.20.0

R0路由器配置:

interface FastEthernet0/0
ip address 192.168.30.254 255.255.255.0

interface Serial1/0
ip address 192.168.1.2 255.255.255.0

路由器RIP:

router rip
network 192.168.1.0
network 192.168.30.0

配置完后,PC0和PC1、PC2可以ping通。

11.8.2  标准访问控制

允许PC0访问服务器,禁止PC1范围服务器,ACL列表应用在R1的S1/0出口。

创建ACL:

R1>enable 
R1#configure terminal 
R1(config)#access-list 10 permit 192.168.10.0 0.0.0.255
R1(config)#access-list 10 deny 192.168.20.0 0.0.0.255
R1(config)#access-list 10 permit any

将ACL应用到:

R1(config)#interface serial 1/0
R1(config-if)#ip access-group 20 out

查看ACL列表信息:

R1#show access-lists 
Standard IP access list 10
10 permit 192.160.10.0 0.0.0.255
20 deny 192.160.20.0 0.0.0.255
30 permit any

实验

11.8.3  扩展访问控制

禁止PC0的IP访问服务器,禁止PC1 PING服务器

R1#configure terminal 
R1(config)#access-list 100 deny ip 192.168.20.0 0.0.0.255 host 192.168.30.1
R1(config)#access-list 100 deny icmp 192.168.10.0 0.0.0.255 host 192.168.30.1

将ACL应用到接口出方向:

R1(config)#interface serial 1/0
R1(config-if)#ip access-group 100 out

查看ACL信息:

R1#show access-lists 
Extended IP access list 100
10 deny ip 192.168.20.0 0.0.0.255 host 192.168.30.1
20 deny icmp 192.168.10.0 0.0.0.255 host 192.168.30.1

测试

11.8.4  命令访问控制-标准

创建命名为NAME002的ACL:

R1#configure terminal 
R1(config)#ip access-list standard name002
R1(config-std-nacl)#10 deny 192.168.20.0 0.0.0.255
R1(config-std-nacl)#11 deny 192.168.20.0 0.0.0.255

查看ACL信息:

R1#show access-lists 
Standard IP access list name002
10 permit 192.168.10.0 0.0.0.255
11 deny 192.168.20.0 0.0.0.255

应用在接口:

R1#configure terminal 
R1(config)#interface serial 1/0
R1(config-if)#ip access-group name002 out

测试

11.8.5  命名访问控制-扩展

创建名称为name001的ACL:

R1(config)#ip access-list extended name001
R1(config-ext-nacl)#10 deny icmp 192.168.10.0 0.0.0.255 any
R1(config-ext-nacl)#permit ip any any
R1(config-ext-nacl)#permit tcp any any

查看ACL:

R1#show access-lists 
Extended IP access list name001
10 deny icmp 192.168.10.0 0.0.0.255 any
20 permit ip any any
30 permit tcp any any

再添加:

R1(config)#ip access-list extended name001
R1(config-ext-nacl)#11 deny icmp 192.168.20.0 0.0.0.255 any
R1(config-ext-nacl)#exit

在查看ACL:

R1#show access-lists 
Extended IP access list name001
10 deny icmp 192.168.10.0 0.0.0.255 any
11 deny icmp 192.168.20.0 0.0.0.255 any
20 permit ip any any
30 permit tcp any any

应用到接口上:

R1(config)#interface serial 1/0
R1(config-if)#ip access-group name001 out

测试

发表回复