ACL
中文:访问控制列表
介绍:
ACL 是网络当中策略的一种,策略:我们之前学的内容只够我们把网络连通,但网络不仅仅是能连通那么简单,在保证网络能连通的基础上,应该还有更高一层的追求,即对网络进行一些控制。比如说:对某些人的流量进行限制、对某些人的流量做一些保障、不允许某些人访问某些网站等的控制行为。这些都需要通过策略来完成。
ACL 就是众多策略中的一种,是最简单的一种工具,可以帮助我们实现一些基本的功能,比如说:实现 访问控制列表 的功能。
工作原理:
某些设备配置了ACL,ACL中声明了一些匹配规则,通过这个规则来匹配一些流量,对匹配到的流量再执行相应的动作,即,提前设定好了怎么处理这些流量,比如说,是让它访问还是不让访问,从而就实现了控制的功能。
ACL 在很多设备上都是可以应用的,后面主要讲在路由器上的应用,讲述在路由器上怎么配置 ACL
ACL 的作用:
-
访问控制:在路由器流量流入或留出的接口上,匹配流量,然后执行设定好的动作。
-
配置位置:路由器的接口上:把接口分为流量流入、流出的接口
-
现在如果用PC1访问PC3,那么对于左边的路由器来说:g 0/0/1 是流量流入的接口,g 0/0/0 是流量流出的接口。
PC3回包的时候情况正好相反。
所以:流入、流出是一个相对的概念,不是固定的。
-
执行的动作
只有两种:permit 允许 , deny 拒绝
-
-
抓取感兴趣流:ACL可以和其他服务结合使用。ACL只负责匹配流量,其他服务则对匹配的流量执行对应的动作
-
ACL的功能很单一 --- 只有两个动作,但ACL在某些场景下,有时候我们需要做策略并不是一刀切的,即,很干净利落就两种情况:允许、拒绝。就比如说做流控,不是说不让访问,可以访问,但要对流量、速度等做一些限制,遇到这样的情况,光靠这两种动作是无法实现这个功能的,所以,ACL在某些情况下只做第一件事 --- 只抓取流量,但不去做动作。动作交给其它的服务来做,即,和其它服务去打配合。ACL 和别的服务去结合 ,就可以实现更多更丰富的功能,而不仅仅是访问控制。
-
流控 --- 对流量进行控制和管理
QoS:服务质量技术
ACL 和 QoS 配合:ACL负责抓取流量,QoS负责对流量进行相应的操作
后面只讲述 ACL 的第一个作用:访问控制功能
ACL的匹配规则
自上而下,逐一匹配,如果匹配上,则按照对应的动作执行,不再向下匹配。
思科体系的设备:在ACL列表末尾隐含一条拒绝所有的规则
华为体系的设备:在ACL列表末尾隐含一条允许所有的规则 —— 不准确
实际上的默认规则:对于没有匹配上的不做处理,相当于允许。
ACL列表的分类
思科 和 华为 不一样
基本ACL:仅关注数据包中的源IP地址
高级ACL:不仅关注数据包中的源IP地址,还会关注数据包中的目标IP地址,以及协议和目标端口号
二层ACL
用户自定义ACL
后面只讲述前两种ACL:基本ACL、高级ACL
如下给出一个场景:我们会给出一些需求,然后利用ACL来完成这些需求。
如下搭建的网络已经实现了全网可达:
需求一:通过 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 outbound acl 2000 [r2-GigabitEthernet0/0/1]
注意:在一个接口的一个方向上,只能调用一张ACL列表。
需求二:要求PC1可以访问PC3,但是不能访问PC4
高级ACL的位置原则:因为高级ACL是精准匹配,所以,在调用时应该尽可能靠近源目标,避免造成额外的链路资源浪费。
下面就开始配置ACL:
-
创建一张ACL列表
[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通R2,但是不能telnet R2
telnet ---- 远程登录协议
带外管理:不依靠网络,直接对设备进行管理 ---- 通过console接口连接console线对设备进行控制 ---- 通过miniUSB接口连接MINIUSB线对设备进行控制 带内管理:通过网络对设备进行管理
---- 通过telnet管理路由器 ---- 通过web界面管理路由器 ---- 通过SNMP协议进行设备管理
telnet进行管理的前提条件 1,登录设备和被登录设备之间网络必须是连通的 2,被登录设备必须开启telnet服务