- 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
测试