快捷搜索:  汽车  科技

nat网络转换技术(网络穿透与音技术)

nat网络转换技术(网络穿透与音技术)在本小节中,我们不但会介绍三种NAT设备的映射模式,还会针对每种映射模式进行工作场景的介绍。目前NAT设备有三种映射模式,它们是静态映射、动态映射和网络地址端口映射(NAPT/PAT),其中又由于NAPT/PAT支持端口映射转换,所以它又是目前使用最广泛的一种映射模式。当然就如前文描述的那样,带有NAT功能的网络隔离设备还能完成很多其它重要功能,例如防火墙、最优路径选择、桥接等。TCP/IP协议是一种四层协议簇(七层协议簇并不完全满足),IP地址工作在网络层,端口描述信息工作在传输层。一个IPV4的结构一共32位,其实在除去广播段、组播段、保留段、内网段等特定IP地址范围后,能够工作在外网的固定IP地址非常有限(一种说法是IPV4已基本分配完毕,另一种说法是IPV4资源还很多只是运营商捂着。但是IPV6 128位地址的推广非常缓慢是显而易见的,这涉及到广泛的应用程序升级问题,有时间的话我们

(这个专题我们将介绍网络穿透的基本知识,以及建立在此基础上的实时视频语音通信技术。不只是介绍理论知识,还介绍实际案例 )

1、概念介绍1.1、NAT基本概念

NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上(摘自百度)。了解NAT的定义、NAT设备的工作方式等基本知识,是我们进行网络穿透与音视频技术学习的基础。本文和后续几篇文章将按照NAT基本概念、NAT映射模式、NAT映射实现方式、NAT检验这样的顺序进行知识介绍和梳理。

1.2、NAT设备是什么

常见的各种网络中(税务专网、警务专网、教育网、互联网、军网等),路由器的应用都非常广泛。路由器实现了内部网络到外部网络的连接,除了起到子网隔离、有害信息防护、路径选择和防火墙的作用外,路由器最重要的作用之一就是实现网络地址转换(NAT)功能——只有进行了各种模式下的网络地址转换和映射工作,路由器所隔离的内网和外网才能进行数据通信。

所以路由器实际上就是一种最常见的带有NAT功能的设备,我们日常生活中使用的网络的存在多级地址转换,并且处于不同级别的NAT设备其地址转换模式、性能都有较大差异。例如在电信核心机房的带有NAT功能的设备,其工作性能和我们家里使用的NAT设备的工作性能肯定是不一样的。

1.3、为什么需要NAT和NAT设备

TCP/IP协议是一种四层协议簇(七层协议簇并不完全满足),IP地址工作在网络层,端口描述信息工作在传输层。一个IPV4的结构一共32位,其实在除去广播段、组播段、保留段、内网段等特定IP地址范围后,能够工作在外网的固定IP地址非常有限(一种说法是IPV4已基本分配完毕,另一种说法是IPV4资源还很多只是运营商捂着。但是IPV6 128位地址的推广非常缓慢是显而易见的,这涉及到广泛的应用程序升级问题,有时间的话我们可以专门作为一个专题来进行探讨)。

那么有的朋友会说,操作系统上还有多个端口可以使用啊,IP 端口这种组合方式还可以将目标地址再进行扩容。那么抱歉,这也是有限的或者说扩容潜力是有限的。一个操作系统的端口范围从 0——65535,其中低端口为保留端口,包括很多默认约定的端口。这样算下来,我们通常能自定义使用的端口编号就从1024开始一直到65535。(那么为什么65535是最大端口数呢?因为TCP/IP协议簇中,只有16位描述端口信息)

所以在我们所知的网络中,网络工程师都会使用带有NAT功能的设备/软件来进行网络隔离,达到不同网络中进行IP、端口重用的目的。如下图所示:

nat网络转换技术(网络穿透与音技术)(1)

当然就如前文描述的那样,带有NAT功能的网络隔离设备还能完成很多其它重要功能,例如防火墙、最优路径选择、桥接等。

2、三种NAT设备的映射模式

在本小节中,我们不但会介绍三种NAT设备的映射模式,还会针对每种映射模式进行工作场景的介绍。目前NAT设备有三种映射模式,它们是静态映射、动态映射和网络地址端口映射(NAPT/PAT),其中又由于NAPT/PAT支持端口映射转换,所以它又是目前使用最广泛的一种映射模式。

2.1、静态映射(Static NAT)

静态映射(Static NAT)模式是指内部IP地址在NAT设备上都有一个稳定且同一时间不重用的外部网络IP与之对应,如下图所示:

nat网络转换技术(网络穿透与音技术)(2)

静态映射模式的优点和缺点都非常明显,优点是对应关系简单,NAT设备中的映射表易于查询和维护;缺点也很明显,内部网络的每一个终端要访问外部网络都需要一个外部网络IP做对应,这加大了外部网络/上层网络的IP分配压力。

2.2、动态映射(Pooled NAT)

动态映射模式可以解决静态映射的一些问题,首先面对外部网络的NAT设备拥有有限的多个外部IP地址,这些IP地址同样是通过外部网络/上层网络分配而来,其次在NAT设备内部维护了一个可用的外部网络IP地址池。当内部网络的某个终端需要完成地址转换操作时,NAT设备就会从自己内部维护的这个“地址池”中取出一个可用的外部网络IP地址作为映射关联,如下图所示:

nat网络转换技术(网络穿透与音技术)(3)

当完成本次外部资源的访问或一段时间不再有相关数据通信,这个映射关系将从NAT设备的映射表中被剔除,外部网络IP地址将回到NAT设备的“地址池”中,准备下一次被使用。从上图可以看出动态映射模式的几个工作特点,首先映射关系是随机的,内部网路地址“192.168.100.201”第一次映射的外部网络地址可能是“47.92.50.240”,下一次同样的内部网络地址可能映射的外部地址就变成了“47.92.50.241”。其次NAT设备被外部网络/上层网络分配的网络地址虽然还是多个,但由于引入了“池”的概念,所以增加了一定的外部网络地址的重用性,减少了外部网络的地址分配压力。

2.3、网络地址端口映射(NAPT/PAT)

这种工作模式下,面向外部网络/上层网络的NAT设备可以只被外部网络/上层网络分配了一个网络地址。网络地址端口映射(NAPT/PAT)工作在TCP/IP的传输层,是目前使用最普遍NAT映射模式,首先是静态映射和动态映射都不支持基于网络端口复用的映射转换;其次是因为NAPT/PAT可以最大限度的节约外部网络/上层网络的IP资源,所有内部网络的终端都可以基于NAT设备,映射同一个外部网络地址的不同端口。

那么我们用一个实例说明,当局域网(内部网络)一个IP地址去访问某一个外网服务地址时,NAT设备是怎样完成地址和端口转换的。这个实例可以对NAPT/PAT的工作方式有一个大致了解(为了着眼重点,如何查询DNS并解析域名、路由表如何完成查询等工作就不多介绍了)。

nat网络转换技术(网络穿透与音技术)(4)

上图中可以看到,当一个内网IP为“192.168.100.201”的操作系统需要访问互联网资源时,首先请求会通过操作系统上的一个端口(上图中呈现的端口号是41000,实际上这些源端口往往是操作系统随机分配的)发送到第一级NAT设备上,该NAT设备使用NAPT/PAT映射模式,所以该NAT设备会为内部网络地址“192.168.100.201:41000”建立一个新的映射关系,映射到“172.16.80.62”的“13445”端口。接下来第一级NAT设备会将这个数据请求报文的源地址从192.168.100.201:41000改写成172.16.80.62:13445(这种改写方式实际上是NAPT/PAT映射模式中的Source NAT(SNAT)子模式,后文再进行详细说明)。如下图所示:

nat网络转换技术(网络穿透与音技术)(5)

接下来这个被改写的数据报文会被当前NAT设备发送到下一层网络的网关,既是上图中所示的“公司核心路由器”,后者同样也是一个带有NAT功能的设备,同样也会将当前数据报文再次进行改写(前提是这个NAT设备支持NAPT/PAT-Source NAT映射模式)。改写的效果如下图所示:

nat网络转换技术(网络穿透与音技术)(6)

以上介绍的NAPT/PAT的工作模式是不是感觉似曾相似,还记得关于LVS工作模式的介绍吗——LVS-NAT(https://blog.csdn.net/yinwenjie/article/details/46845997),是的实际上LVS-NAT的工作模式就是借鉴的NAT设备的NAPT/PAT映射模式。

随后说明一下,上图中每一个局域网的NAT设备都有且只有一个外部网络/上层网络地址,在实际情况下如果你的ADSL路由器是图中的NAT设备,那么它的外网IP是由电信运营商分配的,目前这些由电信运营商分配“外网IP”有时是一种所谓的“虚拟IP”(实际上是一种电信的内网IP,这又是另一个话题这里就不讨论了)。

2.3.1 NAPT/PAT子模式——Source NAT

既然NAPT/PAT映射模式的本质是改写数据报的地址和端口,那么根据改写地址和端口的方式,NAPT/PAT又可以分为Source NAT 和 Destination NAT两种子映射模式。所谓Source NAT是指NAT设备在向外部网络发送数据报之前,会将数据报的源IP地址和源端口进行改写,并建立映射关系。所以在本篇文章(2.3节)上述内容中介绍的NAPT/PAT映射模式,实际上就是Source NAT映射模式。

2.3.2 NAPT/PAT子模式——Destination NAT

那么NAT设备既然可以通过改写数据报文的源地址和源端口实现NAPT/PAT,那么自然就可以通过改写数据报文的目标地址和目标端口实现NAPT/PAT,后者这种方式就是Destination NAT。Destination NAT的应用场景很多,其中一种就是服务器通过NAT设备对客户端的请求进行相应,如下图所示:

nat网络转换技术(网络穿透与音技术)(7)

上图中客户端通过NAT设备向服务器发送请求报文(可能就是HTTP数据报或者可能是基于TCP的MQTT数据报),这个请求数据报通过NAT设备时会被NAT设备通过Source NAT方式建立映射关系并进行数据报改写;当服务器处理完本次请求,并生成一个响应数据报文。这个响应数据报文通过NAT设备时,NAT设备将基于之前建立的映射关系,通过改写目标地址和目标端口的方式进行处理——Destination NAT。

Destination NAT还有一些比较典型的应用场景,例如负载均衡架构——Nginx、LVS、Tengine等都有类似原理的应用。如下图所示:

nat网络转换技术(网络穿透与音技术)(8)

3、四种NAT映射实现方式

上文中我们已经提到三种NAT映射模式,它们是静态映射(Static NAT)、动态映射(Pooled NAT)和网络地址端口映射(NAPT/PAT),又由于NAPT/PAT映射模式的灵活性和复用性最好,所以它又是目前应用最广泛的一种映射模式。这种端口复用的映射模式目前又有四种实现方式,本文我们将逐个进行介绍,以便为我们后文介绍网络穿透方式打下理论基础。

3.1、Full Cone NAT——全圆锥NAT

全圆锥NAT实现方式是指:一个NAT设备内部的IP地址和端口(记为 IP1 PORT1),通过NAT建立映射表时,都会映射到NAT设备上相同的外网IP地址和端口(记为IP100 PORT100)。且外网的任何IP地址和端口(记为IPX PORTX),都可以通过NAT设备上已建立的映射地址和端口(这里就是IP100 PORT100)访问内网终端。如下图所示:

nat网络转换技术(网络穿透与音技术)(9)

上图中,一旦内网地址(192:168.0.100:41000)在NAT设备上建立了映射关系(61.88.19.144:31444),那么外部网络的任何地址(示例中是177.12.134.140:61001 和 177.12.134.140:52233 和 177.17.16.199:45333)都可以通过NAT设备上的映射地址(61.88.19.144:31444)访问内部终端(192:168.0.100:41000所代表的应用服务)

Full Cone NAT实现简单,基本没有限制约束(也可以理解成约束非常宽松),这种NAT实现方式的也非常容易实现网络穿透。但Full Cone NAT使整个内网终端完全暴露在外部网络下,所以也基本上没有任何安全性可言。

3.2、Address Restricted Cone NAT——地址限制圆锥NAT

地址限制圆锥NAT在全圆锥NAT实现方式下,增加了一定的访问限制,这种访问限制基于IP地址。它的定义是:一个NAT设备内部的IP地址和端口(记为 IP1 PORT1),通过NAT建立映射表时,都会映射到NAT设备上相同的外网IP地址和端口(记为IP100 PORT100)进行外网地址(记为IPX PORTX)。但是只有已经由映射地址和端口(这里就是IP100 PORT100)访问过的外网地址(这里就是IPX),才能通过映射地址和端口(这里就是IP100 PORT100)访问内网终端,如下图所示:

nat网络转换技术(网络穿透与音技术)(10)

上图中,内网地址(192:168.0.100:41000)在NAT设备上建立了映射关系(61.88.19.144:31444),并访问外部终端(177.12.134.140:52233),这时外部终端(177.17.16.199:45333)是无法通过NAT设备上的映射地址和端口(61.88.19.144:31444)访问内网终端的。而只有177.12.134.140:61001、177.12.134.140:52233 以及177.12.134.140:XXXXX 这样的外部地址和端口,可以通过NAT设备上的映射地址和端口(61.88.19.144:31444)访问内网终端——因为它们的IP才能突破NAT设备的访问限制。

Address Restricted Cone NAT映射实现方式增加了对网络IP地址限制,保证了只有特定的外网IP才能访通过映射关系访问到内网资源。这种方式显然在防止内网资源完全暴露在内网的情况下,保证了一定的访问灵活性。

3.3、Port Restricted Cone NAT——端口限制圆锥NAT

Port Restricted Cone NAT的映射访问限更加严格,它的描述是:一个NAT设备内部的IP地址和端口(记为 IP1 PORT1),通过NAT建立映射表时,都会映射到NAT设备上相同的外网IP地址和端口(记为IP100 PORT100)进行外网地址(记为IPX PORTX)。但是只有已经由映射地址和端口(这里就是IP100 PORT100)访问过的外网地址和端口(这里就是IPX PORTX),才能通过NAT设备上的映射地址和端口(这里就是IP100 PORT100)访问内网终端,如下图所示:

nat网络转换技术(网络穿透与音技术)(11)

上图中,内网地址(192:168.0.100:41000)在NAT设备上建立了映射关系(61.88.19.144:31444),并访问外部终端(177.12.134.140:52233),这时外部终端(177.17.16.199:45333 和 177.12.134.140:61001)是无法通过NAT设备上的映射地址和端口(61.88.19.144:31444)访问内网终端的。而只有177.12.134.140:52233 这个之前已经被请求的外部地址和端口,可以通过NAT设备上的映射地址和端口(61.88.19.144:31444)访问内网终端——因为只有它的IP和端口同时符合NAT设备的安全性要求。

3.4、Symmetric NAT——对称NAT

可以看出圆锥NAT设备的映射实现方式,其前提条件都是:“一个NAT设备内部的IP地址和端口(记为 IP1 PORT1),通过NAT建立映射表时,都会映射到NAT设备上相同的外网IP地址和端口”,这个映射关系的形成和内网终端所访问的外网目标没有任何关系,也就是说A终端无论访问www.XXX.com还是访问www.YYY.com,它在NAT设备上建立的映射地址都是相同的。

但是对称型NAT设备的映射实现方式却不一样,它的定义是:一个NAT设备内部的IP地址和端口(记为 IP1 PORT1),通过NAT建立映射表时,会根据要访问的目标地址和端口,在NAT设备上建立不同的映射关系,如下图所示:

nat网络转换技术(网络穿透与音技术)(12)

对于对等NAT设备的讨论,我们是基于NAT设备内部网络的同一IP地址和同一网络端口,因为如果内网的IP地址和端口都不一致,就没有讨论的必要了。上图中,内网地址和端口192:168.0.100:41000在访问第一个外部地址(177.12.134.140:61001)时,在NAT设备上建立的映射信息是61.88.19.144:61554;而同样的的内部网络上的地址,在访问第二个外部网络地址(177.12.134.140:52233)时,在NAT设备上建立的映射信息是61.88.19.144:31444。

这个时候,各个已经首先被内部终端通过NAT设备请求过的,且NAT设备上映射关系还没有消除的外部网络终端,就可以使用对应的映射地址 端口,访问到内部终端。而其它未建立映射关系的任何外部终端都无法访问内部网络上的源终端。如上图的示例中:地址和端口为177.12.134.140:52233的外部终端,可以通过映射地址61.88.19.144:31444访问到内部终端;地址和端口为177.12.134.140:61001的外部终端,可以通过映射地址61.88.19.144:61554访问到内部终端。

3.5、实际上NAT映射为多层

从以上的几个小节的介绍中,我们可以发现四种映射模式的实现方式中,按照限制的宽松性分别为:
Full Cone NAT > Restricted Cone NAT > Port Restricted Cone NAT > Symmetric NAT;但是这几种NAT设备映射实现方式的穿越难度正好相反,Full Cone NAT < Restricted Cone NAT < Port Restricted Cone NAT < Symmetric NAT。后文中我们将介绍到。

除了了解到NAPT/PAT映射模式的四种实现方式外,我们还需要了解到当内部网络某个终端(记为A)访问互联网上的某一个终端地址(记为B)时,实际上A终端和B终端之间隔了多个NAT设备。如下图所示:

nat网络转换技术(网络穿透与音技术)(13)

上图中可见一个网络终端(终端A)到另一个网络终端(终端B)一共经历了三层NAT设备,每一层NAT设备的映射实现方式可能都是不同的,例如上图所示的X方式可能为Full Cone NAT,所示Y方式可能为Restricted Cone NAT,所示Z方式可能为Symmetric NAT。那么我们只需要解决整个网络中Symmetric NAT映射实现方式下的网络穿越问题,则整个网路的穿越问题就可以解决。

猜您喜欢: