ACL简介
ACL有两个作用
- 抓取流量
- 抓取路由条目
ACL一般用于本来是可以通信的,或者路由是可以学习到的情况,想做限制用的。
我们在做实验的时候,要先检查是否可以通信,或者路由是否可以学习。如果可以,再做ACL。
本文只讲抓取流量的情况ACL分类
标准访问控制列表
- 只能识别流量中的源IP地址,所以在使用的时候必须要确认流量方向。
- 针对识别出来的数据流量,只可以执行丢弃或者放行。
- ACL配置完毕后,必须要选择一个接口使用ACL,不然不生效。
- ACL在路由器的每一个接口上,都要指明是过滤入还是出的流量。
- 由于标准访问控制列表只能识别源IP地址,为了减少对网络的影响,会配置在尽量靠近目的地的地方。
- 为了安全起见,在ACL中没有匹配上的流量,最后会默认丢弃。所以如果一个ACL一条放行的条目都没有,那么是没有意义的。
- 不管是标准还是扩展的ACL,对设备本地始发的流量无效。
ACL的使用
实验拓扑
首先将IP地址配置好,这边每个设备上留一个loopback接口用作测试。
并且全部运行OSPF,让网络全通。
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
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语法
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
最后检查效果
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邻居关系断开,所以除非静态路由,不然此需求无法完成
扩展的访问控制列表
- ACL序列号范围100~199
- 扩展的访问控制列表可以匹配流量的源IP、目的IP、端口号和协议号
- 由于扩展ACL可以精确匹配流量,所以尽可能靠近源地址,但是不能配置在始发设备上,靠近原地址可以减少不必要的流量转发。
- 扩展ACL也是最后默认拒绝所有流量
在R4上开启telnet来模拟一个服务,让R1不可以ping 4.4.4.4
,但是可以telnet 4.4.4.4
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
检验命令
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)
命名的访问控制列表
- 命名的访问控制列表可以给ACL加上名字,方便维护
- 命令的访问控制列表的名字也可以是数字类型字符串
- 之前创建的
acl 1
和acl 100
都可以理解为名字叫1和100的acl - 命名的访问控制列表可以插入或者删除某个单独的规则,标准或者扩展的acl不可以
用命名的访问控制列表实现上面的那个需求
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
# 配置在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