NAT与NAPT

区别在于,NAT只转换IP包中的IP地址,NAPT不仅转换IP包中的IP地址,还对IP包中TCP和UDP的Port进行转换。
NAT使用期间独占公网IP,利用率太低。NAPT可以使多台私有网主机利用1个NAT公共IP就可以同时和公共网进行通信。
所以现在说的NAT一般都是NAPT。

一、带防火墙的NAT

NAT一开始的功能只是一种映射,其功能是将内网IP、端口 映射到 公网 IP 端口;而防火墙的功能是过滤进出内网的数据,带防火墙功能的NAT,即带有过滤功能的NAT,即有限制数据功能的NAT。

(1)锥形NAT(cone NAT)
锥型的NAT,内网IP、端口{X:y} 唯一映射到公网IP、端口{A:b},即 {X:y}——>{A:b}

与公网主机建立通信时,将每个公网主机看做一点,这所有的点就相当于一个面,而因为映射 {X:y}——>{A:b}是唯一的,由点{A:b}到面建立连线形成的就是一个锥形

(2)对称NAT(Symmetric NAT)
与不同的公网主机{IP:port}通信时,内网的IP、端口{X:y} 都会为这一次的通信建立一个唯一的映射:{X:y}——>{IP:port},即每一次的通信映射和公网主机的数量是一一对应的,所以称为对称。

二、cone NAT(锥形NAT)
(1)Full cone NAT 完全圆锥型

如上图所示,内网IP、端口{X:y} 与公网IP、端口{A:b} 建立映射,并绑定 {X:y}——>{A:b}

绑定建立后,无论外部数据来自于哪个公网主机(M、P、S),都允许与内网主机建立通信

(2)Restricted cone NAT 受限圆锥型

在完全圆锥型建立了映射 {X:y}——>{A:b} 的基础上,此时,公网的主机想要访问内网主机增加了一条限制

即:内网主机( {X:y}——>{A:b} )访问过公网主机 P,则主机P可访问内网主机{X:y},且端口不受限{P:q}、{P:r};而非公网主机P的 M、S均无法访问内网主机

(3)Port Restricted cone NAT 端口受限圆锥型

在受限圆锥型对IP有限制的基础上,继续增加对端口的限制,不仅要是内网主机( {X:y}——>{A:b} )访问过公网主机 P,还要细化是哪一个端口

即: 映射{X:y}——>{A:b} 访问过公网主机{M:N},则{M:N}可访问内网主机{X:y},同为公网的主机S则不可访问内网 【受限圆锥型】
映射{X:y}——>{A:b} 访问过公网主机 {P:q},则{P:q}可访问内网主机 {X:y},同一个IP的{P:r}也不能访问内网主机【端口受限圆锥型】

三、Symmetric NAT(对称NAT)

与不同的公网主机{IP:port}通信时,内网的IP、端口{X:y} 都会为这一次的通信建立一个唯一映射,

即: 内网主机{X:y} 访问过 公网主机{M:n},生成一个映射 {X:y}——>{C:d},公网主机{M:n}就可以访问内网主机{X:y}同为公网的主机S不可访问内网
内网主机{X:y} 访问过 公网主机 {P:q},生成一个映射 {X:y}——>{A:b},公网主机{P:q}就可以访问内网主机{X:y},同一个IP的{P:r}却不可访问内网

四、目前比较常用的NAT类型是完全锥型NAT:
1.首先目前绝大多数的路由器都是非对称型NAT(Cone NAT),所以P2P技术才能正常使用。 对称/非对称的区别主要在于:网关设备在实现NAT时,对于内网某主机的若干个UDP连接请求,网关设备对应地在外网上所建立的UDP端口数量。对称NAT是一个请求对应一个端口,非对称NAT是多个请求对应一个端口(象锥形,所以叫Cone NAT)

2.对称型NAT(Symmetric NAT)是无法实现P2P技术
————————————————
版权声明:本文为CSDN博主「Rookie_Manito」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:javascript:void(0)

NAT的四种类型

(转自:javascript:void(0))
简述

基于UDP的P2P应用需要考虑NAT的类型,因为不同的NAT组合的穿透的方式并不一致,有的能通, 有的不能通。

一般来讲, NAT可以分为四种类型,分别是:

1, 全锥型(Full Cone)

2, 受限锥型(Restricted Cone), 或者说是IP受限锥型

3, 端口受限锥型(Port Restricted Cone), 或者说是IP + PORT受限锥型

4, 对称型(Symmetric)

其中1,2,3属于同一种类型,都是锥型,区别只是路由器的不同的安全策略。

还有些NAT不属于这四种中的任何一种,就不在本文的讨论范围了。

为什么有四种类型的NAT

NAT缓解了IPV4地址不够用的问题,同时也也带了限制,那就是NAT外部的主机无法主动跟位于NAT内部的主机通信,NAT内部主机想要通信,必须主动和公网的一个IP通信,路由器负责建立一个映射关系,从而实现数据的转发, 这就是NAT的工作原理。

假定

公网server1 ip是1.1.1.1, 监听端口是1111

公网server2 ip是2.2.2.2, 监听端口是2222

NAT router ip是8.8.8.8

NAT内部client是192.168.0.3

client发送数据的时候,不管是tcp还是udp必须本地绑定一个端口,一般来讲,这个过程都是自动的。

假定client(192.168.0.3, 100)给 server(1.1.1.1, 1111)发送报文,报文到达路由器,路由器在自己的公网ip上开辟一个端口800,从而建立了一个隐射关系(8.8.8.8, 800)<--->(192.168.0.3, 100), 建立映射关系后,所以(192.168.0.3, 100)和(1.1.1.1, 1111)之间的报文都通过这个映射关系进行转发。

NAT之间主要的区别分两种情况讨论

1:

client(192.168.0.3, 100)和server(1.1.1.1, 1111)在路由器上建立好映射关系后,如果client(192.168.0.3, 100)又给(2.2.2.2, 2222)发送数据,路由器该怎么处理呢?

1, 复用旧的映射关系(8.8.8.8, 800)<--->(192.168.0.3, 100)和(2.2.2.2, 2222)通信, 这就是锥型(Cone) NAT

2, 创建新的映射关系(8.8.8.8, 801)<--->(192.168.0.3, 100)和(2.2.2.2, 2222)通信, 这就是对称型NAT

注: (8.8.8.8, 801)只是举例,到底用什么端口取决于路由器的端口管理策略,总之是另外的一个端口,有的路由器有多个公网IP,不同的IP也会参与到这个映射关系中。

2:

client(192.168.0.3, 100)和server(1.1.1.1, 1111)在路由器上建立好映射关系后,如果这个时候路由器(8.8.8.8)在800端口上收到从另外一台server(2.2.2.2, 2222)发来的数据,是不是应该转发给(192.168.0.3, 100)呢?

有四种情况:

1, 无条件转发给(192.168.0.3, 100), 这就是全锥型(Full Cone)NAT。

2, 如果(192.168.0.3, 100)之前给(2.2.2.2)发送过数据,则转发, 这就是受限锥型(Restricted Cone)。

3, 如果(192.168.0.3, 100)之前给(2.2.2.2, 2222)发送过数据,则转发, 这就是端口受限锥型(Port Restricted Cone)。

4, 丢弃报文,拒绝转发, 这就是对称型NAT。

从上面也描述也可以看出,安全性系数, 对称型 > 端口受限锥型 > 受限锥型 > 全锥型

不同NAT的穿透性

NAT有10种组合

全锥型 全锥型 ✓
全锥型 受限锥型 ✓
全锥型 端口受限锥型 ✓
全锥型 对称型 ✓
受限锥型 受限锥型 ✓
受限锥型 端口受限锥型 ✓
受限锥型 对称型 ✓
端口受限锥型 端口受限锥型 ✓
端口受限锥型 对称型 ✘, 无法打通
对称型 对称型 ✘, 无法打通
————————————————
版权声明:本文为CSDN博主「mycloudpeak」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:javascript:void(0)

NAT类型科普及一些简单提升NAT类型的方法

(转自:https://www.right.com.cn/forum/thread-199299-1-1.html)
首先可以在百度百科了解到什么是“NAT”,传送门→“NAT科普”
然后呢,看了那么多我们大概就知道了一些关于NAT的基本知识,比如说“定义”、“功能”、“实现方式”及“类型”

提升NAT类型的好处:
浏览网页、观看视频、游戏等更顺畅,下载速度更稳定快速,
特别是对那些玩ED2K/PT下载、PS4/XBox主机游戏的,
提升NAT类型后更有可能获取到HigtID、更容易进入游戏房间连线等。

好了,废话有点多了。
要提升NAT类型,我们必须知道NAT的4个类型:NAT1、NAT2、NAT3、NAT4。
它们分别对应(详情见百度百科):
NAT1 → Full Cone NAT
NAT2 → Address-Restricted Cone NAT
NAT3 → Port-Restricted Cone NAT
NAT4 → Symmetric NAT

说些比较重要的前话:路由器少一层是一层,这样越有可能得到NAT1和NAT2这两类NAT类型。
一般建议家里的网路是以下两种拓扑类型:
1、光猫桥接→主路由(拨号连接外网用)→副路由(纯AP模式,扩展信号)
2、光猫拨号(直接充当主路由)→副路由(纯AP模式,扩展信号)
这样的好处是桥接和纯AP是不进行NAT的,而是SWitch,所以不会导致多一层NAT。

如果你的网络是NAT1,那这是最宽松的网络环境,你想做什么,基本没啥限制;
如果是NAT4的话,这是最严格的网络环境,可能会玩不了游戏、下载都没速度;
一般,我们家里的设备都是通过光猫桥接+无线路由器拨号的形式连接到外网的,
此时,基本是NAT2和NAT3,正常情况对看网页、游戏及下载都没有过多的限制。

但是,现在个别网络游戏严格要求你的网络环境必须是“NAT2”以上(NAT2和NAT1),才能进行游戏。
而你的网络环境又是"NAT3”及“NAT4",那到底该怎么办呢?
下面我们介绍一些简单提升NAT类型的方法,其实就是进行NAT穿透(NAT Traversal):
1、如果你的路由器有启用“Full Cone”、“STUN”、“TURN”、“ICE”、“uPnP”等功能,果断都启用了。
如果没有的话,你的路由器差不多可以扔了,因为现在的路由器“uPnP”基本是标配,连这都没有,那你的路由器是有多古董。
2、如果你的路由器没有以上功能,那可以找下有没有“DMZ”功能(什么是“DMZ”,请问度娘 → DMZ ),
有的话,可以启用它,并把你要提升NAT类型的主机IP地址设置好。
(一般建议有“Full Cone”、“uPnP”等,就不要开"DMZ”了,除非你是PS4/XBox这类游戏主机要提升NAT类型)
3、在Windows上把以下三个服务设置为自动启动,并启动该服务:
一般这三个服务都会被奇虎360等带启动项优化的软件当做无用启动项被“优化”成禁止启动。
怎么手动设置为自动启动,并启动,详情问 → 度娘

Function Discovery Provider Host
Function Discovery Resource Publication
SSDP Discovery

4、在 Windows 防火墙,放行你需要提升NAT类型的软件或者游戏程序(EXE程序或者UWP程序),
如果你不会放行,也可以直接关闭 Windows 防火墙。(一般不推荐这样做,还是老话,不懂问“度娘”)
第4步很重要,这步没做,等于其它的全是在做无用功。
5、如果你的设备是通过电脑共享网络的形式上网的,建议把这个服务也打开:UPnP Device Host
以上,能弄的都弄了,这样你的网络环境就会越好,甚至NAT1都没有问题。

这是我通过以上设置,进行NAT穿透+公网IP一枚,测得的结果:

妥妥的NAT1

最后附上NAT类型测试工具:
NAT类型测试.zip (490.51 KB, 下载次数: 6388)

P.S.:
1、如果能找运营商要到外网IP,这是最好的,没有公网IP的话可以打电话给客服,
说“我家的宽带怎么没有公网IP啊,我需要在家里安装远程监控,没有公网IP的话不行,如果不给我公网IP,我只好退宽带换别家的了。”
态度强硬点,最好一开始就把客服的工号也要了,说完上面的,再补上“不给就投诉你。”;
2、还有一种最笨的就是直接电脑拨号上网,Windows 直接把防火墙关了,只要你的是公网IP,妥妥的基本都是NAT1;
3、如果要不到公网IP,能提升到NAT2,这样也很不错了;
4、如果你是要提升PS4/XBox这类游戏主机的NAT类型,建议以上能做的都做了。