NAT英文全称是“NetworkAddress Translation”,中文意思是“网络地址转换”,是一个IETF(InternetEngineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(InternetProtocol)地址出现在Internet上。顾名思义,是一种把内部私有网络地址(IP地址)翻译成合法外网IP地址的技术。网络规定了三段专有的地址,作为私有的内部组网使用,这三块私有地址本身是可路由的,只是公网上的路由器不会转发这三块私有地址的流量,只能在内网之间通信。
A类:10.0.0.0—10.255.255.255 10.0.0.0/8B类:172.16.0.0—172.31.255.255 172.16.0.0/12C类:192.168.0.0—192.168.255.255 192.168.0.0/16

静态NAT(StaticNAT)(一对一):
将内网私有IP地址转换为公有IP地址,IP地址对是一对一的,并且保持不变,由于该方式对外网ip资源严重浪费,在日常运维中使用较少,只要在某些特殊需求下才会使用。
动态地址NAT(PooledNAT)(多对多):将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定,随机的。所有被授权访问Internet的私有IP地址可随机转换为任何指定合法的IP地址。动态NAT是在路由器上配置一个外网IP地址池,当内部有计算机需要和外部通信时,就从地址池里动态的取出一个外网IP,并将他们的对应关系绑定到NAT表中,通信结束后,这个外网IP才被释放,可供其他内部IP地址转换使用。
网络地址端口转换NAPT(NetworkAddress Port Translation)(Port-LevelNAT)(多对一):改变外出数据包的源端口并进行端口转换,采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,可以最大限度地节约IP地址资源。同时,也可以隐藏网络内部的所有主机,有效避免来自Internet的攻击。因此,目前网络中应用最多的就是PAT规则。
这是最常用的NAT技术,也是IPv4能够维持到今天的最重要的原因之一,它提供了一种多对一的方式,对多个内网IP地址,边界路由可以给他们分配一个外网IP,利用这个外网IP的不同端口和外部进行通信。NAPT与动态NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。
NAPT是使用最普遍的一种转换方式,是主要的使用方式。它又包含两种转换方式:SNAT和DNAT。
SNAT:
源NAT(SourceNAT,SNAT):修改数据包的源地址。源NAT改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成。
DNAT
目的NAT(DestinationNAT,DNAT):修改数据包的目的地址。DNAT刚好与SNAT相反,它是改变第一个数据包的目的地地址。
当内部网络中的一台主机想传输数据到外部网络时,它先将数据包传输到NAT路由器上,路由器检查数据包的报头,获取该数据包的源IP信息,并从它的NAT映射表中找出与该IP匹配的转换条目,用所选用的外网IP来替换内部局部地址,并转发数据包。
当外部网络对内部主机进行应答时,数据包被送到NAT路由器上,路由器接收到目的地址为外网地址的数据包后,它将用该外网地址通过NAT映射表查找出内网地址,然后将数据包的目的地址替换成内部局部地址,并将数据包转发到内网主机
。

NAT工作原理示例图
目前某公司各省分公司均采用nat方式来实现分省公司与集团总部业务之间通信以及分省公司与外网之间的通信,以下将以某省分公司为例对nat配置进行详细解析,nat均配置在该省华为出口防火墙(两台为主备关系)上,该省分公司拓扑如下图所示:

需求一:该省172.17.0.11/12/13三台主机开通访问外网权限
针对此需求首先查看防火墙安全区域划分,从配置上可以看出主要分为local、trust、untrust、dmz四个安全区域,安全级别最高为local,最低为untrust,同样可以从配置上看出各安全域所包含的接口,配置如下图所示:

查看172.17.0.11/12/13路由表,确认所属域,通过接口可以看出三台主机均属于trust域,配置如下图所示:

同理通过配置可以看出三条运营商链路接口均属于untrust域,也是就是说所有的外网地址都属于untrust域,配置如下图所示:



建立外网IP池,使主机内网ip可以转换成对应外网ip来访问外网,标注部分第一个IP表示起始IP,第二个IP表示终止IP,两个IP一样则表示地址池只有一个IP,此配置类型为NAPT中的SNAT,即172.17.0.11/12/13通过x.x.x.x不同端口与外网进行通信,配置如下图所示:

输入nat-policy,进入nat规则配置视图进行配置,源域为trust,目的域为untrust,源地址为172.17.0.11/12/13,目的地址为所有(默认为所有),action为转换为address-group1,也就是x.x.x.x,也就是说将trust域的源地址172.17.0.11/12/13转换成x.x.x.x用于访问untrust域的所有地址(所有外网IP),配置如下图所示:

至此NAT配置已经完成,接下来建立安全策略,输入security-policy进入安全策略配置界面,允许源地址172.17.0.0/24访问所有外网IP,具体配置如下图所示:

所有配置完成后测试发现主机仍然不能访问外网,接下来需要进行故障排查,从主机长ping外网ip地址在防火墙会话表可以看到会话信息,证明NAT配置已经生效,并且进行路由追踪可以到达防火墙,故障点定位在防火墙,防火墙会话表配置如下图所示:

经排查发现防火墙存在三条优先级相同的默认路由,导致路由冲突,主机无法选路,故无法访问外网,默认路由配置如下:

针对此问题进行策略路由配置,配置源地址172.17.0.11/12/13,目的地址为所有,下一跳地址为x.x.x.x,也就是说使172.17.0.11/12/13三台主机通过电信链路访问外网(x.x.x.x为电信IP),至此主机可成功访问外网,配置完成,策略路由配置如下图所示:

需求二:172.17.0.11的443端口映射到外网,将172.17.0.13主机IP映射到外网
首先进行172.17.0.11主机的nat配置,此配置为端口映射,地址转换协议为tcp协议,映射的外网IP为:x.x.x.x,配置如下图所示:
然后进行172.17.0.13主机NAT配置,此配置为IP映射,也就是说将内网IP:172.17.0.13彻底转换为外网IP:x.x.x.x,no-reverse表示内网IP可以进行复用,可继续映射成其他外网IP,配置如下图所示:

配置安全策略,原理同需求一一样,配置如下图所示:

需求三:使172.17.0.11/12/13可访问x.x.x.x(172.17.0.13映射后的外网IP)、x.x.x.x:x(172.17.0.11:443映射后的外网IP端口)
由于需求三源地址与目的地址同属于trust域,而需求一源地址为trust域,目的地址为untrust域,所以需求一的配置对需求三无效,即便需求三已经映射到外网也无法访问,需求三需要在需求一配置基础上增加nat规则配置,配置如下图所示:

以上是今天NAT讲解及案例配置介绍,我们下次再见。




