网络基础知识笔记08:NAT网络地址转换(上)

网络基础知识笔记08 NAT网络地址转换

   随着Internet的发展和网络应用的增多,IPv4地址枯竭已经成为制约网络发展的瓶颈。尽管IPv6可以从根本上解决IPv4地址空间不足的问题,但目前众多的网络设备和网络应用仍是基于IPv4的,因此在IPv6广泛应用之前,一些过渡技术的使用是解决这个问题的主要技术手段。

   网络地址转换技术NAT(Network Address Translation)主要用于实现位于内部网络的主机访问外部网络的功能。当局域网内的主机需要访问外部网络时,通过NAT技术可以将其私网地址转换为公网地址,并且多个私网用户可以共用一个公网地址,这样既可保证网络互通,又节省了公网地址。

  本笔记主要介绍网络地址转换技术的工作原理和基本配置。分为上下部分,上部分先探讨NAT的工作原理,以及多种不同的实现方式:静态NAT,动态NAT,网络地址端口转换NAPT,Easy IP以及NAT服务器。

 

  NAT应用场景

  NAT一般部署在连接内网和外网的网关设备上

   

  随着网络设备的数量不断增长,对IPv4地址的需求也不断增加,导致可用IPv4地址空间逐渐耗尽。要提出解决IPv4地址枯竭问题的权宜之计,就是分配可重复使用的各类私网地址段给企业内部或家庭使用。但是在不采用其他技术或设备的情况下,私有地址不能在公网中路由,即私网主机不能与公网通信,也不能通过公网与另外一个私网通信。

  NAT是将IP数据报报头中的私有IP地址转换为另一个公有IP地址的过程,主要用于实现内部网络(私有IP地址)访问外部网络(公有IP地址)的功能,一般部署在连接内网和外网的网关设备上。当网关设备收到的报文源地址为私网地址、目的地址为公网地址时,NAT可以将源私网地址转换成一个公网地址。这样公网目的地就能够收到报文,并做出响应。

  此外,网关上还会创建一个NAT映射表,以便判断从公网收到的报文应该发往的私网目的地址

 

 

  NAT实现方式

  为了适用不同的使用场景和需求,NAT提供了多种不同的实现方式。其中主要分为一对一,多对多以及多对一的映射关系。

 

  (1)静态NAT

  静态NAT实现了私有地址和公有地址的一对一映射一个公网IP只会分配给唯一且固定的内网主机。

   

  静态NAT实现了私有地址和公有地址的一对一映射。如果希望一台主机优先使用某个关联地址,或者想要外部网络使用一个指定的公网地址访问内部服务器时,可以使用静态NAT。

   

  上图示例中,源地址为192.168.1.1的报文需要发往公网地址100.1.1.1。在网关RTA上配置了一个私网地址192.168.1.1到公网地址200.10.10.1的映射。其访问外网的步骤如下:

  Step 1:当网关RTA收到主机A发送的数据包后,会先执行静态地址转换将报文中的源地址192.168.1.1转换为公网地址200.10.10.1,然后转发报文到目的设备。

  Step 2:目的设备接收报文并处理。在目的设备看来,该报文就是由200.10.10.1这个公网地址发送过来的。按照协议规则,其回复的报文目的地址是200.10.10.1。

  Step 3:当网关RTA收到回复报文后,再次执行静态地址转换,将200.10.10.1转换成192.168.1.1,然后转发报文到主机A。

  和主机A在同一个网络中其他主机,如主机B,访问公网的过程也需要网关RTA做静态NAT转换。

 

  Tips:但是在大型网络中,这种一对一的IP地址映射关系无法缓解公用地址短缺的问题

 

 

  (2)动态NAT

  动态NAT基于地址池来实现私有地址和公有地址的转换,为私网地址和公网地址的临时映射

   

  上图示例中,当内部主机A和主机B需要与公网中的目的主机100.1.1.1通信时:

  Step 1:网关RTA会从配置的公网地址池中选择一个未使用的公网地址与之做映射:,每台主机都会分配到地址池中的一个唯一地址。

  Step 2:当不需要此连接时,对应的地址映射将会被删除,公网地址也会被恢复到地址池中待用。当网关收到回复报文后,会根据之前的映射再次进行转换之后转发给对应主机。

  Tips:动态NAT地址池中的地址用尽以后,只能等待被占用的公用IP被释放后,其他主机才能使用它来访问公网。

 

 

  (3)网络地址端口转换NAPT

  网络地址端口转换NAPT允许多个内部地址映射到同一个公有地址的不同端口。形成多对一映射关系。

   

  NAPT其实是NAT的基础上进行的拓展。人们发现虽然使用了NAT的确能一定程度上缓解IP地址紧缺的问题,但有没有办法可以更大限度的利用地址池里面的IP地址呢?于是,就有人提出了将这些地址的端口号也利用上。这样在地址池中,能容纳转换成私网地址的公网地址数量也就变得更多了。

 

  上图示例中,网关RTA收到一个私网主机发送的报文,源IP地址是192.168.1.1,源端口号是1025,目的IP地址是100.1.1.1,目的端口是80。其通过NAPT访问外网的步骤如下:

  Step 1:网关RTA会从配置的公网地址池中选择一个空闲的公网IP地址和端口号,并建立相应的NAPT表项。这些NAPT表项指定了报文的私网IP地址和端口号与公网IP地址和端口号的映射关系

  Step 2:网关RTA根据表项指定的映射关系对私网地址进行公网地址的转换。如在示例中,网关RTA将报文的源IP地址192.168.1.1和端口号1025转换成公网地址200.10.10.1和端口号2843,并转发报文到公网。

  Step 3当网关RTA收到回复报文后,会根据之前的映射表再次进行转换之后转发给主机A。主机B同理。

 

  Tips:网络上也有将NAPT称为PAT(端口地址转换)的,两者的含义相同,叫法不同而已。

 

 

  (4)Easy IP

  Easy IP允许将多个内部地址映射到网关出接口IP地址的不同端口上。

   

  Easy IP适用于小规模局域网中的主机访问Internet的场景。小规模局域网通常部署在小型的网吧或者办公室中,这些地方内部主机不多,出接口可以通过拨号方式获取一个临时公网IP地址。Easy IP可以实现内部主机使用这个临时公网IP地址访问Internet

 

  本示例说明了Easy IP的实现过程:

  Step 1:网关RTA收到一个主机A访问公网的请求报文,报文的源IP地址是192.168.1.1,源端口号是1025。RTA会建立Easy IP表项,这些表项指定了源IP地址和端口号与出接口的公网IP地址和端口号的映射关系

  Step 2:根据匹配的Easy IP表项,将报文的源IP地址和端口号转换成出接口IP地址和端口号,并转发报文到公网。如本例中,报文的源IP地址192.168.1.1和端口号1025,转换成200.10.10.10以及相应的端口号是2843。

  Step 3:路由器收到回复报文后,会根据报文的目的IP地址和端口号,查询Easy IP表项。路由器根据匹配的Easy IP表项,将报文的目的IP地址和端口号转换成私网主机的IP地址和端口号,并转发报文到主机。

 

  TipsEasy IP可以看做轻量级的NAPT。与使用映射地址池的NAPT不同,Easy IP只使用自己连接外网的出接口作为公网的映射地址。所以适用于中小型网络且主机数量不多的场景。

 

 

  (5)NAT服务器

  通过配置NAT服务器,可以使外网用户访问内网服务器

   

  NAT在使内网用户访问公网的同时,也屏蔽了公网用户访问私网主机的需求。当一个私网需要向公网用户提供Web和SFTP服务时,私网中的服务器必须随时可供公网用户访问。

  NAT服务器可以实现这个需求,但是需要配置服务器私网IP地址和端口号转换为公网IP地址和端口号并发布出去。路由器在收到一个公网主机的请求报文后,根据报文的目的IP地址和端口号查询地址转换表项。路由器根据匹配的地址转换表项,将报文的目的IP地址和端口号转换成私网IP地址和端口号,并转发报文到私网中的服务器。

 

  如上图示例中,有一台公网的主机C需要访问私网服务器,发送报文的目的IP地址是200.10.10.1,目的端口号是80。

  Step 1:RTA收到此报文后会查找地址转换表项,并将目的IP地址转换成192.168.1.1,目的端口号保持不变

  Step 2:位于私网的服务器收到报文后会进行响应,RTA收到私网服务器发来的响应报文后,根据报文的源IP地址192.168.1.1和端口号80查询地址转换表项。

  Step 3路由器根据匹配的地址转换表项,将报文的源IP地址和端口号转换成公网IP地址200.10.10.1和端口号80,并转发报文到目的公网主机。

 

  关于NAT各种实现的配置方法将会在笔记的下部分给出。

posted @ 2021-04-30 00:21  若水一瓢  阅读(695)  评论(0编辑  收藏  举报