NAT(网络地址转换技术)详解,NAT和NAPT的区别是什么?

NAT(网络地址转换技术)详解,NAT和NAPT的区别是什么?,第1张

内网穿透,也就是 NAT 穿透,是一种网络地址的转换技术;进行 NAT 穿透,是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。在数据中心网络中,内网穿透可将私有地址映射到公网,同时它也解决了IP地址匮乏的问题,满足用户对IP地址的应用需求。

对于内网穿透技术中基础NAT和NAPT,以及NAPT中对称型NAT和非对称型NAT的区别,大家可能并不怎么了解,这里我来为大家详细说一说这两种内网穿透的类型。

一般来说,我们数据中心的服务器一般分为两个网卡,一个提供内网,一个提供外网,内网访问时我们一般采用的是私有地址,而外网访问采用的是公共地址。根据目前网络发展趋势来看,公共地址数量有限,而内网使用大量的私有地址,通过内网穿透技术,可以实现私有地址和公有地址的转化。

内网穿透技术一般分为两大类,一是基础NAT,另一个是NAPT。基础NAT是将私有地址转化为公有IP地址,但不会将TCP/UDP端口信息转换,并且有动态和静态区分。然而,NAPT是人们较为熟悉的转换方式,将私有地址映射到公有网络地址上,同时会加上NAT设备选定的TCP端口。所以,NAPT又被分为对称型NAT和非对称型NAT。

对称型NAT

该类型的NAT也被称为圆锥型NAT,可将私有地址设备用一个IP连接外面的服务器,在NAT服务器上映射的否是同一个IP地址,换句话说就是私有地址和端口在NAT上都只有一个出口,属于一对多的关系。

非对称型NAT

什么是非对称型NAT?其实,圆锥型NAT也可以被称为非对称型NAT。非对称型NAT和对称型NAT相反,它能为每一个新的绘画分配新的端口号,而对称型NAT不保证会话中的私有地址、端口之间的一致性。
当然,NAT技术不仅仅上述几个,它的技术种类非常多,不同技术应用于不同网络需求。而花生壳内网穿透采用的内网穿透技术是NAT-DDNS技术,主要是利用动摇域名服务和网络地址转化的服务器实现公私网动态映射的方法。该技术和传统DDNS技术相比较,其难度系数较大,主要是采用域名+端口的访问方式。

NAT是数据网络必备技术,它往往会应用于数据中心的网络出口处,实现数据中心内部访问外部的目的,或者外部访问内部数据的流量要经过NAT设备,确保访问的安全性。一旦NAT出现问题,往往会造成网络访问阻碍,甚至会出现数据安全性问题。

内网穿透的功能可以摆脱无公网IP及NAT转发导致无法使用的问题,同时支持公网IP解析,解决了国内用户所面临的动态域名解析的难题,也让互联网中的所有朋友都能访问,十分方便。

谈谈我的理解:
首先,tcp不同于udp,tcp天生就是不对等的连接,因此穿透nat就显得很困难。
最为简单的一种方式:
客户端:a,b
服务器端(公网)c
a发送消息给c,同时c拿到a的ip端口等信息,将a提出的请求转发给已与c连接的b,b表示同意后发送消息给c,c将消息反馈给a,同时为a和b的通信做准备(分配端口等等),整个过程是客户端到服务器再到客户端,c起中转作用,a与b建立连接实际是a与c,b与c建立的连接。
一般对于可靠性要求较低的应用会使用udp实现。
优点:适用于所有类型网络,简单;
缺点:占用带宽,速度慢。
早期的msn就是这种方式。
第二种方式:TCP的p2p技术。
这种方式是目前最热门的,我也正在看。
转一下来自cmu(卡耐基梅隆)牛人们的研究:
××××××××××××××××
原文:>1、方法一,一台虚拟服务器要有两张虚拟网卡用2003server或2008server等服务器系统,启用“路由和远程访问”配置nat。
2、方法二,一台虚拟服务器用SyGate等代理服务器软件。
用方法一,两台虚拟客户机配置与服务器内网卡同一网段的ip地址。
供你参考:
NAT服务器在win 2003是如何配置的
>

NAT 俗称网络地址转换,基本 NAT 都部署在路由器或者交换机上。

主要还是IP地址的不足,使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭。用大白话:比如你有一个路由器(家用的那种就可以)这个路由器本身链接了公网(被分配到了一个公网的IP地址)。路由器后面有接了N多个设备,每个设备都分配到了一个私有的地址(内网地址),这些地址可以通过这个路由器和外网交互(并非是代理的中继方式)。

1 基本NAT: 这种NAT下的私有IP只有少部分(并不是全部)可以和外网通讯。每次这些私有地址向外网发送数据的时候,NAT就会把这个数据报的 源地址IP 修改成NAT的 公网地址 (这样接收方以为这个数据报是从NAT发给我的,我后面数据报在会给这个NAT就好了),并在NAT内存下对应的 映射关系 (端口和内网私有IP的映射)。当NAT收外网的数据报的时候,根据数据报的端口号找到内网的私有IP地址,将这个数据报的目的IP地址修改成内网私有IP地址(整个过程NAT负责了IP地址来回替换,辅助完成了内网机器和外网设备通讯,这里的外网设备有可能也是一个NAT)。如果收到的数据报在映射表中找不到对应映射,这个数据报就会被丢弃。

存在问题: 基本的NAT由于不会改动端口信息,当内部2个不同机器(2个不同的私有IP)使用同样的端口会出现映射错误了。

2 NPAT: 这类的NAT是在基本NAT基础上演化而来,它不仅修改 IP地址 还有 端口号 。基本可以满足NAT内全部的网络访问要求。NAT内的私有IP地址第一次向外网发送数据,NAT会选一个 映射表 里面还没有被使用过的 端口号 ,然后修改 发送数据报 的 源IP地址 和 源端口号 并发送出去,并把 私有IP地址 和 源端口号 ,和修改后的 端口号 映射关系记录下来。之后这个私有IP地址发送数据会首先判别之前是不是已经有这个映射关系,如果有就继续按照映射关系修改数据报。当NAT收到外部的数据,会从映射表找到对应关系。修改数据报的 目的IP地址 和 目的端口号 ,如果映射表中没有记录这个数据报就会被丢弃了。

解决了基础NAT的端口问题: 通过修改端口的可以让NAT内的多个私有IP地址可以使用相同的端口进行通信。因为NPAT更加灵活所以现在基本的NAT技术就是指的NPAT技术。

如果2台机器在同一个NAT下,那么他们可以直接通信了。

情况 1: 如果2台机器有一台在NAT下另一个在外网,那么只能NAT内的私有机器主动链接外网机器,因为外网的机器主动链接内网的机器,NAT映射表并不存在这个数据转发项,这个数据报就被丢弃了。

情况 2: 如果2台机器都在不同的NAT下,那么不管哪一方发起链接请求数据报都不会到达对应的机器。这种情况非常常见。

那么最简单的方式解决上面2个问题:就是在公网部署一台 中继服务器 ,双方机器都链接这台服务器。然后 中继服务器 帮助这2台服务器转发数据。这种方式最简单也是效率最低的。

到这里P2P正式登场了: 比如有下面这样的网络拓扑结构(就是上面情况2)

如果 NAT-A, IP:40325125 和 NAT-B, IP:2341238 需要直接通信的话,基本不可能,所以需要做些手段。

假设需要 手机 (图中)建立TCP链接到 电脑 (图中)需要如下手续:

1 由被链接方发送数据报(可以是UDP甚至是TCP的SYNC握手包)

[上传失败(image-4b61ae-1528199423593)]
绿色线表示了数据报流动的方向

图中 电脑 给 NAT-A IP:40325125 / 端口:4553 发出了一个数据报,这个数据报在经过 NAT-B 的时候 源IP地址 被修改成了 NAT-B的IP地址2341238 , 源端口 被修改成了 678 。这个数据报在到达 NAT-A 的时候,在映射表中找不到 678 端口对应的内部私有IP的映射。所以这个数据报一定会被 NAT-A 丢弃掉。但是经过这次数据报发送,在 NAT-B 的映射表里面就会标记 40325125:4553 我已经发送过数据过去了,那么后面只要从这个地址发送来的数据报,我就可以转发到内网正确的设备上面。

2 完成第一步后,链接方可以发起数据请求

p2p可以合理的利用互联网的资源,比如两个人视频聊天。完全可以通过p2p打穿NAT后互发数据(QQ就是这么办的)。但是有的时候设备之间的直连性能很差,比如:电信的用户和移动的用户视频。这个问题是ISP厂商之间的过渡带宽太窄,就算是设备直连但是依旧速度不快。所以这里情况下需要自己搭建服务器中继(中继也不是完全无作用)。这个服务器就是网关的作用,一般有多个网卡。不同的网卡对接不同的ISP厂商,然后互相转发。

IPSec数据包在穿越NAT时会遇到一个很严重的问题,因为NAT机制会修改数据包的IP及TCP或UDP包头内容,而IPSec为了确保数据包的安全性,也会逐一检查每个IPSec的数据包,一旦数据包内容(包含包头)有任何变动,这些数据包就会被IPSec机制丢弃,所以IPSec数据包是无法穿越NAT的。但如果真是这样,那IPSec在使用上将受到严重限制,IPSec协议终于可以穿越NAT了,这项技术规范是在rfc3947中定义的,称为“NAT-Traversal”,简称为NAT-T。

从以上两个IPSec数据包的结构图,可以很清楚看到图16-77中在ESP及IP包头之间多了一个UDP包头,这是IPSec数据包可以穿越NAT的关键之处。当IPSec数据包有了这个UDP包头之后,IPSec数据包再穿越NAT主机时,NAT主机便可以修改IP包头及UDP包头的内容,但IPSec数据包的接收端并不会检查IP包头及UDP包头的内容,因而使得IPSec数据包可以正常穿越NAT主机。 那要如何在racoon下启用NAT-T的功能。以图16-78及配置文件为例,可以看到racoon的配置文件与以前的内容并无太大差异。主要差别在第5行到第16行及第20行,其中第9行及第10行的IP是L2TP服务器在因特网的公网IP,除此之外,其他设置步骤与之前的示例完全相同即可。

端口映射,其实就是常说的NAT地址转换的一种,
其功能就是把在公网的地址转翻译成私有地址,
采用路由方式的ADSL宽带路由器拥有一个动态或固定的公网IP,
ADSL直接接在HUB或交换机上,所有的电脑共享上网。
在局域网内部的任一PC或服务器上运行到花生壳内网穿透客户端,
此时域名解析到的IP地址是局域网网关出口处的公网IP地址,
再在网关处做端口映射指向监控设备即可


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/10693403.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存