不要被神话的营销手段蒙蔽双眼,不要IPv4被过度神话

针对目前很多filecoin厂商提倡的NAT穿透,小编做个科普,希望大家擦亮眼睛,不要被过度的神话营销手段蒙蔽了双眼。

1. IPv4协议和NAT的由来

今天,无数快乐的网民正在享受互联网带来的乐趣。他们浏览新闻、搜索信息、下载软件、结交新朋友、分享信息,甚至足不出户即可获得所需的一切。企业利用互联网发布信息,传递材料和订单,提供技术支持,完成日常办公工作。然而,互联网在为亿万用户带来便利的同时,也面临着一个致命的问题:构建这个无所不能的互联网的基础 IPv4 协议已经无法提供新的网络地址。

2011 年 2 月 3 日,中国农历新年,IANA 宣布 IPv4 地址空间的最后五个地址块已分配给五个下属区域委员会。2011年4月15日,亚太地区委员会APNIC宣布,除个别保留地址外,该地区所有IPv4地址基本用尽。一时间,IPv4地址作为濒危资源的价值暴涨,各大互联网公司斥巨资收购剩余的闲置地址。事实上,IPv4地址不足的问题并不是一个新问题。早在20年前,IPv4地址即将枯竭的问题就已经摆在互联网先驱们的面前。这让我们想知道是什么技术将这场危机推迟了 20 年。

为了找到答案,让我们简要回顾一下 IPv4 协议。

IPv4是Internet Protocol Version 4 – Internet Protocol Version 4的缩写。IPv4定义了一个跨异构网络互连的超级网络,它为每个Internet节点分配一个全球唯一的IP地址。如果我们把互联网比作一个邮政系统,那么IP地址的作用就相当于一个完整的地址,包括一个城市、一个街区和一个门牌号码。IPv4 使用 32 位整数来表示地址,地址范围最大为 232,约为 43 亿。从IP创始期可以上网的设备来看,这样的空间已经非常大了,短时间内很难用完。然而,现实远远超出人们的想象。在接下来的几十年里,计算机网络迅速发展,

更糟糕的是,为了路由和管理的方便,43亿地址空间根据不同的前缀长度分为A、B、C、D类地址网络和保留地址。其中,A类网络地址有127个段,每个段包含约1678万个主机地址。B类网络地址16384个段,每个段包含65536个主机地址。

图1 IPv4网络地址划分

IANA 将 A 类网络地址分配给非常大的企业/组织,一次分配一个网段。一次将 B 类网络地址分配给中型企业或教育机构。这样的分配策略会造成IP地址的严重浪费。许多分配的地址实际上并没有被使用,并且地址很快被消耗掉。如此之多,以至于在 1990 年代初期,网络专家意识到,如果付出如此巨大的努力,IPv4 地址很快就会耗尽。因此,人们开始考虑IPv4的替代方案,同时采取了一系列措施来减缓IPv4地址的消耗。正是在这样的背景下,本期的主角登场,即网络地址转换——NAT。

NAT 是一项了不起的技术,其神奇之处在于它几乎使 IPv4 起死回生。在 IPv4 被认为即将结束其历史使命近 20 年后,人们几乎忘记了 IPv4 的地址空间即将枯竭的事实——在技术快速变革的时代,20 年可以说是一段漫长的历史。毋庸置疑,NAT创建后,网络终端数量呈现加速上升趋势,IP地址需求急剧增加。这显示了NAT技术的成功及其深远的影响。

它之所以神奇,也是因为NAT给IP网络模型带来了深远的影响,它的存在在网络中无处不在。根据最近的一份研究报告,70% 的 P2P 用户位于 NAT 网关内。因为 P2P 主要在最终用户 PC 上运行,所以这个数字意味着大多数 PC 通过 NAT 网关连接到 Internet。如果加上2G和3G连接的智能手机等移动终端,NAT网关后面的用户远远超过这个比例。

然而,当我们追根溯源时,却发现了一个很奇怪的事实:NAT这个意义重大的技术,却没有公认的发明者。第一版 NAT 的 RFC 的作者简单地总结了已被广泛采用的技术。

2. NAT 的工作模式和特点

2.1 NAT 的概念模型

NAT的名字很准确,网络地址转换就是替换IP包头中的地址信息。NAT 通常部署在组织的网络出口位置,通过将内部网络 IP 地址替换为出口 IP 地址来提供公共网络可达性和上层协议连接。那么,什么是内网IP地址呢?

RFC1918 规定了三个保留地址段:10.0.0.0-10.255.255.255;172.@ >16.0.0-172.31.255.255;192.168.0.@ >0-192.168.255.255。这三个范围分别位于 A、B、C 类地址段中,不分配给特定用户,由 IANA 保留为私有地址。这些地址可以在任何组织或企业内使用。与其他 Internet 地址的不同之处在于它们只能在内部使用,不能用作全局路由地址。也就是说,在组织的管理范围之外,这些地址不再有意义,无论是作为源地址还是目的地址。

对于需要 Internet 访问但内部使用私有地址的网络,应在组织的出口部署 NAT 网关。当数据包离开私网进入Internet时,将源IP替换为公网地址,通常是出口设备的接口。地址。外部访问请求到达目标后,似乎是由组织的出口设备发起的,因此被请求的服务器可以将响应从 Internet 发送回出口网关。然后,出口网关将目标地址替换为专用网络的源主机地址,并在内部将其发回。这样,私网主机到公网服务器的请求和响应都是在通信两端不知情的情况下完成的。

2.2@>

图2 NAT转换过程示意图

虽然实际过程远比这复杂,但上面的描述总结了 NAT 处理数据包的几个关键特性:

1. 网络分为私网和公网两部分。NAT网关设置在私网到公网的路由出口。双向流量必须经过NAT网关;2. 网络访问只能先由私网侧发起,公网不能主动访问私网主机;2.5@> NAT网关完成两次地址转换或两个访问方向的转换,出方向替换源信息,入方向目标信息。替换; 2.6@> NAT 网关的存在对通信双方是透明的;5. 为了实现双向翻译的功能,

随着后面对 NAT 的深入描述,读者会发现这些特点是分明的,但不是绝对的。第二个特性打破了IP协议架构中所有节点的对等状态。这是NAT最大的缺点,它给点对点通信带来了很多问题。当然,相应的克服手段也应运而生。其实第四点是NAT努力实现的,但是很多情况下NAT并没有做到,因为除了IP头之外,上层通信协议内部往往会携带IP地址信息。这些我们稍后解释。

2.2 一对一 NAT

如果内部主机只占用一个公网IP,这种方式称为一对一模型。这样就不需要对上层协议进行转换了,因为一个公网IP只能对应一个内部主机。显然,这种方法节省公网IP并没有多大意义,主要是为了实现一些特殊的组网需求。例如,用户想要隐藏内部主机的真实IP,或者实现两个重叠IP地址之间的通信。

2.3 一对多 NAT

NAT最典型的应用场景如图2所示。在一个组织网络中,在出口部署一个NAT网关,所有对公网的访问都表现为一台主机。这称为一对多模型。这样,出口设备只占用一个互联网服务提供商分配的公网IP地址。面对私网中的大量主机,如果NAT只进行简单的IP地址替换,就会出现一个问题:当有多个内部主机访问同一个服务器时,返回的信息不足以区分响应应该转发到哪个内部主机。这时,NAT设备需要根据传输层信息或者其他上层协议来区分不同的会话,并且可能需要转换上层协议的标识符,例如 TCP 或 UDP 端口号。这样,NAT网关就可以将不同的内部连接访问映射到同一个公网IP的不同传输层端口,从而实现公网IP的复用和解复用。这种方法也被称为端口转换PAT、NAPT或IP伪装,但由于它是最典型的应用模式,所以更常被称为NAT。

2.4 按NAT端口映射方式分类

在一对多模型中,可以根据端口转换的工作方式进行进一步的划分。为了描述方便,下面将IP和端口标记为(nAddr:nPort),其中n代表主机或NAT网关的不同角色。

图3 按端口转换映射分类

全锥 NAT

它的特点是:一旦内部主机端口对(iAddr:iPort)被NAT网关映射到(eAddr:ePort),所有后续的(iAddr:iPort)数据包都会被转换为(eAddr:ePort);任何外部主机发送到 (eAddr:ePort) 的数据包都将被转换并发送到 (iAddr:iPort)。

限制锥NAT

它的特点是:一旦内部主机端口对(iAddr:iPort)映射到(eAddr:ePort),所有后续的(iAddr:iPort)数据包都将转换为(eAddr:ePort);只有 (iAddr:iPort) 到 (iAddr:iPort) 特定的外部主机 hAddr 发送了数据,主机 hAddr 从任何端口发送到 (eAddr:ePort) 的数据包都会被转发到 (iAddr:iPort)。

端口限制锥 NAT

它的特点是:一旦内部主机端口对(iAddr:iPort)映射到(eAddr:ePort),所有后续的(iAddr:iPort)数据包都将转换为(eAddr:ePort);仅 (iAddr:iPort) 到 (iAddr:iPort) 如果特定的外部主机端口对 (hAddr:hPort) 已发送数据,则 (hAddr:hPort) 发送到 (eAddr:ePort) 的数据包将转发到 (iAddr:iPort) )。

对称 NAT

其特点是:NAT网关会将同一报文作为内部主机“地址端口对”和外部主机“地址端口对”作为连接,在网关上创建公网“地址端口对”映射进行转换, only 接收报文的外部主机只能通过从对应端口对发送响应报文进行转换。即使内部主机使用以前使用的地址-端口对连接到不同的外部主机(或端口),NAT 网关也会建立新的映射关系。

事实上,这些术语的引入是很多混乱的根源。现实中的许多 NAT 设备是通过将这些翻译方法混合在一起工作的,而不是只使用一种,因此这些术语仅适用于描述一种操作模式,而不是一种设备。例如,很多NAT设备内部传出连接使用对称NAT,同时支持静态端口映射,可以看成是全锥NAT。在某些情况下,一个NAT设备的公网地址和端口可以同时映射到多台内部服务器,实现负载分担。例如,一个对外提供WEB服务器的站点,可能有数百台服务器提供HTTP服务。但在外部,它表现为一个或几个 IP 地址。

2.5@> NAT 限制和解决方案

2.5@>1 IP端到端服务模型

IP协议的一个重要贡献是使世界平等。理论上,每个拥有IP地址的站点在协议层面都有相当大的获取和提供服务的能力,不同的IP地址没有区别。众所周知的服务端和客户端其实是在应用协议层区分角色的,但是网络层和传输层没有区别。具有 IP 地址的主机既可以是客户端,也可以是服务器,在大多数情况下,既可以是客户端,也可以是服务器。End-to-end peering 看似司空见惯的事情,但意义却非同一般。然而,在现有技术中,多种协议体系下的网络限制了终端的能力。正是IP的开放性使得TCP/IP协议组能够提供丰富的功能和广阔的应用实现平台。因为所有IP主机都可以表现为服务器,通信设计可以更加灵活。使用 UNIX/LINUX 的系统充分利用了这一特性,使任何主机都可以建立自己的服务,如 HTTP、SMTP、POP3、DNS、DHCP 等。同时,许多应用程序也结合了客户端和服务器的角色来完成功能。例如,在一个VoIP应用中,当客户端将自己的IP地址和端口信息登录到注册服务器时,主机就是客户端;当有呼叫到来时,呼叫处理服务器向客户端发送呼叫请求时,客户端实际上是在服务器上工作的。模式。语音媒体流通道建立后,通信双向发送语音数据,发送方为客户端模式,接收方为服务器模式。在P2P的应用中,用户的主机不仅是下载客户端,还向其他客户端提供数据,是一种C/S混合模型。上层应用可以这样设计,因为IP协议栈定义了这样的能力。试想,如果IP提供的能力不相等,那么每个通信会话只能向一个方向发起,这将极大地限制通信能力。细心的读者会发现,前面介绍的 NAT 的特性之一就是这样一个限制。没错,NAT最大的缺点就是破坏了IP端到端通信的能力。并且接收器处于服务器模式。在P2P的应用中,用户的主机不仅是下载客户端,还向其他客户端提供数据,是一种C/S混合模型。上层应用可以这样设计,因为IP协议栈定义了这样的能力。试想,如果IP提供的能力不相等,那么每个通信会话只能向一个方向发起,这将极大地限制通信能力。细心的读者会发现,前面介绍的 NAT 的特性之一就是这样一个限制。没错,NAT最大的缺点就是破坏了IP端到端通信的能力。并且接收器处于服务器模式。在P2P的应用中,用户的主机不仅是下载客户端,还向其他客户端提供数据,是一种C/S混合模型。上层应用可以这样设计,因为IP协议栈定义了这样的能力。试想,如果IP提供的能力不相等,那么每个通信会话只能向一个方向发起,这将极大地限制通信能力。细心的读者会发现,前面介绍的 NAT 的特性之一就是这样一个限制。没错,NAT最大的缺点就是破坏了IP端到端通信的能力。这是一个C/S混合模型。上层应用可以这样设计,因为IP协议栈定义了这样的能力。试想,如果IP提供的能力不相等,那么每个通信会话只能向一个方向发起land攻击源端口目的端口,这将极大地限制通信能力。细心的读者会发现,前面介绍的 NAT 的特性之一就是这样一个限制。没错,NAT最大的缺点就是破坏了IP端到端通信的能力。这是一个C/S混合模型。上层应用可以这样设计,因为IP协议栈定义了这样的能力。试想,如果IP提供的能力不相等,那么每个通信会话只能向一个方向发起,这将极大地限制通信能力。细心的读者会发现,前面介绍的 NAT 的特性之一就是这样一个限制。没错,NAT最大的缺点就是破坏了IP端到端通信的能力。这将极大地限制沟通能力。细心的读者会发现,前面介绍的 NAT 的特性之一就是这样一个限制。没错,NAT最大的缺点就是破坏了IP端到端通信的能力。这将极大地限制沟通能力。细心的读者会发现,前面介绍的 NAT 的特性之一就是这样一个限制。没错,NAT最大的缺点就是破坏了IP端到端通信的能力。

2.5@>2 NAT 的缺点

NAT 在解决 IPv4 地址短缺问题上并非没有副作用。事实上,有很多问题。

首先,NAT 使 IP 会话保持时间更短。由于会话建立后NAT设备上会建立关联表,因此NAT网关会在会话静默期间进行老化操作。这是任何 NAT 网关都必须做的事情,因为 IP 和端口资源是有限的,通信需求是无限的,所以必须在会话结束后回收资源。通常情况下,TCP会话通过协商主动关闭连接,NAT网关可以跟踪这些数据包,但总是有例外,必须依靠自己的定时器来回收资源。基于UDP的通信协议很难确定通信何时结束,所以NAT网关主要依靠超时机制来回收外部端口。通过定时器老化进行回收存在问题。如果应用程序需要保持连接的时间超过 NAT 网关设置,通信将意外中断。因为网关回收相关转换表资源后,新数据到来时无法找到相关转换信息,必须建立新的连接。当这个新数据从公网侧发送到私网侧时,会出现无法触发建立新连接,无法通知私网侧主机重建连接的情况。此时通讯会中断,无法自动恢复。即使新数据从私网侧发送到公网侧,由于重建的会话表经常使用不同的公网IP和端口地址,导致公网侧主机无法对应之前的通信,导致用户感知可感知。连接丢失。NAT网关很难设置回收空闲连接的时间,这样就不会造成持续的资源损失,也很难避免大部分连接被意外中断。在NAT普及的时代,很多应用协议的设计者都考虑到了这种情况,所以一般都会设置连接保持连接机制,即在一段时间内没有数据发送时,主动发送 NAT 可以感知到没有实际的数据 keep-alive 消息,而这样做的主要目的是重置 NAT 会话计时器。

其次,NAT在实现上将多台内部主机的连接多路复用到一个IP,使得依赖IP进行主机跟踪的机制失效。基于网络流量分析的应用程序,例如网络管理所需的应用程序,无法跟踪最终用户与流量的具体行为之间的关系。基于用户行为的日志分析也变得困难,因为一个IP被多个用户共享,如果有恶意用户行为,很难定位发起连接的主机。即使有一些机制提供了在 NAT 网关上进行连接跟踪的方法,但很难连接这种转换关系。基于 IP 的用户授权不再可靠,因为拥有一个 IP 不等于一个用户或主机。一个服务器不能简单地将同一个IP的访问看作是同一个主机发起的,不能关联。有的服务器设置了连接限制,同时只接受一个I​​P的有限访问(有时只有一次访问),这会导致不同用户之间的服务抢占和排队。有时服务器端这样做是为了防御DOS攻击,因为用户在正常情况下不应该建立大量的连接请求,过度使用服务资源被理解为攻击行为。但这不能简单地通过NAT存在时的连接数来判断。简而言之land攻击源端口目的端口,由于 NAT 隐藏了通信的一端,它使简单的事情变得复杂。并且只能同时接受一个I​​P的有限访问(有时只接受一次访问),这会导致不同用户之间的服务抢占和排队。有时服务器端这样做是为了防御DOS攻击,因为用户在正常情况下不应该建立大量的连接请求,过度使用服务资源被理解为攻击行为。但这不能简单地通过NAT存在时的连接数来判断。简而言之,由于 NAT 隐藏了通信的一端,它使简单的事情变得复杂。并且只能同时接受一个I​​P的有限访问(有时只接受一次访问),这会导致不同用户之间的服务抢占和排队。有时服务器端这样做是为了防御DOS攻击,因为用户在正常情况下不应该建立大量的连接请求,过度使用服务资源被理解为攻击行为。但这不能简单地通过NAT存在时的连接数来判断。简而言之,由于 NAT 隐藏了通信的一端,它使简单的事情变得复杂。因为用户在正常情况下不应该建立大量的连接请求,过度使用服务资源被理解为攻击行为。但这不能简单地通过NAT存在时的连接数来判断。简而言之,由于 NAT 隐藏了通信的一端,它使简单的事情变得复杂。因为用户在正常情况下不应该建立大量的连接请求,过度使用服务资源被理解为攻击行为。但这不能简单地通过NAT存在时的连接数来判断。简而言之,由于 NAT 隐藏了通信的一端,它使简单的事情变得复杂。

让我们更深入地了解一下 NAT 对 IP 端到端模型的破坏力。NAT 通过修改 IP 标头中的信息来转换通信地址。但是在这个转换过程中只能基于一个会话单元。当一个应用程序需要维护多个双向连接时,麻烦就大了。NAT 无法理解多个会话之间的关联,也无法保证转换符合应用程序要求的规则。当NAT网关有多个公网IP地址时,一组关联的会话可能被分配到不同的公网IP地址,这在服务器端通常是无法接受的。更严重的是,当公网侧的主机想要主动向私网侧发送数据时,NAT网关没有转换本次连接所需的关联表,数据包无法到达私网侧的主机。这些以相反方向发送数据的连接总是由应用协议同意或在最初建立的会话中协商。但是由于NAT工作在网络层和传输层,它无法理解应用层协议的行为,对这些信息一无所知。NAT 希望对通信双方透明,但在这些情况下,这是一种奢侈。但是由于NAT工作在网络层和传输层,它无法理解应用层协议的行为,对这些信息一无所知。NAT 希望对通信双方透明,但在这些情况下,这是一种奢侈。但是由于NAT工作在网络层和传输层,它无法理解应用层协议的行为,对这些信息一无所知。NAT 希望对通信双方透明,但在这些情况下,这是一种奢侈。

图4 NAT对端到端通信模型的破坏

另外,NAT的工作机制依赖于修改IP头中的信息,阻碍了一些安全协议的工作。因为NAT篡改了IP地址、传输层端口号和校验和,这会导致认证协议完全失效,因为认证的目的是保证这些信息在传输过程中不发生变化。对于一些隧道协议,NAT的存在也会带来额外的问题,因为隧道协议通常使用外层地址来标识隧道实体,而经过NAT的隧道会有IP复用关系,需要谨慎处理另一端。ICMP 是一种网络控制协议。它的工作原理也是在两台主机之间传输错误和控制消息。因为IP的对应关系被重新映射,ICMP也需要复用和解复用。在很多情况下,由于 ICMP 数据包的有效载荷没有提供足够的信息,解复用会失败。IP分片机制是在信息源或网络路径上,当要发送的IP包的大小大于路径实际可以承载的最大大小时,IP协议层将一个包分成多个分片发送它们,然后在接收端重新组装数据包。片段恢复原始消息。IP等分片机制会导致传输层的信息只包含在第一个分片中。NAT很难识别后续分片与关联表的对应关系,

2.5@>3 NAT穿越技术

上面已经解释了 NAT 的缺点。为了解决IP端到端应用在NAT环境中遇到的问题,网络协议的设计者们创造了各种武器来应对这些问题。不幸的是,这里没有一种方法是完美的,需要在内部主机、应用程序或 NAT 网关上进行额外处理。

应用层网关

应用层网关(ALG)是解决NAT不了解应用层协议问题最常用的方法之一。已被NAT设备厂商广泛采用,成为NAT设备的必备功能。由于 NAT 不支持应用协议,因此需要为每个应用协议额外定制协议分析功能,以便 NAT 网关能够理解和支持特定的协议。ALG 和 NAT 形成交互关系。当NAT网关检测到新的连接请求时,需要判断是否是已知的应用类型,通常根据连接的传输层端口信息来识别。当它被识别为已知应用程序时,调用相应的函数来检查消息的深层内容。当找到任何以任何形式表达的IP地址和端口时,都会同步转换信息,并为这个新连接创建一个额外的连接。转换表条目。这样,当数据包到达公网侧的目的主机时,应用层协议中携带的信息就是NAT网关提供的地址和端口。一旦公网侧的主机开始向该端口发送数据或建立连接,NAT网关就可以根据关联表中的信息进行转换,然后将数据转发给私网侧的主机。很多应用层协议的实现并不局限于一个初始连接(通常是信令或控制通道)加上一个数据连接,一个初始连接可能对应很多后续的新连接。对于一个特殊的协议,在一次协商中会产生一组相关的连接。例如,RTP/RTCP协议规定,一个RTP通道建立后,连续占用两个端口,一个用于数据,一个用于控制消息。此时,需要ALG为应用服务分配连续的端口。ALG 可以成功解决大多数协议的 NAT 穿越需求,但这种方法也有很大的局限性。由于应用协议的数量非常庞大且不断发展,添加到设备的 ALG 功能是为特定协议的特定规范版本开发的。协议的创新和演进要求 NAT 设备制造商必须跟踪这些协议。最新标准,同时与旧标准兼容。虽然 Linux 等开放平台允许动态加载新的 ALG 特性,但管理成本仍然很高,网络维护人员无法始终知道用户需要哪些应用程序。因此,为每个应用协议开发 ALG 代码并跟踪最新标准是不可行的,而 ALG 只能解决用户最常见的需求。此外,出于安全要求,一些应用类型的数据包已经从源头加密。此类数据包无法在网络中间进行分析,

探针技术 STUN 和 TURN

所谓探针技术,就是通过在所有参与通信的实体上安装探针插件,检测网络中是否存在NAT网关,针对不同的NAT模型实现不同的遍历方式的技术。STUN 服务器部署在公共网络上,用于接收来自通信实体的探测请求。服务器记录接收到的请求的地址和端口,并填写返回的响应消息。客户端可以通过将接收到的响应报文中记录的地址和端口与本地选择的地址和端口进行比较来识别是否存在NAT网关。如果有 NAT 网关,客户端会使用之前的地址和端口向服务器的另一个 IP 发起请求,重复之前的检测。然后比较两个响应返回的结果,确定NAT的工作模式。由前述一对多转换模型可知,在对称NAT以外的模型中,NAT网关到内部主机地址和端口的映射是相对固定的,因此更容易实现NAT穿越。对称 NAT 为每个连接提供映射,使转换后的公网地址和端口对无法预测。这时TURN可以与STUN绑定,提供NAT穿越服务,即在公网服务器上提供一个“地址端口对”,这个“地址端口对”接收到的所有数据都会转发到内网主机通过检测建立的连接。优越的。映射“地址端口对” TURN分配的信息会通过STUN响应发送给内部主机,后者会将这些信息放入建立连接的信令中通知对端通信。这种探测技术是一种通用的方法,不需要在NAT设备上为每个应用协议开发功能,与ALG方法相比具有一定的通用性。但是 TURN 中继服务可能会成为通信瓶颈。而且,向客户端添加探测功能需要每个应用程序添加代码来支持它。不需要在NAT设备上为每个应用协议开发功能,与ALG方法相比具有一定的通用性。但是 TURN 中继服务可能会成为通信瓶颈。而且,向客户端添加探测功能需要每个应用程序添加代码来支持它。不需要在NAT设备上为每个应用协议开发功能,与ALG方法相比具有一定的通用性。但是 TURN 中继服务可能会成为通信瓶颈。而且,向客户端添加探测功能需要每个应用程序添加代码来支持它。

中间件技术

通过开发一种通用的方法来解决NAT穿越问题也是一种努力。与前者不同,NAT 网关是该解决方案的参与者。与 ALG 不同的是,客户端将参与网关的公网映射信息的维护。这时,NAT网关只需要了解客户端的请求并按要求分配转换表,不需要分析客户端的应用层数据。UPnP 就是这样一种方法。UPnP中文全称是Universal Plug and Play。它是网络终端和网关之间的通用通信协议,具有发布信息和管理和控制信息的能力。网关映射请求可以为客户端动态添加映射条目。在此刻,NAT 不再需要了解应用层携带的信息,只需要翻译 IP 地址和端口信息。客户端通过控制消息或信令向公网侧发送的信息直接携带公网映射的IP地址和端口,接收端可以根据该信息建立数据连接。当NAT网关接收到数据或连接请求时,它只根据UPnP建立的表项翻译地址和端口信息,不关心内容,然后将数据转发到内网。该方案要求网关、内部主机和应用都支持UPnP技术,

中继代理技术

准确地说,它不是一种NAT穿越技术,而是一种NAT绕过技术。简单来说,就是在NAT网关所在的位置旁边放置一个应用服务器。该服务器在内部网络和外部公共网络上都有自己的网络连接。当特定于客户端的应用程序生成网络请求时,它将被定向到应用程序代理服务器。应用代理服务器根据代理协议解析客户端的请求,然后从服务器的公网侧发起新的请求,将客户端请求的内容中继到外网,并反向中继响应。该技术与 ALG 非常相似,需要为每种应用类型部署中继代理服务,

协议特定的自遍历技术

所有方法中最复杂和最可靠的方法是自己解决自己的问题。例如,IKE 和 IPsec 技术在设计时就考虑了如何穿越 NAT 的问题。由于该协议是自加密协议,具有防止消息修改的认证能力,其他通用方法无济于事。因为NAT网关的实际应用基本都是NAPT模式,所有传输层协议承载的数据包都可以顺利通过NAT。IKE和IPsec采用的解决方案是使用UDP在数据包外加一层封装,内层数据包不再受影响。IKE中特别增加了检测NAT网关是否存在的能力和绕过NAT网关检测IKE协议的方法。

2.6@> NAT的应用与实现

2.6@>1 NAT的应用

NAT广泛应用于当代互联网,从家庭网关到企业广域网出口,甚至运营商业务网络出口。事实上,用户周围到处都可以看到 NAT。一般家庭宽带接入的ADSL Modem和SOHO路由器都内置了NAT功能。Windows XP 支持网络连接共享。连接到公共网络的用户可能会通过多层 NAT 而对它一无所知。. 很多企业也使用NAT来上网,以节省IP成本,但他们的要求比家庭用户更复杂。

NAT多实例应用

在VPN网络中,多实例路由是指一个物理拓扑承载多个逻辑拓扑,网络终端被分配到相互隔离的逻辑拓扑中,它们之间没有路由路径。但是,当访问 Internet 或一些关键的服务器资源时,需要在隔离的网络之间共享资源。NAT 的多实例实现是一种跨越这种逻辑拓扑并将一个空间中的网络地址映射到另一个空间的方法。

NAT高可靠组网

提高网络的可靠性是一个广泛的要求,而NAT作为从私网到公网的关键路径,自然对可靠性有很高的要求。当设备提供多个公网接口时,在多个接口上部署 NAT 可以提供更高的带宽和访问附近多个 ISP 的能力。但是,当部署多个出口时,访问的流量可能会从不匹配的接口返回,这就需要NAT解决方案有良好的路由规划并部署适当的策略来确保该流量能够被正确处理。当多个物理设备承担NAT功能时,不同设备之间的信息备份和流量共享也是一个组网问题。

转换源地址和目标地址的应用程序

在我们前面介绍的所有NAT应用中,在从内网访问外网的过程中,源地址转换,目的地址不变,当报文反方向进入时,处理目的地址。但是,有一些特殊的应用程序需要在从内到外的 IP 路径上替换目的 IP 地址。通常,此应用程序会同时替换源地址和目标地址,在通过 NAT 网关后完成两次地址转换。当两个计划使用私有IP地址范围的网络合并时,最终用户既不想调整自己的IP地址方案,又想开放一些网络资源供对方访问。此时,

图 5 同时源地址和目的地址转换的应用

2.6@>2 NAT的设备实现

NAT作为IP层服务特性,与产品实现中的防火墙、会话管理等特性密切相关。这是因为 NAT 确定进入设备的数据包是否需要 NAT 处理,以及该数据包是否为新连接。需要通过匹配访问控制列表规则和查询会话关联表来判断。为了满足不同应用场景的NAT需求,NAT的管理界面可以为用户提供各种配置策略。根据NAT的具体工作模式,可以分类如下。

静态一对一地址映射

在这种工作模式下,NAT 将私网地址与公网地址静态关联起来。从内到外的方向,匹配源IP的私网IP替换为公网IP,反方向匹配目的IP。公网IP的报文被替换为私网IP。网络层以上的部分没有被替换,只是校验和被修正。

静态多对多地址映射

这种方法与上一种方法类似,只是将一段私网地址映射到一段公网地址。工作机制与前一种方法相同,但简化了配置工作量。

动态端口映射

这是最基本的工作方式,即将一段内网地址动态转换为一个或多个公网IP地址,并转换传输层端口或其他上层协议信息,实现IP复用。对于inside-out报文,替换源地址和端口,反向报文替换目的地址和端口。当只使用连接公网的接口的IP作为公网地址进行NAT转换时,这种配置最简单,也称为EasyIP。当使用公网IP地址作为NAT转换地址时,需要配置地址池,NAT会自动选择地址池中的公网IP。

动态地址映射(no-pat)

这是一种介于静态多对多地址映射和动态端口映射之间的工作机制。当私网访问公网并到达NAT网关时,NAT网关会检查私网IP是否有关联的公网IP映射。如果已经存在,直接根据转换表替换IP,不修改上层协议。如果没有关联项,则在空闲的公网IP池中占用一个IP,写入关联表,然后根据这个关联进行地址转换。当该私网主机发起的所有对外访问关闭或超时时,公网IP被回收。这种方式可以理解为一组内网主机抢先共享一个公网IP地址池。

静态端口映射

通过静态配置,一个固定的私有IP地址和端口与一个公网地址和端口相关联。这种方式相当于上面介绍的全锥模式,但是不需要内网主机先发送消息。这种方法适用于将一个众所周知的服务(如HTTP)映射到NAT网关上的内部主机,也称为端口转发。

应用层网关 (ALG)

ALG 是所有 NAT 产品实现中必需的功能组件。但在不同的实现中,有的产品可以动态加载不同的ALG模块,有的产品可以提供ALG开关控制,有的不提供任何用户界面。ALG解析上层应用协议的内容,根据需要修改IP和端口相关信息,并创建和维护额外的关联条目。

NAT转换关联表

无论哪种 NAT 工作,都使用地址转换关联表。在不同产品的实现中,这个关联表的存储结构与IP转发中的调用方式有很大的不同。源IP、目的IP、连接协议类型、传输层源端口、目的端口以及转换后的源IP、源端口、目的IP、目的端口信息记录在关联表中。从内部网络到外部网络的访问方向。根据 NAT 的工作方式,此信息可能完全填充或部分填充。比如只根据IP进行静态映射,不需要填写任何端口相关信息;静态端口映射,只填源相关内容,目的信息为空。

5. 后 IPv4 NAT

NAT 是一种用于延迟 IPv4 地址耗尽的技术。毫无疑问,它很好地完成了历史使命,IPv4比预期走得更远。作为其后继者,IPv6 吸取了 IPv4 的教训,在被赋予了足够的地址空间的同时,在安全性、效率和简单性等各个方面都进行了优化。但IPv6无法顺利取代IPv4,导致IP升级步伐缓慢。尽管网络协议的分层设计非常清晰,但大量的应用层协议和互联网软件仍然嵌入了 IPv4 地址处理。要将整个Internet网络升级到IPv6,首先必须完成应用改造。因为NAT及其穿越技术的结合可以满足大部分用户的需求,

由于IPv4地址濒临枯竭,经济模式不可持续,IPv4必须退出历史舞台。很自然地认为,NAT 作为 IPv4 的超级补丁技术的使命已经结束。实际情况是,在从IPv4向IPv6过渡的阶段,NAT仍然是不可或缺的技术手段。因为互联网不可能在一天内完成全网升级,必须是局部升级,逐步替代。在两套协议共存期间,用户和业务资源分布在不同的网络中,必须满足跨网络访问的要求。这正是 NAT 擅长的地址替换,因此是 NAT-PT。由于 IPv4 和 IPv6 之间的差异,NAT 要做的事情比以往任何时候都复杂,

此外,IETF 还在为纯 IPv6 网络制定 NAT 规范。尽管人们对这类应用的需求并不强烈,但NAT仍有其独特的作用,例如隐藏内部网络的地址、实现重叠地址网络的合并等。

毫不夸张地说,有了NAT,基于IPv4的互联网可以容纳数十亿的用户终端,成就今天的辉煌。IPv4已经走到了尽头,IPv6的曙光还没有到来。互联网比以往任何时候都更加依赖 NAT 作为一种过渡技术。NAT的历史再一次证明,翻天覆地的划时代进步不一定有市场,对低级的修修补补也不一定不成功。当世代更迭时,让我们走近NAT,欣赏IP领域更微妙但不深奥的知识。了解 NAT 就是了解不断变化的应用世界。

Star Club专注于大型服务器存储节点技术的开发与应用。俱乐部的基因是来自国内顶级网络和通信公司的技术开发人员。我们拥有国内最先进的移动数据中心,拥有多年的互联网基础资源和设备建设运营。,维修经验丰富的专业团队。在ipfs的开发过程中,我们已经部署了近2000多个大型服务器节点,同时具备部署15000-200000个节点的能力。

Star Club通过对目前市场上各种矿场和矿机的结构分析,确保其部署结构处于行业领先地位。实现了超过 400% 的收率。

俱乐部的使命是协助IPFS项目方部署全球节点,优化互联网底层协议。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论