IPv4网络地址转换(NAT)

概述

由于IPv4地址空间有限,所以目前的因特网面临着公网IP地址资源匮乏的困境,其次,路由表日益增大,路由效率下降。

网络地址转换(NAT, Network Address Translation)与VLSM和CIDR技术一样都是为了解决这些问题而诞生的。但它们实现的机制不一样,后两者是通过调整掩码部分来解决这个问题,而NAT技术是通过将内网地址转化为公网地址来实现的。

NAT服务运行在连接内外网之间的路由设备上,在内外通信时对数据报中的地址进行转换。

当前NAT技术的应用非常广泛,因为它可以节约紧缺的公网地址。

应用领域

NAT服务是工作在路由器或三层交换机甚至是防火墙上的,它主要应用于一下情形:

  1. 无足够公网IP地址

    当网络中并不是每个用户都具备合法的公网地址并要连接到英特网中时,在内外的边界路由器上配置NAT,让NAT为内部外部网络地址实现互相转换。

    当前绝大多数的路由器共享上网采用的即是这种原理。

  2. 重构网络IP地址

    当需要改变内部地址时,也可以使用NAT来实现,并节省许多工作量。如原本采用的C类网段,但用户数量超出其可提供的地址数时,按理说你需要更换到上一级网段以提供更多的地址。但是这样一来就使的你需要重新配置此前用户的IP地址。

    如果采用NAT可以让新增加的用户单独使用另一个网段的地址,然后通过NAT将新网段的地址映射到原网段中的一个地址即可,这种时候新网段整体就会被认为就旧网段的其中一个设备

    利用这种方法可以减少繁琐的操作,但确实会使网络管理难度提升,因为这时新网段的所有设备实际上就等于共享旧网段中的一个地址了。

  3. 实现简单的TCP负载均衡

    使用NAT可以把多个私网IP地址映射到一个公网IP地址,实现服务器的TCP均衡。

NAT地址基本转换原理

在私有网络中计算机是使用内部本地地址(Inside Local Addresses)来进行通信的,当需要和外部网络进行通行时,就需要为其配置内部全局地址(Inside Global Addresses)

总的来说,NAT就是内部本地地址到内部全局地址之间的转换过程。

当数据报从内部网络发往边界路由时,该数据报的源地址会是内部本地地址,目标地址是外部本地地址,这时边界路由就要相应地将源地址转换为内部全局地址及将目标地址转换为外部全局地址。反之亦然。其过程如下图所示:

NAT Translate

这一个过程是要依赖NAT中本地地址与全局地址的映射来实现的,所以需要事先配置。

NAT的类型

NAT路由器中虽然可以配置多种不同的地址转换,但总体来说也就是静态NAT动态NAT两种

静态NAT(Static NAT)

静态NAT把非公网注册IP地址一对一的映射到公网注册IP地址。这在网络设备需要以公网IP地址访问外部网络时特别有用。

这个转换可以是双向的,也可以是单方向的,甚至是反方向的。

下图是一个静态NAT示例:

Static NAT

动态NAT(Dynamic NAT)

动态NAT把一个非公网注册IP地址动态的映射到公网注册IP地址池中的一个地址。具体如何映射是依赖其配置的,但和静态NAT最大的不同的是动态的映射并非一对一的进行。

下图是一个动态NAT示例:

Dynamic NAT

上方的表即动态NAT需要使用的映射表。

重载/复用NAT(Overloading NAT)

这是动态NAT的一种特殊形式,它通过将IP和端口组合起来,把多个非公网注册IP地址映射到一个公网注册IP地址

这也就是通常说的端口地址转换(PAT, Port Address Translation)技术,通过该技术上千内网设备都可以仅通过一个公网IP地址访问因特网。

下图是一个重载NAT的示例:

Overloading NAT

可以看到,多个内部地址被转化为公网地址中对应的端口中。

重叠NAT(Overlapping NAT)

这是NAT的一种特殊形式,它既可以表现为静态NAT,也可以表现为动态NAT。当内部网络中使用的IP地址等同于公网注册IP地址时,边界路由将截获来自内部网络的数据报,并用可用的公网IP地址替换

这既可以通过静态NAT实现,也可以通过DNS或动态NAT实现。

这种应用看似多余,但实际上是很重要的,它有两大作用:

  1. 它可以隐藏内部服务器的真正地址,保护内部服务器的安全。因为对外而言,能看见的只有被转换后的地址。
  2. 它可以将内部已经配置好但会和公网地址冲突的地址转换为不会冲突的地址,这样不重新配置内部地址的前提下也不与外部网络冲突。

下图是一个重叠NAT的示例:

Overlapping NAT

名词解释

  1. 内部网络(Internal Network):一个边缘局域网。
  2. 外部网络(External Network):除本地网络外的所有网络。
  3. 本地地址(Local Address):本地地址即仅本地网络有效的地址,无法直接在外部网络使用的地址,不可路由。
  4. 内部本地地址(Inside Local Address):分配给内部网络主机的IP地址,由DHCP或手动分配。
  5. 外部本地地址(Outside Local Address):与内部本地地址性质一致,是外部网络主机对内部用户呈现的地址
  6. 全局地址(Global Address):它是与本地地址相对应的地址,是可路由的地址。
  7. 内部全局地址(Inside Global Address)内部主机对外部网络呈现的地址,和外部本地地址相对应。
  8. 外部全局地址(Outside Global Address):外部主机分配的公网注册IP地址,但也有可能是ISP分配的私网IP地址(由ISP进行NAT转换)

文中图片来自《深入理解计算机网络》

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值