ACL实现包过滤 NAT网络地址转换

        这系列文章为计算机网络理论的学习笔记,学习笔记基于老师给的的PPT、他人学习笔记和维基百科、百度百科等一系列权威资料。学习笔记仅个人学习用,便于记录和复习,无广泛传播之意,若有侵权,请联系我删除。欢迎各位大佬指正和交流。


1 用访问控制列表(ACL)实现包过滤

        本次学习部分内容来自于:华为 的 什么是ACL


1.1 ACL的简介

        ACL:访问控制列表是一种基于包过滤访问控制技术,根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。

1.1.1 ACL的定义

        在我看来,ACL就是由一条或多条规则组成的集合,以实现包过滤(相当于报文过滤器)。

        ACL所组成的条件规则可以是报文的源地址、目的地址、端口号等,是一种应用在网络设备各种软硬接口上的的指令列表。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。


1.1.2 ACL的应运而生

        随着网络的飞速发展,网络安全和网络服务质量QoS(Quality of Service)问题日益突出。

  • 企业重要服务器资源被随意访问,企业机密信息容易泄露,造成安全隐患。
  • Internet病毒肆意侵略企业内网,内网环境的安全性堪忧。
  • 网络带宽被各类业务随意挤占,服务质量要求最高的语音、视频业务的带宽得不到保障,造成用户体验差。

        针对以上对正常网络通信造成影响的问题,表明提高网络安全性服务质量迫在眉睫。ACL便应运而生了。

        通过ACL可以实现对网络中报文流的精确识别和控制,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。

        典型的ACL应用组网场景,前往学习:点我!!点我!!


1.1.3 ACL的应用场景

  • 包过滤防火墙功能
  • NAT(Network Address Translation,网络地址转换)
  • QoS(Quality of Service,服务质量)的数据分类
  • 路由策略和过滤
  • 按需拨号

1.2 ACL的包过滤原理

        ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文。

1.2.1 ACL的组成

                 ACL实现包过滤 NAT网络地址转换_第1张图片

  • ACL编号:用于标识ACL,表明该ACL是数字型ACL。ACL类型多,每类ACL编号的取值范围不同。后面会介绍。
  • 规则:即描述报文匹配条件的判断语句。
  • 规则编号:用于标识ACL规则。可以自行配置规则编号,也可以由系统自动分配。系统按照规则编号从小到大的顺序,将规则依次与报文匹配,一旦匹配上一条规则即停止匹配。
  • 动作:包括permit/deny两种动作,表示允许/拒绝。
  • 匹配项:除了上图中的源地址和生效时间段,ACL还支持很多其他规则匹配项。后面会介绍。 

1.2.2 ACL分类

(一)基于ACL标识方法的划分

  • 数字型ACL:传统的ACL标识方法。创建ACL时,指定一个唯一的数字标识该ACL。
  • 命名型ACL:通过名称代替编号来标识ACL。 “名字+数字”的形式,定义命名型ACL时同时指定ACL编号。如果不指定编号,则由系统自动分配。例如:acl name deny-telnet-login 5200

        命名型ACL一旦创建成功,便不允许用户再修改其名称。如果删除ACL名称,则表示删除整个ACL。

        仅基本ACL与基本ACL6,以及高级ACL与高级ACL6,可以使用相同的ACL名称;其他类型ACL之间,不能使用相同的ACL名称。

(二) 基于对IPv4和IPv6支持情况的划分

  • ACL4:通常直接叫做“ACL”,特指仅支持过滤IPv4报文的ACL。
  • ACL6:又叫做“IPv6 ACL”,   特指仅支持过滤IPv6报文的ACL。 

以上两种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

ACL实现包过滤 NAT网络地址转换_第2张图片

        基本访问控制列表只根据报文的源IP地址信息制定规则。 

(五)高级ACL

ACL实现包过滤 NAT网络地址转换_第3张图片

        高级访问控制列表根据报文的源IP地址、目的IP地址、IP承载的协议类型、协议特性等三、四层信息制定规则。

(六) 二层ACL与用户自定义ACL

  • 二层ACL根据报文的源MAC地址、目的MAC地址、802.1p优先级、二层协议类型等二层信息制定匹配规则
  • 用户自定义ACL可以根据任意位置的任意字串制定匹配规则
    • 报文的报文头、IP头等为基准,指定从第几个字节开始与掩码进行“与”操作,将从报文提取出来的字符串和用户定义的字符串进行比较,找到匹配的报文。

1.2.3 常用匹配项

        想要具体学习的可前往:点我!!点我!!

        设备支持的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分片信息过滤报文。


1.2.4 基于ACL的包过滤技术

ACL实现包过滤 NAT网络地址转换_第4张图片

  • 对进出的数据包逐个过滤,丢弃或允许通过。
  • ACL应用于接口上,每个接口的出入双向分别过滤。
  • 仅当数据包经过一个接口时,才能被此接口的此方向的ACL过滤。

1.2.5 ACL的匹配机制

        设备将报文与ACL规则进行匹配时,遵循“一旦命中即停止匹配”的机制。

        无论入站还是出站,其包过滤工作流程大致相同。

ACL实现包过滤 NAT网络地址转换_第5张图片

        从整个ACL匹配流程可以看出,报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”。

  • 匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则。

    不论匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配”。

  • 不匹配(未命中规则):指1. 不存在ACL,2. ACL中无规则,3. 在ACL中遍历了所有规则都没有找到符合匹配条件的规则。

    以上三种情况,都叫做“不匹配”。

  • 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:表示拒绝所有报文通过。

1.2.6 通配符掩码

  • 通配符掩码和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位

1.2.7 通配符掩码的应用示例 

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……


1.3 ACL包过滤配置任务

  • 启动包过滤防火墙功能,设置默认的过滤规则。
  • 根据需要选择合适的ACL分类。
  • 创建正确的规则:
    • 设置匹配条件
    • 设置合适的动作(Permit/Deny)
  • 在路由器的接口上应用ACL,并指明过滤报文的方向(入站/出站)。

        具体学习可前往:H3C 的 配置基本ACL


1.4 ACL包过滤的注意事项

1.4.1 ACL规则的匹配顺序

        a. 匹配顺序指ACL中规则的优先级。

        b. ACL支持两种匹配顺序:

配置顺序(config):按照用户配置规则的先后顺序进行规则匹配。

自动排序(auto):按照“深度优先”的顺序进行规则匹配,即地址范围小的规则被优先进行匹配。

        c. 配置ACL的匹配顺序:

        [sysname] acl number acl-number [ match-order { auto | config } ]

不同匹配顺序导致结果不同:

ACL实现包过滤 NAT网络地址转换_第6张图片

  • match-order config配置优先(谁在前面谁优先)
  • match-order auto深度优先(地址范围小的优先) 

1.4.2 在网络中的正确位置配置ACL包过滤 

        尽可能在靠近数据源的路由器接口上配置ACL,以减少不必要的流量转发。

  • 基本ACL
    • 过于靠近被过滤源的基本ACL可能阻止该源访问合法目的。
    • 应在不影响其他合法访问的前提下,尽可能使ACL靠近被过滤的源。
  • 高级ACL
    • 应该在靠近被过滤源的接口上应用ACL,以尽早阻止不必要的流量进入网络。

基本ACL部署位置示例:

        要求PCA不能访问NetworkA和NetworkB,但可以访问其他所有网络。

ACL实现包过滤 NAT网络地址转换_第7张图片

高级ACL部署位置示例:

        要求PCA不能访问NetworkA和NetworkB,但可以访问其他所有网络。

ACL实现包过滤 NAT网络地址转换_第8张图片


1.4.3 ACL包过滤的局限性

  • ACL包过滤防火墙是根据数据包头中的二、三、四层信息来进行报文过滤的,对应用层的信息无法识别:
    • 无法根据用户名来决定数据是否通过。
    • 无法给不同的用户授予不同的权限级别。
  • ACL包过滤防火墙是静态防火墙,无法对应用层协议进行动态检测。

2 NAT-网络地址转换

        随着网络迅速发展, IPv4地址不敷使用以及分配不均的问题显现,私有地址用户需要访问Internet,这时NAT提供了私有地址到公有地址的转换。


2.1 NAT组网和常用术语

        NAT(Network Address Translation,网络地址转换)用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。 

ACL实现包过滤 NAT网络地址转换_第9张图片

公有地址(公网):在Internet使用的IP地址,通过它直接访问因特网。

私有地址(私网):在局域网中使用的IP地址,属于非注册地址,专门为组织机构内部使用。

NAT设备:私网转换为公网的一种网络设备,可以是:路由器、防火墙、linux服务器、负载均衡器……

当私有网络内的主机要与位于公网上的主机进行通讯时必须经过地址转换,将其私有地址转换为合法公网地址才能对外访问。

  • 任何组织都可以任意使用私有地址空间。
  • 私有地址在Internet上无法路由。
  • 如果采用私有地址的网络需要访问Internet,必须在出口处部署NAT设备。

2.2 NAT的工作原理


2.2.1 转换方式

  a. 报文出网关,将私有的源地址转换成公网地址,目标地址不变。

  b. 出口网关收到报文的时候,将目标公网地址转换成私有地址,源地址不变。


2.2.2  转换模式

        a. 基于IP转换

ACL实现包过滤 NAT网络地址转换_第10张图片

         b. 基于端口转换

ACL实现包过滤 NAT网络地址转换_第11张图片


2.2.3 NAT的实现方式

        NAT 有三种实现方式:静态NAT(Static NAT)、动态地址NAT(Pooled NAT)、网络地址端口转换NAPT(Port-Level NAT)。

a. 静态NAT(Static NAT)

        静态NAT方式中,内部的IP地址与公有IP地址是一种一一对应的映射关系(相当内部本地的每一台PC都绑定了一个全局地址)。但是采用这种方式的前提是:机构能够申请到足够多的全局IP地址,一般用于在内网中对外提供服务的服务器。

b. 动态地址NAT(Pooled NAT)

        动态地址NAT方式中,内部的IP地址与公有IP地址是多对一的关系。在内部IP地址转换时,提供分配一个临时的外部IP地址进行转换,当用户断开时,这个IP地址就会被释放便于以后使用。一般用于在机构申请到的全局IP地址较少,而内部网络主机较多的情况。

c. 网络地址端口转换NAPT(Port-Level NAT)

        网络地址端口转换NAPT方式中,是把内部地址映射到外部网络的一个IP地址的不同端口上。与动态地址NAT不同的是,NAPT将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号

        关键点:利用端口号的唯一性实现了公网 IP 到私网 IP 的转换,可以同时让多台主机共用一个公网 IP 地址。

ACL实现包过滤 NAT网络地址转换_第12张图片

        NAPT是使用最普遍的一种转换方式,它又包含两种转换方式:SNAT和DNAT

        NAPT也被称为“多对一”的NAT,或者叫PAT(Port Address Translations,端口地址转换)、地址超载(address overloading)。


2.3 配置Basic NAT

        Basic NAT实现私网地址与公网地址一对一转换。

  • 配置ACL
    • 用于判断哪些数据包的地址应被转换。
    • ACL允许(permit)的报文将被进行NAT转换,被拒绝(deny)的报文将不会被转换。
  • 配置地址池
    • nat address-group group-number start-addr end-addr
  • 配置地址转换
    • nat outbound acl-number address-group group-number no-pat

        Basic NAT配置示例:

ACL实现包过滤 NAT网络地址转换_第13张图片


2.4 配置NAPT

        NAPT实现私网地址与公网地址的多对一转换。

  • 配置ACL
    • 用于判断哪些数据包的地址应被转换。
    • ACL允许(permit)的报文将被进行NAT转换,被拒绝(deny)的报文将不会被转换。
  • 配置地址池
    • nat address-group group-number start-addr end-addr
  • 配置地址转换
    • nat outbound acl-number address-group group-number

        NAPT配置举例

ACL实现包过滤 NAT网络地址转换_第14张图片


2.5 配置Easy IP

        Easy IP适用于出接口地址无法预知的场合。

NAT设备直接使用出接口的IP地址作为转换后的源地址。

不用预先配置地址池。

工作原理与普通NAPT相同,是NAPT的一种特例。

适用于拨号接入Internet或动态获得IP地址的场合。 

  • 配置ACL
  • 用于判断哪些数据包的地址应被转换。
  • ACL允许(permit)的报文将被进行NAT转换,被拒绝(deny)的报文将不会被转换。
  • 配置地址转换
  • nat outbound acl-number

        Easy IP配置举例:

ACL实现包过滤 NAT网络地址转换_第15张图片


2.6 NAT Server

        NAT Server使公网主机可以主动连接私网服务器获取服务。
  • NAT Server配置命令:
  • nat server protocol pro-type global global-addr [ global-port ] inside host-addr [ host-port ]

        NAT Server配置举例:

ACL实现包过滤 NAT网络地址转换_第16张图片


2.7 NAT ALG

ACL实现包过滤 NAT网络地址转换_第17张图片


2.8 NAT的信息显示和调试

  • 显示地址转换信息
  • display nat { address-group | aging-time | all | outbound | server | statistics | session | [ slot slot-number ] | [ source global global-addr | source inside inside-addr ] | [ destionation ip-addr ] }
  • 调试地址转换过程
  • debugging nat { alg | event | packet [ interface interface-type interface-number ] } nat aging-time { tcp | udp | icmp}  seconds
  • 清除地址转换连接
  • reset nat session

 

你可能感兴趣的:(计算机网络1)