ACL访问控制列表

ACL简介

ACL有两个作用

  • 抓取流量
  • 抓取路由条目

ACL一般用于本来是可以通信的,或者路由是可以学习到的情况,想做限制用的。

我们在做实验的时候,要先检查是否可以通信,或者路由是否可以学习。如果可以,再做ACL。

本文只讲抓取流量的情况

ACL分类

标准访问控制列表

  1. 只能识别流量中的源IP地址,所以在使用的时候必须要确认流量方向。
  2. 针对识别出来的数据流量,只可以执行丢弃或者放行。
  3. ACL配置完毕后,必须要选择一个接口使用ACL,不然不生效。
  4. ACL在路由器的每一个接口上,都要指明是过滤入还是出的流量。
  5. 由于标准访问控制列表只能识别源IP地址,为了减少对网络的影响,会配置在尽量靠近目的地的地方。
  6. 为了安全起见,在ACL中没有匹配上的流量,最后会默认丢弃。所以如果一个ACL一条放行的条目都没有,那么是没有意义的。
  7. 不管是标准还是扩展的ACL,对设备本地始发的流量无效。

ACL的使用

实验拓扑
img

首先将IP地址配置好,这边每个设备上留一个loopback接口用作测试。
并且全部运行OSPF,让网络全通。

1
2
3
4
5
6
7
8
9
10
11
12
13
R1
en
conf t
int lo0
ip add 1.1.1.1 255.255.255.0
ip ospf 1 area 0
int e0/0
ip add 192.168.12.1 255.255.255.0
no sh
ip ospf 1 area 0
=================================
R2

这边配置完了以后一定要检查一下路由表,确定全部的loopback接口都已经学习到。检查命令show ip route ospf

1
2
3
4
5
6
7
8
9
R4#sh ip route ospf
1.0.0.0/32 is subnetted, 1 subnets
O 1.1.1.1 [110/31] via 192.168.34.3, 00:00:47, Ethernet0/0
2.0.0.0/32 is subnetted, 1 subnets
O 2.2.2.2 [110/21] via 192.168.34.3, 00:00:57, Ethernet0/0
3.0.0.0/32 is subnetted, 1 subnets
O 3.3.3.3 [110/11] via 192.168.34.3, 00:00:57, Ethernet0/0
O 192.168.12.0/24 [110/30] via 192.168.34.3, 00:00:47, Ethernet0/0
O 192.168.23.0/24 [110/20] via 192.168.34.3, 00:00:57, Ethernet0/0

尝试做策略,让R1无法访问R4。
R1在ping 4.4.4.4的时候,默认会使用e0/0这个出接口的IP作为源IP地址。
这边为了减少对源IP地址的影响,我们选择配置在R4上

标准的ACL语法

1
2
3
4
5
6
7
access-list 1 deny 192.168.12.1 0.0.0.0
# 通配符掩码,和IP地址一样是32位二进制,二进制位是1,表示IP这一位不需要一样,二进制位是0,表示IP这一位必须要一样。
# ACL同一个序列号,可以写多个匹配条件和动作,在遇到流量的时候,会按照从上而下的顺序去匹配,匹配上了,就执行动作。匹配不上就继续向下。尽量将匹配条件严格的放在上面。
access-list 1 permit any # ACL默认最后会拒绝所有,所以至少需要一条放行
interface Ethernet0/0
ip access-group 1 in
# 要注意,ACL必须要在接口上使用才能生效,使用的时候一定要想清楚是in还是out

最后检查效果

1
2
3
4
5
6
7
8
9
10
11
R1#ping 4.4.4.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5)
R1#ping 4.4.4.4 source 1.1.1.1 #换了一个源IP地址,就通了
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms

需求:除了2.2.2.2,谁都不允许访问1.1.1.1

由于在R1上做了策略后,导致R2和R1之间OSPF邻居关系断开,所以除非静态路由,不然此需求无法完成

扩展的访问控制列表

  1. ACL序列号范围100~199
  2. 扩展的访问控制列表可以匹配流量的源IP、目的IP、端口号和协议号
  3. 由于扩展ACL可以精确匹配流量,所以尽可能靠近源地址,但是不能配置在始发设备上,靠近原地址可以减少不必要的流量转发。
  4. 扩展ACL也是最后默认拒绝所有流量

在R4上开启telnet来模拟一个服务,让R1不可以ping 4.4.4.4,但是可以telnet 4.4.4.4

1
2
3
4
5
6
7
8
line vty 0 4    # 配置0~4虚拟控制台
password !QAZ2wsx # 加上密码保护,没有密码不给远程登录
login # 开启登录密码校验
transport input telnet # 允许使用telnet协议登录
access-list 100 deny icmp host 192.168.12.1 host 4.4.4.4 echo
access-list 100 permit ip any any
interface Ethernet0/0
ip access-group 100 in

检验命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
R1#ping 4.4.4.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5)
R1#telnet 4.4.4.4
Trying 4.4.4.4 ... Open

User Access Verification

Password:
R4>q

[Connection to 4.4.4.4 closed by foreign host]

R2#show access-lists # 这条命令可以查看acl被匹配上了多少次,以及匹配条目的优先级,下面这两个条目是10 和 20
Extended IP access list 100
10 deny icmp host 192.168.12.1 host 4.4.4.4 echo (5 matches)
20 permit ip any any (43 matches)

命名的访问控制列表

  1. 命名的访问控制列表可以给ACL加上名字,方便维护
  2. 命令的访问控制列表的名字也可以是数字类型字符串
  3. 之前创建的acl 1acl 100都可以理解为名字叫1和100的acl
  4. 命名的访问控制列表可以插入或者删除某个单独的规则,标准或者扩展的acl不可以

用命名的访问控制列表实现上面的那个需求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ip access-list extended eagle
deny icmp host 192.168.12.1 host 4.4.4.4 echo
permit ip any any
interface Ethernet0/0
ip access-group eagle in

# 插入规则
R2(config)#ip access-list extended eagle
R2(config-ext-nacl)#15 deny icmp host 192.168.12.1 any echo
R2#show access-lists
Extended IP access list eagle
10 deny icmp host 192.168.12.1 host 4.4.4.4 echo
15 deny icmp host 192.168.12.1 any echo
20 permit ip any any (11 matches)

需求:除了2.2.2.2,谁都不允许访问1.1.1.1

1
2
3
4
5
6
# 配置在R1上
ip access-list extended cisco
permit ip host 2.2.2.2 any
permit ospf any any
interface Ethernet0/0
ip access-group cisco in
评论
加载中,最新评论有1分钟缓存...