文章整理自《华为防火墙技术漫谈》

源NAT

NAT技术对IP报文的源地址进行转换,将私网IP地址转换成公网IP地址使大量私网用户可以利用少量公网IP地址访问Internet,大大减少了对公网IP地址的消耗。整个NAT转换过程对于内部网络中的用户和Internet上的主机来说是完全透明的。

NAT地址池是一个虚拟的概念,它形象地把“公网IP地址的集合”比喻成一个“放IP地址的池子或容器”,防火墙在进行地址转换时就是从NAT地址池中挑选出一个公网IP地址,然后对私网IP地址进行转换。挑选哪个公网IP地址是随机的,和配置时的顺序、IP地址大小等因素都没有关系

[FW1]nat address-group 1[FW1]setion 1 202.1.1.2 202.1.1.5 -->表示了4个公网地址

NAT地址池配置完成后,会被NAT策略所引用。NAT策略与安全策略相似,也是由条件动作组成。不同的是,NAT策略中的动作是“源NAT转换”和“不进行NAT转换”,当动作是“源NAT转换”时必须引用NAT地址池

多条NAT策略之间存在匹配顺序,如果报文命中了某一条NAT策略,就会按照该NAT策略中引用的地址池来进行地址转换;如果报文没有命中某条NAT策略,则会向下继续查找。

NAT No-PAT

"No-PAT"表示不进行端口转换,所以NAT No-PAT方式只转换IP地址,故也称为

一对一地址转换”。

NAPT

NAPT(Network Address and Port Translation)表示网络地址和端口转换,即同时对IP地址和端口进行转换,也可称为PAT(PAT不是只转换端口的意思,而是IP地址和端口同时转换),NAPT是一种应用最广泛的地址转换方式,可以利用少量的公网IP地址来满足大量私网用户访问Internet的需求。

NAPT方式和NAT No-PAT方式在配置上的区别仅在于:NAPT方式的NAT策略在引用NAT地址池时,不配置关键字"no-pat",其他的配置都是一样的。

另外需要注意,NAPT方式不会生成Server-map,这一点与NAT No-PAT方式方式不同。

出接口地址方式

出接口地址方式(Easy-IP)指的是利用出接口的公网IP地址作为NAT转换后的地址,也同时转换地址和端口,一个公网IP地址可以同时被多个私网用户使用,可以看成是NAPT方式的一种“变体”。

出接口地址方式的应用场景比较特殊,当防火墙上的公网接口通过拨号方式动态获取公网IP地址时,如果只想使用这一个公网IP地址来进行地址转换,这个时候就不能在NAT地址池中配置固定的地址,因为公网IP地址是动态变化的。此时可以使用出接口地址方式,即使出接口上获取的公网IP地址发生变化,防火墙也会按照新的公网IP地址来进行地址转换。出接口地址方式简化了配置过程,所以也叫作Easy-IP方式。

Smart NAT

Smart NAT方式也叫作“聪明的NAT",这是因为它融合了NAT No-PAT方式和NAPT方式的特点,它的实现原理如下。

假设Smart NAT方式使用的地址池中包含N个IP,其中一个IP被指定为预留地址,另外N-1个地址构成地址段1(sectionl1),进行NAT地址转换时,Smart NAT会先使用sectionl进行NAT No-PAT方式的转换,即一对一的地址转换。当sectionl中的IP都被占用后,Smart NAT才使用预留地址进行NAPT方式的转换,即多对一的地址转换

三元组NAT

前面我们介绍了4种源NAT转换方式,其中NAPT应用最广泛,不但解决了公网IP地址短缺的问题,还隐藏了内部主机的私网IP地址,提高了安全性。但是NAT技术与目前广泛应用于文件共享、语音通信、视频传输等方面的P2P技术不能很好地共存,当P2P业务遇到NAT的时候,产生的不是完美的"NAT-P2P",而是…你可能无法下载最新的影视资源、无法进行视频聊天。

为了解决P2P业务和NAT共存的问题,我们就要用到一种新的地址转换方式:三元组NAT。在介绍三元组NAT方式之前,我们先来看一下P2P业务的交互过程,以及在NAPT方式下P2P业务会遇到什么问题。

上述交互过程看起来似乎很顺畅,但是对于P2P业务来说,存在两个问题。

(1)为了保持联系,PC1会定期向P2P服务器发送报文,该报文在防火墙上经过NAPT方式的转换后,NAPT方式决定了转换后的端口并不是固定的,会动态变化。这样的话,P2P服务器记录的PCI的地址和端口的信息也要经常刷新,会影响P2P业务正常运行。

(2)更重要的是,根据防火墙的转发原理,只有P2P服务器返回给PC1的报文命中会话表后才能通过防火墙,其他主机如PC2不能通过转换后的地址和端口来主动访问PC1,默认情况下,防火墙上的安全策略不允许这一类的访问报文通过

三元组NAT方式可以完美地解决上述两个问题,因为三元组NAT方式在进行转换时有以下两个特点。

(1)对外呈现端口一致性

PC1访问P2P服务器后,在一段时间内,PCI再次访问P2P服务器或者访问Internet上的其他主机时,防火墙都会将PCI的端口转换成相同的端口,这样就保证了PC1对外所呈现的端口的一致性,不会动态变化。

(2)支持外网主动访问

无论PC1是否访问过PC2,只要PC2获取到PC1经过NAT转换后的地址和端口,就可以主动向该地址和端口发起访问。防火墙上即使没有配置相应的安全策略,也允许此类访问报文通过。

正是由于三元组NAT的这两个特点,使得P2P业务可以正常运行。

总结

NAT Server

源NAT是对私网用户访问公网的报文的源地址进行转换,而服务器对公网提供服务时,是公网用户向私网发起访问,方向正好反过来了。于是,NAT转换的目标也由报文的源地址变成了目的地址。针对服务器的地址转换,我们赋予了它一个形象的名字-NAT Server(服务器映射)

[FW]nat server global 1.1.1.1 inside 10.1.1.2

如果一台服务器同时存在多种协议和端口的服务项,按照上述配置会将服务器上所有服务项都发布到公网,这无疑会带来很大的安全风险。华为防火墙支持配置指定协议的NAT Server,只将服务器上特定的服务项对公网发布,从而避免服务项全发布带来的风险。例如,我们可以按如下方式配置,将服务器上80端口的服务项映射为9980端口供公网用户访问。

[FW]nat server protocol tep global 1.1.1.1 9980 inside 10.1.1.2 80

这里提到“转换”二字。没错,不论是正向还是反向Server-map表项,都仅能实现地址转换而已,并不能像ASPFServer-map表项一样打开一个可以绕过安全策略检查的通道。因此,无论是公网用户要访问私网服务器还是私网服务器要主动访问公网时,都需要配置相应的安全策略允许报文通过

多出口场景下的NAT Server

防火墙作为出口网关,双出口、双ISP接入公网时,NAT Server的配置通常需要一分为二,让一个私网服务器向两个ISP发布两个不同的公网地址供公网用户访问。一分为二的方法有两种。

方法一:将接入不同ISP的公网接口规划在不同的安全区域中,配置NAT Server时,带上zone参数,使同一个服务器向不同安全区域发布不同的公网地址

[FW]nat server zone isp1 protocol tcp global 1.1.1.20 9980 inside 172.16.0.2 80[FW]nat server zone isp2 protocol tcp global 2.2.2.20 9980 inside 172.16.0.2 80

所以我们推荐在网络规划的时候,就把防火墙与ISP1ISP2相连的两个接口分别加入到不同的安全区域,然后配置带有zone参数的NAT Server功能。如果这两个接口已经加入到同一个安全区域如Untrust并且无法调整,那么我们还有另一种配置方法。

方法二:配置NAT Server时带上no-reverse参数,使同一个服务器向外发布两个不同的公网地址。

[FW]nat server protocol tep global 1.1.1.20 9980 inside 172.16.0.2 80 no-reverse[FW]nat server protocol tep global 2.2.2.20 9980 inside 172.16.0.2 80 no-reverse

源进源出

我们向两个ISP中的公网用户告知公网地址时,要避免两个ISP中的公网用户使用非本ISP的公网地址访问私网服务器。即对于ISP1的用户,就让其使用防火墙发布给ISP1的公网地址来访问私网服务器;对于ISP2的用户,就让其使用防火墙发布给ISP2的公网地址来访问。

防火墙提供了源进源回(或者叫源进源出)功能,即请求报文从某条路径进入,响应报文依然沿着同样的路径返回,而不用查找路由表来确定出接口,保证了报文从同一个接口进出

源进源回功能在接口上配置,防火墙连接ISP1和ISP2的两个接口上都需要配置。

下面给出了在接口GE1/0/2上开启源进源回功能的配置命令,这里假设1SP1提供的下一跳地址是1.1.1.254。

[FW] interface GigabitEthernet 1/0/2[FW-GigabitEthernet1/0/2]redirect-reverse nexthop 1.1.1.254

双向NAT

如果需要同时改变报文的源地址和目的地址,就可以配置"NAT+NAT Server",我们称此类NAT技术为双向NAT,这里需要注意:双向NAT不是一个单独的功能,而是源NATNAT Server的组合。这里“组合”的含义是针对同一条流(例如公网用户访问私网服务器的报文),在其经过防火墙时同时转换报文的源地址和目的地址。大家千万不能理解为“防火墙上同时配置了源NAT和NAT Server就是双向NAT",这是不对的,因为源NAT和NAT Server可能是为不同流配置的。

实际上,源NAT还可以根据报文在防火墙上的流动方向进行分类,包括域间NAT域内NAT

域间NAT报文在两个不同的安全区域之间流动时对报文进行NAT转换,根据流动方向的不同,又可以分为以下两类。

NAT Inbound 报文由低安全级别的安全区域向高安全级别的安全区域方向流动时,对报文进行的转换。一般来说,这种情况是公网用户访问内部网络,不太常见。

NAT Outbound 报文由高安全级别的安全区域向低安全级别的安全区域方向流动时,对报文进行的转换。前面介绍的私网用户访问Internet的场景使用的都是NAT Outbound。

域内NAT报文在同一个安全区域之内流动时对报文进行NAT转换,一般来说,域内NAT都会和NAT Server配合使用,单独配置域内NAT的情况较少见。

当域间NAT或域内NAT和NAT Server一起配合使用时,就实现了双向NAT。当然,上述内容的一个大前提就是:合理设置安全区域的安全级别并规划网络-内网网络属于Trust区域(高安全级别),私网服务器属于DMZ区域(中安全级别),Internet属于Untrust区域(低安全级别)。

NAT Inbound+NAT Server

我们看一下报文的转换过程:公网用户访问私网服务器的报文到达防火墙时,目的地址(私网服务器的公网地址)经过NAT Server转换为私网地址,然后源地址经过NAT Inbound也转换为私网地址,且和私网服务器属于同一网段。这样报文的源地址和目的地址就同时进行了转换,即完成了双向NAT。当私网服务器的回应报文经过防火墙时,再次进行双向NAT转换,报文的源地址目的地址均转换为公网地址

域内NAT+NAT Server

如果希望提高内部网络的安全性,使私网服务器的回应报文也经过防火墙处理,就需要配置域内NAT,将私网用户访问私网服务器的报文的源地址进行转换。转换后源地址可以是公网地址也可以是私网地址,只要不和私网服务器的地址在同一网段即可,这样私网服务器的回应报文就会被发送到防火墙。

通过上面的介绍,双向NAT的原理和配置其实并不复杂,关键是要明确NAT转换的方向和转换后地址的作用,而不要纠结于转换后是公网地址还是私网地址。双向NAT并不是必配的功能,有时只配置源NAT或NAT Server就可以达到同样的效果,但是灵活应用双向NAT可以起到简化网络配置、方便网络管理的作用,也就达到了一加一大于二的效果。

NAT ALG

NAT技术只转换报文头中的地址信息,而有些协议如FTP,其报文载荷中也带有地址信息,如果防火墙不能正确处理这些信息,将会导致FTP不能正常工作。

可以看到,FTP客户端与FTP服务器建立控制连接后,FTP客户端向FTP服务器发送PORT命令报文,报文中包含FTP客户端的私网地址和端口,防火墙原封不动地将该报文转发至FTP服务器,FTP服务器收到报文后,便根据PORT息,向192.168.1.2发送数据连接。但是问题来了,192.168.1.2是一个私网地址,以这个地址为目的地址的报文根本就无法在公网上传输,所以FTP业务不能正常运行

为此,防火墙提供了NAT ALGApplication Level Gateway功能,即NAT的应用层网关。NAT ALG是一种穿越NAT设备的技术,防火墙在进行地址转换时,除了转换报文头中的IP地址信息,还转换报文载荷中携带的IP地址信息

开启NAT ALG功能后,防火墙将PORT命令报文中携带的IP地址信息转换成了公网地址,FTP服务器收到该报文后,就可以向1.1.1.1这个地址发起数据连接了。

FTP服务器能主动发起连接请求,但是防火墙是否允许该连接请求通过?问题到这里又回到了如何穿越防火墙上,是不是有种似曾相识的感觉,没错,解决方法还是用我们讲过的ASPF功能!开启ASPF功能后,防火墙会为FTP的数据连接开辟隐形通道,使其绕过安全策略检查,直接穿越防火墙。NAT场景下FTP业务仍然需要这个功能支持。实际上,在防火墙上NAT ALG和ASPF功能是由一条命令控制的,开启NAT ALG功能就等于同时开启了ASPF功能,因此开启NATALG会有如下Server-map表项生成。

NAT景下黑洞路由的作用

NAT地址池地址是202.1.10,防火墙与路由器相连接口的地址是202.1.1.1,掩码是30位,NAT地址池地址与防火墙公网接口地址不在同一网段。

正常情况下,私网PC访问公网Web服务器,生成会话表,源地址也进行了转换,一切都没有问题。

此时,如果公网上的一台PC,主动访问防火墙上的NAT地址池地址,如图所示,会发生什么情况呢?

我们在公网PC上执行ping 202.1.1.10命令,发现无法ping通

显然,这是正常的结果。因为NAT地址池只有在转换私网地址的时候才会用到,也就是说,私网PC必须先发起访问请求,防火墙收到该请求后才会为其转换地址,NAT地址池地址并不对外提供任何单独的服务。所以当公网PC主动访问NAT地址池地址时,报文无法穿过防火墙到达私网PC,结果肯定不通。

我们在防火墙上抓包查看一下情况

经过分析发现,报文的TTL值逐一递减,最后变为1。我们都知道,TTL是报文的生存时间,每经过一台设备的转发,TTL的值减1,当TTL的值为0时,就会被设备丢弃。这说明公网PC主动访问NAT地址池地址的报文,在防火墙和路由器之间相互转发,直到TTL变成0之后,被最后收到该报文的设备丢弃。

我们来梳理一下整个过程,如下所示。

(1)路由器收到公网PC访问NAT地址池地址的报文后,发现目的地址不是自己的直连网段,因此查找路由,发送到防火墙

(2)防火墙收到报文后,该报文不属于私网访问公网的回程报文,无法匹配到会话表,同时目的地址也不是自己的直连网段(防火墙没有意识到该报文的目的地址是自己的NAT地址池地址),只能根据缺省路由来转发。因为报文从同一接口入和出,相当于在同一个安全区域流动,缺省情况下也不受安全策略的控制,就这样报文又从GE1/02接口发送到路由器。

(3)路由器收到报文后,再次查找路由,还是发送至防火墙,如此反复。这个可怜的报文像皮球一样被两台设备踢来踢去,最终被残忍丢弃,憾别网络..

下面我们来看一下配置了黑洞路由的情况。首先在防火墙上配置一条目的地址是NAT地址池地址的黑洞路由,为了避免这条黑洞路由影响其他业务,我们将掩码配置成32位,精确匹配202.10这个地址。

[FW] ip route-static 202.1.1.10 32 NULL0

再次在接口上抓包

只抓到了一个ICMP报文,说明防火墙收到路由器发送过来的报文后,匹配到了黑洞路由,直接将报文丢弃。此时就不会在防火墙和路由器之间产生路由环路,即使防火墙收到再多的同类型报文,都会送到黑洞中,让报文一去不复返。并且,这条黑洞路由不会影响正常业务,私网PC还是可以正常访问公网Web服务器。

NAT Server场景下的黑洞路由

[FW]nat server protocol tcp 202.1.1.20 9980 inside 192.168.0.20 80

此时如果公网PC不按常理出牌,没有访问202.1.1.20的80端口,而是使用ping命令访问202.1.1.20,防火墙收到该报文后,既无法匹配Server-map表,也无法匹配会话表,就只能查找路由转发,从GE1/0/2接口送出去。而路由器收到报文后,还是要送到防火墙,这样依然会产生路由环路

所以,当防火墙上配置了特定协议和端口的NAT Server并且NAT Server的Global地址和公网接口地址不在同一网段时,必须配置黑洞路由避免在防火墙和路由器之间产生路由环路

同样,我们配置NAT Server时,也可以把公网接口地址配置成Global地址。此时,防火墙收到公网PC的报文后,如果能匹配上Server-map表,就转换目的地址,然后转发到私网;如果不能匹配上Server-map表,就会认为是访问自身的报文,由公网接口所属安全区域和Local安全区域之间的安全策略决定如何处理,不会产生路由环路,也不需要配置黑洞路由

总结

对于源NAT来说:

  • 如果NAT地址池地址与公网接口地址不在同一网段必须配置黑洞路由
  • 如果NAT地址池地址与公网接口地址在同一网段建议也配置黑洞路由

对于指定了特定协议和端口的NAT Server来说:

  • 如果NAT Server的Global地址与公网接口地址不在同一网段必须配置黑洞路由
  • 如果NAT Server的Global地址与公网接口地址在同一网段建议也配置黑洞路由

NAT地址复用专利技术

提到多对多、多对一的NAT(多个私网IP地址转换为多个或一个公网IP地址),就不能回避公网IP地址利用率的问题。“华为防火墙一个公网IP地址突破了65535端口限制,理论上能够无限制进行NAT转换”。

由于内部网络中不同用户的IP地址或使用的端口必不相同,仅使用“转换前源地址

+转换前源端口二元组信息在防火墙上即可标识一条数据流,来建立正向的NAT地址转换。而防火墙在收到回应报文进行反向的地址还原时,使用“转换后源地址+转换后源端口+目的地址+目的端口+协议五元组信息唯一标识一条数据流

因此,只要内部网络中不同用户访问的“目的地址+目的端口+协议”三元组中的任一参数不同时,即使将NAT地址池中同一公网IP地址的同一端口同时分配给内部网络中多个用户时,也不会产生冲突。端口可以反复利用,不受65535个数的限制

华为防火墙笔记-网络地址转化NAT相关推荐

  1. 华为防火墙笔记-出口选路

    文章整理自<华为防火墙技术漫谈> 出口选路总述 就近选路 就近选路是由缺省路由与明细路由配合完成的选路方式,这种方式比较简单,也是最常用的.通过缺省路由可以保证企业用户数据流量都能够匹配到 ...

  2. 华为防火墙笔记-报文处理流程

    文章整理自<华为防火墙技术漫谈> 全系列状态检测防火墙报文处理流程 状态检测与会话机制是华为防火墙对报文处理的关键环节,即防火墙收到报文后,何时.如何创建会话,命中会话表的报文如何被转发. ...

  3. 华为防火墙笔记-加密与证书

    文章整理自<华为防火墙技术漫谈> 公钥密码学 基本概念 加密和解密过程中用到的密钥是双方都知道的,即双方的"共享密钥".这种加密方式称为对称密码学,也叫作单钥密码学. ...

  4. 华为防火墙笔记-GRE

    文章整理自<华为防火墙技术漫谈> GRE(General Routing Encapsulation)即通用路由封装协议. 但凡一种网络封装技术,其基本的构成要素都可以分为三个部分:乘客协 ...

  5. 华为防火墙笔记-网络攻击的原理和防范

    文章整理自<华为防火墙技术漫谈> DoS攻击简介 Dos是Denial of Service的简称,即拒绝服务.造成Dos的攻击行为被称为Dos攻击,其目的是使计算机或网络无法正常提供服务 ...

  6. 华为防火墙:五种NAT类型以及配置NAT策略。

    NAT类型: 1. NAT NO-PAT .将源IP地址映射到公网IP地址上. .属于多对多的映射关系. .不会节约公网IP地址,但会保护内网IP地址. 2. NAPT . 将源IP地址和端口号映射到 ...

  7. 华为防火墙配置(防火墙NAT)

    目录 前言 一.防火墙NAT概述 1.防火墙NAT策略介绍 2.NAT策略分类 (1)NAT No-PAT (2)NAPT (3)Easy-IP (4)Smart NAT (5)三元组NAT 3.NA ...

  8. 华为防火墙NAT策略

    前言:NAT技术是用来解决当今IP地址资源枯竭的一种技术,同时也是IPv4到IPv6的过渡技术,绝大多数网络环境中在使用NAT技术 文章目录 一.理论 1.NAT分类 1)NAT NO-PAT 2)N ...

  9. 华为防火墙NAT策略原理+实验验证!

    文章目录 前言 一:华为防火墙的NAT分类 1.1:NAT NO-PAT 1.2:NAPT 1.3:出接口地址( Easy-IP) 1.4:NAT Server 1.5:Smart NAT 1.6:三 ...

  10. 华为防火墙NAT配置及简介

    华为防火墙NAT策略 一.NAT概述 NAT技术是用来解决当今IP地址资源枯竭的一种技术,同时也是IPv4到IPv6的过渡技术. 二.华为防火墙NAT分类 1.NAT No-PAT:类似于Cisco的 ...

最新文章

  1. 乐高机器人java程序代码_用JAVA编写一个乐高机器人躲避障碍物运动到目标点的程序....
  2. iphone桌面横屏设置在哪里_iPhone的实用攻略如此多,这4个你知道吗?
  3. 安全源于细节:云环境下如何保证应用安全
  4. C/C++从代码到可执行文件
  5. easyui-window 关闭事件,只要关闭窗口就会触发
  6. 2016. 增量元素之间的最大差值
  7. C/C++课程设计 新生入学管理系统(二)
  8. 雨尘SEO静态页面生成系统版本源码3秒钟可生成上千条单页面SEO必备神器
  9. SVN ---文件加锁,执行clean up命令
  10. Sql server 2008 R2 导出/导入数据报错之无法打开全局共享内存以与性能 DLL 通信
  11. 高级文本编辑器——Kate
  12. 专利学习笔记5:CPC客户端的安装方法
  13. openswan中DH算法说明
  14. AM335x TP驱动解析
  15. 不可不知的国际贸易术语
  16. 秦储承办 | 西部数博会暨第三届西安区块链产业发展论坛成功召开!
  17. 以太坊开发------Mist使用:合约及部署合约
  18. 第二次练车,练了一天倒库
  19. 富途客户端软件测试笔试and面试
  20. Nginx推流负载均衡配置

热门文章

  1. Matlab UIAxes中添加图例
  2. 淘宝关于用户行为的数据分析
  3. 为啥E进制计算机的效率最高?
  4. pcm系统设计及matlab仿真实现,DOC:25页毕业设计PCM系统设计及MATLAB仿真实现.doc文档优秀范文...
  5. 10 个含金量最高的 IT 认证
  6. RLC电阻电容电感基础知识——电阻篇
  7. Java基础教程——字符流
  8. 浅层复制和深层复制( implements Cloneable )
  9. eth0 eth0:1 eth0.1 的区别
  10. R语言中的rgl包的安装问题