目录
ACL
全称:Access Control List
中文:访问控制列表
介绍
ACL 是网络当中策略的一种,策略:我们之前学的内容只够我们把网络连通,但网络不仅仅是能连通那么简单,在保证网络能连通的基础上,应该还有更高一层的追求,即对网络进行一些控制。比如说:对某些人的流量进行限制、对某些人的流量做一些保障、不允许某些人访问某些网站等的控制行为。这些都需要通过策略来完成。
ACL 就是众多策略中的一种,是最简单的一种工具,可以帮助我们实现一些基本的功能,比如说:实现 访问控制列表 的功能。
企业网络中的设备进行通信时,需要保障数据传输的安全可靠和网络的性能稳定。
ACL可以定义一系列不同的规则,设备根据这些规则对数据进行分类,并针对不同类型的报文进行不同的处理,从而可以实现对网络访问行为的控制、限制网络流量、提高网络性能、防止网络攻击等等。
工作原理
某些设备配置了ACL,ACL中声明了一些匹配规则,通过这个规则来匹配一些流量,对匹配到的流量再执行相应的动作,即,提前设定好了怎么处理这些流量,比如说,是让它访问还是不让访问,从而就实现了控制的功能。
ACL 在很多设备上都是可以应用的,后面主要讲在路由器上的应用,讲述在路由器上怎么配置 ACL
ACL 的作用
-
访问控制:在路由器流量流入或留出的接口上,匹配流量,然后执行设定好的动作。
-
配置位置:在路由器的接口上:把接口分为流量流入、流出的接口。
现在如果用PC1访问PC3,那么对于左边的路由器来说:g 0/0/1 是流量流入的接口,g 0/0/0 是流量流出的接口。
PC3回包的时候情况正好相反。
所以:流入、流出是一个相对的概念,不是固定的。
-
执行的动作
只有两种:permit 允许 , deny
-
-
抓取感兴趣流:ACL可以和其他服务结合使用。ACL只负责匹配流量,其他服务则对匹配的流量执行对应的动作0
-
ACL的功能很单一 --- 只有两个动作,但ACL在某些场景下,有时候我们需要做策略并不是一刀切的,即,很干净利落就两种情况:允许、拒绝。就比如说做流控,不是说不让访问,可以访问,但要对流量、速度等做一些限制,遇到这样的情况,光靠这两种动作是无法实现这个功能的,所以,ACL在某些情况下只做第一件事 --- 只抓取流量,但不去做动作。动作交给其它的服务来做,即,和其它服务去打配合。ACL 和别的服务去结合 ,就可以实现更多更丰富的功能,而不仅仅是访问控制。
-
eg:
流控 --- 对流量进行控制和管理
QoS(服务质量技术)
ACL 和 QoS 配合:ACL负责抓取流量,QoS负责对流量进行相应的操作
后面只讲述 ACL 的第一个作用:访问控制
ACL的匹配规则
自上而下,逐一匹配,如果匹配上,则按照对应的动作执行,不再向下匹配。
思科体系的设备:在ACL列表末尾隐含一条拒绝所有的规则
华为体系的设备:在ACL列表末尾隐含一条允许所有的规则 —— 不准确
实际上的默认规则:对于没有匹配上的不做处理,相当于允许。
-
每个ACL可以包含多个规则,RTA根据规则来对数据流量进行过滤
ACL分类
思科 和 华为 不一样
华为:
分类 编号范围 参数 基本ACL 2000-2999 仅关注数据包中的源IP地址 高级ACL 3000-3999 不仅关注数据包中的源IP地址,还会关注数据包中的目标IP地址,以及协议和目标端口号 二层ACL 4000-4999 源MAC地址、目的MAC地址、以太帧协议类型等 用户自定义ACL —— ——
后面只讲述前两种ACL:基本ACL、高级ACL
ACL应用场景
-
ACL可以通过定义规则来允许或拒绝流量的通过。
-
ACL可以根据需求来定义过滤的条件以及匹配条件后所执行的动作。
(疑问? 感觉应该不能执行动作,只能抓取流量)
基本ACL配置
配置确认
高级ACL配置
应用
如下给出一个场景:我们会给出一些需求,然后利用ACL来完成这些需求。
如下搭建的网络已经实现了全网可达:
配ip
配静态路由
[r1]ip route-static 192.168.3.0 24 192.168.2.2
[r1]
[r2]ip route-static 192.168.1.0 24 192.168.2.1
[r2]
ping
需求一:通过 ACL 实现PC1可以访问PC3和PC4,但是PC2不行
基本ACL的位置原则:因为基本ACL只关注数据包中的源IP地址,故调用时尽可能的靠近目标,避免对其他地址访问造成误伤。
如图有4个接口可供选择,按照上面所说的原则,我们选择接口4。
下面就开始配置ACL:
-
创建一张ACL列表
[r2]acl ? INTEGER<2000-2999> Basic access-list(add to current using rules) -- 基本ACL INTEGER<3000-3999> Advanced access-list(add to current using rules) -- 高级ACL INTEGER<4000-4999> Specify a L2 acl group -- 二层ACL ipv6 ACL IPv6 name Specify a named ACL number Specify a numbered ACL [r2]acl 2000 [r2-acl-basic-2000]
这样就创建了一张ACL表,但只是个空表,没有规则。
-
在ACL列表中添加规则
按照我们的需求:实现 PC2 无法访问到 PC3,PC4,那么就有以下两种方案:
-
拒绝PC2,允许所有
-
允许PC1,拒绝所有
那么这两种选择哪一种比较好呢?
其实要取决于体系,如果是华为体系的话,就选择第一种,因为华为体系的设备在ACL列表末尾隐含一条允许所有的规则。如果是思科体系的话,就选择第二种。
下面我们开始添加规则:
-
拒绝PC2
[r2-acl-basic-2000]rule ? INTEGER<0-4294967294> ID of ACL rule deny Specify matched packet deny permit Specify matched packet permit [r2-acl-basic-2000]rule deny ? fragment Check fragment packet none-first-fragment Check the subsequence fragment packet source Specify source address time-range Specify a special time vpn-instance Specify a VPN-Instance <cr> Please press ENTER to execute command [r2-acl-basic-2000]rule deny source ? IP_ADDR<X.X.X.X> Address of source any Any source [r2-acl-basic-2000]rule deny source 192.168.1.3 0.0.0.0 ---- 0.0.0.0——通配符:0代表不可变,1代表可变,统配符中0和1可以穿插使用 [r2-acl-basic-2000]
-
允许所有(可以不写,默认允许)
[r2-acl-basic-2000]rule permit source any [r2-acl-basic-2000]
另外还有其他有关命令:
查看 acl 2000 列表的规则
[r2]display acl 2000 Basic ACL 2000, 2 rules Acl's step is 5 rule 5 deny source 192.168.1.3 0 rule 10 permit [r2]
自定义序号添加规则
华为默认以5为步调,自动添加ACL的规则的序号。其目的在于匹配规则是从上向下按顺序匹配,这样便于在其中插入规则。
[r2-acl-basic-2000]rule 6 deny source 192.168.1.2 0.0.0.0 [r2-acl-basic-2000]q [r2]display acl 2000 Basic ACL 2000, 3 rules Acl's step is 5 rule 5 deny source 192.168.1.3 0 rule 6 deny source 192.168.1.2 0 rule 10 permit [r2]
按照序号删除规则
[r2-acl-basic-2000]undo rule 6 [r2-acl-basic-2000]q [r2]display acl 2000 Basic ACL 2000, 2 rules Acl's step is 5 rule 5 deny source 192.168.1.3 0 rule 10 permit [r2]
-
-
在接口上调用ACL列表
[r2-GigabitEthernet0/0/1]traffic-filter ? inbound Apply ACL to the inbound direction of the interface —— 流入方向 outbound Apply ACL to the outbound direction of the interface —— 流出方向 [r2-GigabitEthernet0/0/1]traffic-filter outbound acl 2000 [r2-GigabitEthernet0/0/1]
注意:在一个接口的一个方向上,只能调用一张ACL列表。
另外还有其他有关命令:
查看应用
[r2-GigabitEthernet0/0/1]display traffic-filter applied-record ----------------------------------------------------------- Interface Direction AppliedRecord ----------------------------------------------------------- GigabitEthernet0/0/1 outbound acl 2000 ----------------------------------------------------------- [r2-GigabitEthernet0/0/1]
删除应用
[r2-GigabitEthernet0/0/1]undo traffic-filter outbound [r2-GigabitEthernet0/0/1]display traffic-filter applied-record ----------------------------------------------------------- Interface Direction AppliedRecord ----------------------------------------------------------- ----------------------------------------------------------- [r2-GigabitEthernet0/0/1]
PC1 ping PC3
需求二:要求PC1可以访问PC3,但是不能访问PC4
高级ACL的位置原则:因为高级ACL是精准匹配,所以,在调用时应该尽可能靠近源目标,避免造成额外的链路资源浪费。所以我们选择接口1
下面就开始配置ACL:
-
创建一张ACL列表
[r1]acl ?
INTEGER<2000-2999> Basic access-list(add to current using rules)
INTEGER<3000-3999> Advanced access-list(add to current using rules)
INTEGER<4000-4999> Specify a L2 acl group
ipv6 ACL IPv6
name Specify a named ACL
number Specify a numbered ACL
[r1]acl name aa ?
INTEGER<2000-2999> Basic access-list(add to current using rules)
INTEGER<3000-3999> Advanced access-list(add to current using rules)
INTEGER<4000-4999> Specify a L2 acl group
advance Advanced acl
basic Basic acl
link Link acl
match-order Set ACL's match order
<cr> Please press ENTER to execute command
[r1]acl name aa 3000 ---- 通过重命名的方式创建ACL列表
[r1-acl-adv-aa]
-
在ACL列表中添加规则
-
拒绝PC4
-
[r1-acl-adv-aa]rule deny ip source 192.168.1.2 0.0.0.0 destination 192.168.3.3 0.0.0.0
[r1-acl-adv-aa]
-
在接口上调用ACL列表
[r1-GigabitEthernet0/0/1]traffic-filter inbound acl name aa ---- 通过重命名的方式调用ACL列表 [r1-GigabitEthernet0/0/1]
PC1 ping PC3、PC1 ping PC4
需求三:要求PC1可以ping通R2,但是不能telnet R2
在需求二中我们使用了高级ACL,但我们只用到了源IP、目标IP,而协议和端口号没用到,本实验我们就使用一下
telnet(远程登录协议)
作用:可以远程登录、控制、配置网络设备。
带外管理:不依靠网络,直接对设备进行管理
通过console接口连接console线对设备进行控制
网络工程人员一般都会随身携带一根console线,所有的路由器、交换机等设备上面都有一根专门的接口——console口,console连接console线,一端连接在设备的console口(水晶头),另外一端连接在电脑上(串线头)。设备和电脑之间就建立了联系,之后只需要在电脑上启动一些连接软件就可以对设备进行控制了。
通过miniUSB接口连接MINIUSB线对设备进行控制
原理和console线一样。
既然原理一样,那为什么有console口了,还要设置miniUSB口呢?
答:万一设备的console坏了,还可以使用miniUSB接口。
带内管理:通过网络对设备进行管理
通过telnet管理路由器
通过web界面管理路由器
通过SNMP协议进行设备管理
telnet进行管理的前提条件 1,登录设备和被登录设备之间网络必须是连通的 2,被登录设备必须开启telnet服务
telnet —— C/S架构
-
被登录设备充当telnet服务器的角色,登录设备充当telnet客户端的角色。
-
TCP 23
-
SPort:随机
-
DPort:23
-
路由器开启telnet服务的方法:
1,在AAA中创建用户名
-
进入aaa服务
作用:专门存储和管理用户名和密码的地方
目的:设置账号、密码
[r2]aaa [r2-aaa]
-
创建用户名和密码
[r2-aaa]local-user aa privilege level 15 password cipher 123456 Info: Add a new user. —— 用户名:aa,密码:123456,权限:15 [r2-aaa]
-
设置用户服务类型
[r2-aaa]local-user aa service-type telnet [r2-aaa]
2,开启虚拟的登录端口
[r2]user-interface vty 0 4
[r2-ui-vty0-4]
认证
[r2-ui-vty0-4]authentication-mode aaa
[r2-ui-vty0-4]
telnet PC2
由于eNSP无法开启客户端telnet,所以报错。
那我们用真机作为客户端:
开启telnet客户端
真机可以telnet虚拟机中的设备,但虚拟机中设备的ip都是随便配的。
由于虚拟机中的设备都是用的虚拟网卡,所以可以telnet 127.0.0.1,但我们还要区分不同的设备,可以用串口号进行区分
我们也可以使用软件——SecureCRT
我们可以用路由器代替电脑(PC1)
The device is running!
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys pc1
[pc1]int g 0/0/0
[pc1-GigabitEthernet0/0/0]ip address 192.168.1.10 24
May 8 2023 18:17:14-08:00 pc1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP
on the interface GigabitEthernet0/0/0 has entered the UP state.
[pc1-GigabitEthernet0/0/0]q
[pc1]ip route-static 0.0.0.0 0 192.168.1.1
[pc1]ping 192.168.2.2
PING 192.168.2.2: 56 data bytes, press CTRL_C to break
Request time out
Reply from 192.168.2.2: bytes=56 Sequence=2 ttl=254 time=70 ms
Reply from 192.168.2.2: bytes=56 Sequence=3 ttl=254 time=50 ms
Reply from 192.168.2.2: bytes=56 Sequence=4 ttl=254 time=50 ms
Reply from 192.168.2.2: bytes=56 Sequence=5 ttl=254 time=30 ms
--- 192.168.2.2 ping statistics ---
5 packet(s) transmitted
4 packet(s) received
20.00% packet loss
round-trip min/avg/max = 30/50/70 ms
[pc1]q
<pc1>telnet 192.168.2.2
Press CTRL_] to quit telnet mode
Trying 192.168.2.2 ...
Connected to 192.168.2.2 ...
Login authentication
Username:aa
Password:
<r2>
下面开始配置acl:
[r1]acl 3001
[r1-acl-adv-3001]rule deny tcp source 192.168.1.10 0.0.0.0 destination 192.168.2
.2 0.0.0.0 destination-port eq 23
[r1-acl-adv-3001]
[r1-GigabitEthernet0/0/0]undo traffic-filter inbound
[r1-GigabitEthernet0/0/0]traffic-filter inbound acl 3001
[r1-GigabitEthernet0/0/0]
由于r2有两个网关,所以可以telnet 192.168.3.1
所以还要把r2的另一个接口搞一下