IPv4扩充之NAT技术

网络 通信技术
在我们企业在对外发布应用系统或网站系统及用户办公上互联网时,针对公网IP地址不够用的问题我们不知道如何解决,因为IPv4的数量只有2的32次方,大致42亿左右,但这完全不能满足我们用户全公网IP的使用问题,因此NAT的出现正好弥补了公网IP不够的问题,也间接的隐藏了企业内网,保护了内部网络,那具体NAT是什么原理呢?

在我们企业在对外发布应用系统或网站系统及用户办公上互联网时,针对公网IP地址不够用的问题我们不知道如何解决,因为IPv4的数量只有2的32次方,大致42亿左右,但这完全不能满足我们用户全公网IP的使用问题,因此NAT的出现正好弥补了公网IP不够的问题,也间接的隐藏了企业内网,保护了内部网络,那具体NAT是什么原理呢?我们下面将简单介绍一下。

一.NAT技术

1.NAT:全名“Network Address Translation”,网络地址转换,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术,如下图所示。因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题。

 

2.私有IP地址:也叫内部地址,属于非注册地址,专门给企业或组织机构内部使用。因特网分配编号委员会(IANA)保留了3块IP地址做为私有IP地址:

10.0.0.0——10.255.255.255(10.0.0.0/8段)

172.16.0.0——172.16.255.255(172.16.0.0/16段)

192.168.0.0——192.168.255.255(192.168.0.0/16段)

以上三块私有地址,我们企业内部就可以合理规划使用。

3.公有IP地址:也叫全局地址,是指合法的IP地址,它是在网络运营商处登记备案分配的IP地址,对外代表一个或多个内部局部地址,是全球统一可寻的地址。

4.地址池:地址池是有一些外部地址(全球唯一的IP地址)组合而成,我们称这样的一个地址集合为地址池。在内部网络的数据包通过地址转换到达外部网络时,将会在地址池中选择某个IP地址作为数据包的源IP地址,这样可以有效的利用用户的外部地址,提高访问外部网络的能力。

直白来讲,地址池就是公网ip的组合,例如65.34.23.0/26等等。

5.NAT的分类:NAT有三种类型:静态NAT(Static NAT)、动态地址NAT(Pooled NAT)、网络地址端口转换NAPT(Port-Level NAT)。

 

二.NAT之简介

1.NAT源转换及源端口NAT:

内部地址访问互联网,互联网无法对私有IP进行回包的问题,导致无法完成网络通信,NAT是将内部地址转换为公司、组织机构或家庭的公网IP与外部通信的技术手段,具体如下图:

 

以简单的家庭网络为例(图有点丑见谅)

上图说明:

内网:192.168.1.0/24

网关:192.168.1.1

外网:PPPOE登录验证通过后,分配的地址为214.86.234.58,某互联网网站服务器地址为219.86.24.45。

源NAT,内部终端主机在访问219.86.24.45服务器时,

源地址为:192.168.1.100,源端口随机

目的地址为:219.86.234.45,目的端口80

目的地址在收到192.168.1.100的访问请求以后给源地址回包,结果找不到私网路由,因此回不来。

源NAT技术的做法是,在达到网关后,将源地址替换为WAN口地址,路由器建立会话表,数据包变为214.86.234.58 ,源端口为随机端口,目的地址为219.86.24.45,目的端口为80,然后在服务器收到此数据包后,回包时,将源为219.86.24.45,源端口80,目的地址为214.86.234.58,端口为之前的随机端口,回给互联网,WAN收到数据包之后,查看会话表:

192.168.1.100---->214.86.24.45 <--------> 214.86.234.58----->219.86.24.45。因此根据此对应关系将服务器返回的数据包回给192.168.1.100.因此内网机器就能够与外部通信。

但此时有一个问题,内网机器那么多,如果多个机器访问同一个Web网站将会怎么样呢?

因此PNAT,端口转换技术将从端口区别内网机器的访问会话记录,如下图所示,

 

NAT会话表将内网地址与外网ip的映射动态记录下来(会话时间过期,将会被清除),然后根据端口来为内网机器回复来自互联网服务的回包。

 

通过这样的会话表,利用一个公网IP的不同端口来解决企业几百人的上网问题,有个问题会在此出现,假如人数过多65535个端口利用光了,导致某部分人上不了网怎么办?但一般不会出现这样的问题,如果出现,那就利用2个公网ip进行源端口的转换,不行就3个,4个,直到够用为止,一般2-3个绝对够用了。

静态NAT,源转换的话就没必要了,因为一对一的映射根本解决不了内部终端上网的问题,主要应用在目的映射,或目的端口映射中,下面我们将简单叙述一下目的NAT,及目的端口NAT。

2.NAT目的转换及目的端口NAT:

目的NAT更多的是适用于公司或企业内部对外提供服务的情况,静态NAT可以为公司提供的多种服务进行映射,从而将内网服务通过目的映射的方式提供给互联网用户。假如IP地址不多的话,可以利用端口进行服务的区分。

 

互联网用户来访问我们提供的公网ip服务,我们将公网ip转换为内网实际提供服务的服务器IP,这就是目的NAT,当然分为目的NAT和目的端口NAT。

例如:124.17.26.252 50005 ------访问------->公网ip36.78.12.3:80端口,我们将公网ip36.78.12.3:80转换为内网ip 192.168.20.100:80,实际提供的真实服务的ip为内网机器的ip。

为什么要用目的端口NAT,而不用目的NAT呢?

原因一:减少攻击面,隐藏并保护内网。因为开放10个端口与开放100个端口的安全性是不一样的,如果做目的NAT,那么36.78.12.3这个ip即为192.168.20.100这台服务器,你们的服务操作系统有多少漏洞的补丁没打,这个我就不说了,哈哈!

原因二:提高外网IP利用率。

例如:假如你做了一个目的NAT映射,36.78.12.3 ---------------192.168.10.100 ,那么互联网用户访问36.78.12.3,就相当于访问了192.168.10.100的内网服务器,而且,操作系统漏洞那么多,别人一扫描,暴露了很多端口,然后探测系统版本,中间件版本,数据库版本,如此等等。当然,有人也许会说,那你在防火墙上做访问控制不就好了,这样做不就增加了工作量,增加了防火墙的负担了嘛,因此,目的端口NAT,是省事省心的安全简便的做法。而且,当运营商分配的IP地址较少时,你的内网对外发布的服务较多时,可以使用一个公网ip的不通端口来NAT不用的服务,如下所示:

 

如此等等。但为了服务安全,建议是服务尽量分离,因为某项服务的故障可能会影响其他服务,因此较为分散的服务是一种比较好的方式。

3.双向NAT

原理图如下:

 

Client 1 : A 202.1.1.2 --------------------> B server 1.1.1.1

转换为

C:172.16.1.100 --------------> D server 172.16.1.2

这种双向转换,是将源ip及目的ip全部替换掉

源 202.1.1.2-------------访问---------> 目的 1.1.1.1

转换为

源 172.16.1.100 -------访问---------> 目的 172.16.1.2

表面上A---访问--->B ,实际上C----访问----->D

在服务提供方做,隐藏内部网络,只对外提供1.1.1.1即可,有人也许会问,那做目的NAT不就可以了嘛,为什么还要把源地址都要转换掉,我想可能是内部网络机密性较高,或者没有做目的NAT而是内部应用服务,不允许任意访问,而只允许172.16.1.100或者被转换的源地址访问吧。(此处感觉有点像VPN,从外部跳到内网访问内部服务器的感觉)。

4.总结:

NAT技术不可否认是在ipv4地址资源的短缺时候起到了缓解作用;在减少用户申请ISP服务的花费和提供比较完善的负载平衡功能等方面带来了不少好处。但是在ipv4地址在以后几年将会枯竭,NAT技术不能改变ip地址空间不足的本质。然而在安全机制上也潜在着威胁,在配置和管理上也是一个挑战。如果要从根本上解决ip地址资源的问题,ipv6才是最根本之路。在ipv4转换到ipv6的过程中,NAT技术确实是一个不错的选择,相对其他的方案优势也非常明显。

 

责任编辑:武晓燕 来源: 蘑菇安全小组
相关推荐

2010-10-11 09:20:17

2010-05-27 14:45:55

移动IPv6技术

2010-07-01 15:52:30

2010-06-01 16:50:23

2022-02-15 14:12:46

IPv4IPv6过渡技术

2010-06-01 15:01:39

IPv4向IPv6过渡

2010-07-21 21:26:11

2010-05-26 17:50:40

IPv4与IPv6协议转换

2010-06-10 10:07:22

IPv4IPv6NAT

2011-08-22 10:03:43

2012-08-16 13:21:09

IPv6专区

2018-12-20 15:25:29

P4NAT64UCloud

2019-09-23 11:03:55

IPv6IPv4网络

2018-08-08 15:23:10

IPv4IPv6网络

2012-05-21 09:57:13

IPv6

2010-06-01 15:03:25

IPv6和IPv4网络

2010-12-30 12:14:40

2013-07-24 09:56:48

IPv4IPv6

2020-05-12 09:01:30

IPv6IPv4网络协议

2018-11-23 09:11:18

IPV4IPV6头部
点赞
收藏

51CTO技术栈公众号