这系列文章为计算机网络理论的学习笔记,学习笔记基于老师给的的PPT、他人学习笔记和维基百科、百度百科等一系列权威资料。学习笔记仅个人学习用,便于记录和复习,无广泛传播之意,若有侵权,请联系我删除。欢迎各位大佬指正和交流。
本次学习部分内容来自于:华为 的 什么是ACL
ACL:访问控制列表是一种基于包过滤的访问控制技术,根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。
在我看来,ACL就是由一条或多条规则组成的集合,以实现包过滤(相当于报文过滤器)。
ACL所组成的条件规则可以是报文的源地址、目的地址、端口号等,是一种应用在网络设备各种软硬接口上的的指令列表。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。
随着网络的飞速发展,网络安全和网络服务质量QoS(Quality of Service)问题日益突出。
- 企业重要服务器资源被随意访问,企业机密信息容易泄露,造成安全隐患。
- Internet病毒肆意侵略企业内网,内网环境的安全性堪忧。
- 网络带宽被各类业务随意挤占,服务质量要求最高的语音、视频业务的带宽得不到保障,造成用户体验差。
针对以上对正常网络通信造成影响的问题,表明提高网络安全性服务质量迫在眉睫。ACL便应运而生了。
通过ACL可以实现对网络中报文流的精确识别和控制,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。
典型的ACL应用组网场景,前往学习:点我!!点我!!
- 包过滤防火墙功能
- NAT(Network Address Translation,网络地址转换)
- QoS(Quality of Service,服务质量)的数据分类
- 路由策略和过滤
- 按需拨号
ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文。
- ACL编号:用于标识ACL,表明该ACL是数字型ACL。ACL类型多,每类ACL编号的取值范围不同。后面会介绍。
- 规则:即描述报文匹配条件的判断语句。
- 规则编号:用于标识ACL规则。可以自行配置规则编号,也可以由系统自动分配。系统按照规则编号从小到大的顺序,将规则依次与报文匹配,一旦匹配上一条规则即停止匹配。
- 动作:包括permit/deny两种动作,表示允许/拒绝。
- 匹配项:除了上图中的源地址和生效时间段,ACL还支持很多其他规则匹配项。后面会介绍。
(一)基于ACL标识方法的划分
命名型ACL一旦创建成功,便不允许用户再修改其名称。如果删除ACL名称,则表示删除整个ACL。
仅基本ACL与基本ACL6,以及高级ACL与高级ACL6,可以使用相同的ACL名称;其他类型ACL之间,不能使用相同的ACL名称。
(二) 基于对IPv4和IPv6支持情况的划分
以上两种ACL,以及既支持过滤IPv4报文又支持过滤IPv6报文的ACL,统一称做“ACL”。
(三) 基于ACL规则定义方式的划分
分类 |
适用的IP版本 |
规则定义描述 |
编号范围 |
---|---|---|---|
基本ACL |
IPv4 |
仅使用报文的源IP地址、分片信息和生效时间段信息定义规则。 |
2000~2999 |
高级ACL |
IPv4 |
既可使用IPv4报文的源IP地址,也可使用目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口、UDP源/目的端口号、生效时间段等来定义规则。 |
3000 ~ 3999 |
二层ACL |
IPv4&IPv6 |
使用报文的以太网帧头信息来定义规则,如根据源MAC(Media Access Control)地址、目的MAC地址、二层协议类型等。 |
4000~4999 |
用户自定义ACL |
IPv4&IPv6 |
使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则,即以报文头为基准,指定从报文的第几个字节开始与字符串掩码进行“与”操作,并将提取出的字符串与用户自定义的字符串进行比较,从而过滤出相匹配的报文。 |
5000~5999 |
用户ACL |
IPv4 |
既可使用IPv4报文的源IP地址,也可使用目的IP地址、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。 |
6000~6031 |
基本ACL6 |
IPv6 |
使用IPv6报文的源IPv6地址、分片信息和生效时间段定义规则。 |
2000~2999 |
高级ACL6 |
IPv6 |
可以使用IPv6报文的源IPv6地址、目的IPv6地址、IPv6协议类型、ICMPv6类型、TCP源/目的端口、UDP源/目的端口号、生效时间段等来定义规则。 |
3000~3999 |
(四)基本ACL
基本访问控制列表只根据报文的源IP地址信息制定规则。
(五)高级ACL
高级访问控制列表根据报文的源IP地址、目的IP地址、IP承载的协议类型、协议特性等三、四层信息制定规则。
(六) 二层ACL与用户自定义ACL
想要具体学习的可前往:点我!!点我!!
设备支持的ACL匹配项种类非常丰富,其中最常用的匹配项包括以下几种。
(一)生效时间段
格式:time-range time-name //所有ACL均支持根据生效时间段过滤报文。
(二)IP承载的协议类型
格式:protocol-number | icmp | tcp | udp | gre | igmp | ip | ipinip | ospf //高级ACL支持基于协议类型过滤报文。
(三)源/目的IP地址及其通配符掩码
源IP地址及其通配符掩码格式:source { source-address source-wildcard | any }
目的IP地址及其通配符掩码格式:destination { destination-address destination-wildcard | any }
(四)源/目的MAC地址及其通配符掩码
源MAC地址及其通配符掩码格式:source-mac source-mac-address [ source-mac-mask ]
目的地址及其通配符掩码格式:destination-mac dest-mac-address [ dest-mac-mask ]
(五)VLAN编号及其掩码
外层VLAN及其掩码格式:vlan-id vlan-id [ vlan-id-mask ]
内层VLAN及其掩码格式:cvlan-id cvlan-id [ cvlan-id-mask ] //二层ACL支持基于外层VLAN或内层VLAN编号过滤报文。
(六)TCP/UDP端口号
源端口号格式:source-port { eq port | gt port | lt port | range port-start port-end }
目的端口号格式:destination-port { eq port | gt port | lt port | range port-start port-end }
(七)TCP标志信息
格式:tcp-flag { ack | established | fin | psh | rst | syn | urg }*
(八)IP分片信息
格式:none-first-fragment //基本ACL和高级ACL支持基于IP分片信息过滤报文。
设备将报文与ACL规则进行匹配时,遵循“一旦命中即停止匹配”的机制。
无论入站还是出站,其包过滤工作流程大致相同。
从整个ACL匹配流程可以看出,报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”。
不论匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配”。
以上三种情况,都叫做“不匹配”。
- rule permit xxx/rule permit xxxx:表示允许指定的报文通过,xxx/xxxx表示指定报文的标识,可以是源IP地址、源MAC地址、生效时间段等。xxxx表示的范围与xxx表示的范围是包含关系,例如xxx是某一个IP地址,xxxx可以是该IP地址所在的网段地址或any(表示任意IP地址);再如xxx是周六的某一个时段,xxxx可以是双休日全天时间或一周七天全部时间。
- rule deny xxx/rule deny xxxx:表示拒绝指定的报文通过。
- rule permit:表示允许所有报文通过。
- rule deny:表示拒绝所有报文通过。
- 通配符掩码和IP地址结合使用以描述一个地址范围
- 通配符掩码和子网掩码相似,但含义不同
- 0表示对应位须比较
- 1表示对应位不比较
IP地址与通配符掩码共同确定的地址范围:
通配符掩码的含义(转换成二进制看):
通配符掩码 |
含义(0比较 1不比较) |
---|---|
0.0.0.255 (00000000.00000000.00000000.11111111) |
只比较前24位 |
0.0.3.255 (00000000.00000000.00000011.11111111) |
只比较前22位 |
0.255.255.255 (00000000.11111111.11111111.11111111) | 只比较前8位 |
IP地址 |
IP地址通配符掩码 |
确定的地址范围 |
---|---|---|
0.0.0.0 |
255.255.255.255 |
任意IP地址 |
192.168.0.1 |
0.0.3.255 |
192.168.0.0/22网段的IP地址 |
192.168.0.1 |
0.0.0.0 |
仅192.168.0.1这一个主机地址 |
192.168.0.1 |
0.0.0.7 |
192.168.0.1/29网段的IP地址 |
192.168.0.8 |
0.0.0.7 |
192.168.0.8/29网段的IP地址 |
192.168.0.1 | 0.0.2.255 | 192.168.0.0/24和192.168.2.0/24网段的IP地址 |
10.1.2.0 |
0.0.254.255 (通配符掩码中的1和0不连续) |
10.1.0.0/24~10.1.254.0/24网段之间且第三个字节为偶数的IP地址,如10.1.0.0/24、10.1.2.0/24、10.1.4.0/24、10.1.6.0/24…… |
具体学习可前往:H3C 的 配置基本ACL
a. 匹配顺序指ACL中规则的优先级。
b. ACL支持两种匹配顺序:
配置顺序(config):按照用户配置规则的先后顺序进行规则匹配。
自动排序(auto):按照“深度优先”的顺序进行规则匹配,即地址范围小的规则被优先进行匹配。
c. 配置ACL的匹配顺序:
[sysname] acl number acl-number [ match-order { auto | config } ]
不同匹配顺序导致结果不同:
- match-order config配置优先(谁在前面谁优先)
- match-order auto深度优先(地址范围小的优先)
尽可能在靠近数据源的路由器接口上配置ACL,以减少不必要的流量转发。
基本ACL部署位置示例:
要求PCA不能访问NetworkA和NetworkB,但可以访问其他所有网络。
高级ACL部署位置示例:
要求PCA不能访问NetworkA和NetworkB,但可以访问其他所有网络。
- ACL包过滤防火墙是根据数据包头中的二、三、四层信息来进行报文过滤的,对应用层的信息无法识别:
- 无法根据用户名来决定数据是否通过。
- 无法给不同的用户授予不同的权限级别。
- ACL包过滤防火墙是静态防火墙,无法对应用层协议进行动态检测。
随着网络迅速发展, IPv4地址不敷使用以及分配不均的问题显现,私有地址用户需要访问Internet,这时NAT提供了私有地址到公有地址的转换。
NAT(Network Address Translation,网络地址转换):用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。
公有地址(公网):在Internet使用的IP地址,通过它直接访问因特网。
私有地址(私网):在局域网中使用的IP地址,属于非注册地址,专门为组织机构内部使用。
NAT设备:私网转换为公网的一种网络设备,可以是:路由器、防火墙、linux服务器、负载均衡器……
当私有网络内的主机要与位于公网上的主机进行通讯时必须经过地址转换,将其私有地址转换为合法公网地址才能对外访问。
a. 报文出网关,将私有的源地址转换成公网地址,目标地址不变。
b. 出口网关收到报文的时候,将目标公网地址转换成私有地址,源地址不变。
a. 基于IP转换
b. 基于端口转换
NAT 有三种实现方式:静态NAT(Static NAT)、动态地址NAT(Pooled NAT)、网络地址端口转换NAPT(Port-Level NAT)。
静态NAT方式中,内部的IP地址与公有IP地址是一种一一对应的映射关系(相当内部本地的每一台PC都绑定了一个全局地址)。但是采用这种方式的前提是:机构能够申请到足够多的全局IP地址,一般用于在内网中对外提供服务的服务器。
动态地址NAT方式中,内部的IP地址与公有IP地址是多对一的关系。在内部IP地址转换时,提供分配一个临时的外部IP地址进行转换,当用户断开时,这个IP地址就会被释放便于以后使用。一般用于在机构申请到的全局IP地址较少,而内部网络主机较多的情况。
网络地址端口转换NAPT方式中,是把内部地址映射到外部网络的一个IP地址的不同端口上。与动态地址NAT不同的是,NAPT将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。
关键点:利用端口号的唯一性实现了公网 IP 到私网 IP 的转换,可以同时让多台主机共用一个公网 IP 地址。
NAPT是使用最普遍的一种转换方式,它又包含两种转换方式:SNAT和DNAT。
NAPT也被称为“多对一”的NAT,或者叫PAT(Port Address Translations,端口地址转换)、地址超载(address overloading)。
Basic NAT实现私网地址与公网地址一对一转换。
Basic NAT配置示例:
NAPT实现私网地址与公网地址的多对一转换。
NAPT配置举例:
Easy IP适用于出接口地址无法预知的场合。
NAT设备直接使用出接口的IP地址作为转换后的源地址。
不用预先配置地址池。
工作原理与普通NAPT相同,是NAPT的一种特例。
适用于拨号接入Internet或动态获得IP地址的场合。
Easy IP配置举例:
NAT Server配置举例: