在本文中,我们将研究企业和小型办公室/家庭办公室(SOHO)网络中一个非常流行且非常重要的部分:即网络地址转换(NAT)。
NAT对解决IPv4的主要问题大有帮助。专家清楚地看到,到1990年代中期,IPv4地址空间将完全被占用。此后,由于没有公共IP地址,互联网无法继续发展。这将大大减慢互联网的发展。
本文将该主题分为两个主要部分。第一部分解释了1990年代后期互联网革命对IPv4地址空间带来的挑战。第二部分介绍了NAT概念,并描述了NAT的几种变体如何工作。它还显示了端口地址转换 (PAT)如何节省IPv4地址空间。
IPv4地址可伸缩性的观点
Internet的原始设计要求每个组织都要求并接收一个或多个注册的分类IP网络号码。管理该程序的人员确保不重复使用任何IP网络。只要每个组织在其自己的注册网络号中仅使用IP地址,IP地址就永远不会重复,并且IP路由可以正常工作。
仅使用一个注册的网络号或几个注册的网络
号连接到Internet的情况下,运行良好一段时间。在1990年代初至中期,很明显,Internet增长如此之快,以至所有IP网络号都将在1990年代中期分配!人们担心将完全分配可用的网络,因此,新组织将无法连接到Internet。
NAT,专用寻址,CIDR
为了帮助解决该问题,提出了许多短期解决方案,但最终三个标准一起解决了该问题。其中两个标准紧密协作:网络地址转换(NAT)和专用寻址。这些功能一起使组织可以在内部使用未注册的IP网络号,并且仍然可以与Internet进行良好的通信。
第三种标准是无类域间路由 (CIDR),它允许ISP
通过为每个公司分配网络号的子集而不是网络范围的整个空间来减少IP地址的浪费。CIDR还可以允许ISP汇总路由,以便多个A,B或C类网络匹配单个路由,这有助于减小Internet路由表的大小。
无类域间路由(CIDR)
RFC 4632中定义的CIDR有两个主要目标。首先,CIDR定义了一种在全球范围内分配公共IP地址的方法,以允许路由聚合或路由汇总。这些路由摘要
大大减少了Internet路由器中路由表的大小。此策略依赖于全球IPv4地址分配策略,以及一些简单的数学运算,可将一条用于较小地址范围的路由替换为一条用于较大地址范围的路由。
其次,CIDR定义了允许Internet服务提供商(ISP)以较小的块而不是整个A,B或C类网络分配公共IP地址的规则。这使ISP可以选择分配特定的公共IPv4地址块,该块的大小应匹配并仅满足该客户的需求。
专用地址
在某些情况下,网络中的某些计算机永远不需要连接到Internet。这些计算机的IP地址可能使用重复的IP地址,与Internet中注册的IP地址相同。在设计此类网络的IP地址约定时,组织可以选择并使用他们想要的任何网络号,一切都会很好。
例如,您可以购买一些路由器,在办公室中连接它们,然后在网络1.0.0.0中配置IP地址,这样就可以了。在您使用的IP地址中,Internet空间中可能有一个或几个IP地址重复,但是如果您要做的只是测试实验室中的设备以及办公室的私有空间中的所有内容,会没事的。问题是这些设备中的任何一个都想连接到互联网等公共场所时。
当建立,将有没有互联网连接的专用网络,可以使用IP网络的数字称为私有网络,在定义RFC 1918,“地址分配的私有网络。” 该RFC定义了一组网络,这些网络将永远不会作为注册的公共网络号分配给任何组织。
您可以使用公共Internet上其他任何人都没有使用的范围内的号码,而不是使用其他人的注册网络号码。下表显示了RFC 1918定义的专用地址空间。
换句话说,任何组织都可以使用这些网络号。但是,
不允许任何组织使用Internet上的路由协议来通告这些网络。
您可能想知道为什么当地址是否重复时,为什么要打扰保留特殊的专用网络号。好吧,事实证明,只要使用网络地址转换(NAT),您就可以在网络中使用私有寻址,并同时连接到Internet 。本文的其余部分将检查并解释NAT。
网络地址转换(NAT)
NAT允许没有有效的,已注册的全局唯一IP地址的主机通过Internet与其他主机通信。主机可能正在使用专用地址或分配给另一个组织的地址。在这两种情况下,NAT都允许继续使用那些尚未支持Internet的地址,并且仍然允许通过Internet与主机进行通信。
NAT通过使用有效的注册IP地址来代表
Internet其余部分的专用地址来实现其目标。NAT功能将
每个IP数据包内的专用IP地址更改为公开注册的IP地址,如下图所示:
请注意,当
数据包离开私有组织时,执行NAT的路由器会更改数据包的源IP地址。执行NAT的路由器还会更改
每个转发回专用网络的数据包中的目标地址。(网络200.1.1.0是
上图中的注册网络)。
静态NAT
静态NAT的工作方式与上一节中显示的示例相同,但是IP地址之间是静态映射的。为了帮助您理解静态NAT的含义并解释几个关键术语,下图显示了一个类似的示例,其中包含更多详细信息。
首先,公司从ISP获得注册的IP地址,然后利用NAT更改私有IP地址并将其映射到公共IP地址。为此,NAT路由器从左向右更改数据包中的源IP地址。
在此示例中,NAT路由器将源地址(图中的“ SA”)从10.1.1.1更改为200.1.1.1。使用静态NAT,NAT路由器只需配置专用地址和代表其使用的注册地址之间的一对一映射即可。NAT路由器已静态配置了私有地址10.1.1.1和公共注册地址200.1.1.1之间的映射。
使用NAT术语,使用专用地址并因此需要NAT的企业网络是网络的“内部”部分。NAT功能的Internet端是网络的“外部”部分。需要NAT的主机(例如本示例中的10.1.1.1)具有其在网络内部使用的IP地址,并且需要一个IP地址以在外部网络中表示它。因此,由于主机本质上需要两个不同的地址来呈现自己,因此您需要两个术语。
大多数典型的NAT配置仅更改内部主机的IP地址。因此,
上图所示的当前NAT术语表示内部本地地址和相应的内部全局注册地址。
但是,外部主机IP地址也可以使用NAT进行更改。发生这种情况时,本地和外部全局外部术语分别表示用于表示内部网络和外部网络中该主机的IP地址。下表总结了术语和含义。
动态NAT
与静态NAT相比,动态NAT有一些相似之处和不同之处。与静态NAT一样,NAT路由器在内部本地地址和内部全局地址之间创建一对一映射,并在数据包退出和进入内部网络时更改其IP地址。但是,内部本地地址到内部全局地址的映射是动态发生的。
动态NAT建立了一个可能的内部全局地址池,并定义了匹配条件,
以确定应该使用NAT转换哪些内部本地IP地址。例如,在下图中,已经建立了五个内部全局IP地址的池:200.1.1.1至
200.1.1.5。NAT也已配置为转换任何遵循
10.1.1.x格式的内部本地地址。
图中的数字1、2、3和4表示以下事件序列:
1.主机10.1.1.1将其第一个数据包发送到170.1.1.1的服务器。
2.当数据包进入NAT路由器时,路由器会应用一些匹配逻辑来决定是否应该对数据包应用NAT。由于已将逻辑配置为匹配以10.1.1开头的源IP地址,因此路由器会在NAT表中为10.1.1.1添加一个条目作为内部本地地址。
3. NAT路由器需要从有效的内部全局地址池中分配IP地址。它选择第一个可用的地址(在这种情况下为200.1.1.1),并将其添加到NAT表中以完成输入。
4. NAT路由器转换源IP地址并转发数据包。
使用端口地址转换(PAT)重载NAT
一些网络需要其大多数IP主机都可以访问Internet。如果该网络使用专用IP地址,则NAT路由器需要大量的注册IP地址。使用静态NAT,对于每个需要Internet访问的专用IP主机,您都需要一个公共注册的IP地址,这完全无法实现减少该组织所需的公共IPv4地址数量的目标。
动态NAT在某种程度上减轻了该问题,因为网络中的每个主机几乎都不需要同时与Internet通信。但是,如果网络中很大一部分IP主机在该公司的正常工作时间内都需要Internet访问,则NAT仍然需要大量注册的IP地址,这同样无法减少IPv4地址的消耗。
简要地讲,端口地址转换的工作原理
NAT重载功能(也称为端口地址转换(PAT))解决了此问题。重载允许NAT通过仅使用几个公共IP地址来扩展以支持许多客户端。理解过载的工作原理的关键是回顾主机如何使用TCP和UDP端口。要了解原因,请首先考虑从三个不同的主机到Web服务器的三个独立的TCP连接的想法,如下图所示。
NAT充分利用了这一事实,从传输层的角度来看,服务器并不关心
它是分别与三个不同主机建立一个连接还是与一个主机
IP地址建立三个连接。端口地址转换(PAT)不仅转换地址,还可以在必要时更改第4层端口号。通过此更改,来自不同主机的许多TCP或UDP流看起来像来自一台主机的相同数量的流。
NAT路由器会为内部本地IP地址和端口号的每个唯一组合以及其到内部全局IP地址和与内部全局地址关联的唯一端口号的每个唯一组合保留NAT表条目。
由于端口号字段具有16位,因此NAT重载可以使用超过65,000个端口号,从而可以很好地扩展而无需许多注册IP地址。在许多情况下,NAT过载仅需要使用全局IP地址内部的一个IP。