2024.1.4日
先说结论 win客户端工具,点下面着附件直接下! 绿色版
NatTypeTester.rar
(477.23 KB, 下载次数: 1219)
重点:
1.测试结果 NAT type: 结果是 FullCone 这样就是最好
2.测试结果 NAT type: 结果是 Symmetric 最差,啥也不行.
3.由于Stun服务器地址需要自己找,也没有长久免费的.
百度谷歌 现在搜出来的9成9都不能用了.
所以给大家一个自力更生的方法.
Stun的开源项目 有服务器端和客户端. 我们注意用服务器端
https://www.stunprotocol.org/
打开网址后就有下载链接,已windows为例 解压出来后
stunserver.exe ;stunclient.exe ;stuntestcode.exe
你得向有服务器端朋友借用下,让他运行下stunserver.exe
并且在服务器上开tcp端口3478,和所有udp端口,也可以自己改具体看stun.conf
Stun全球服务器地址
2024年1月4日1.1.1.1号段 扫描结果
---------- 分割线 ---------------------
2023年4月测试可用的服务器地址
- stun.voipbuster.com
- stun.sipgate.net
- stun.voipbuster.com
- stun.voipstunt.com
- stun.callwithus.com
- stun.internetcalls.com
复制代码
这几天因为开会,很多机场沦陷了看群里 在什么线路支持不支持游戏模式 (就是UDP 模式)
而这个模式还有人叫 NAT1 NAT2 NAT3
我相信很多人会因为这个事情迷茫。
NAT123 又是什么梗呢?
这是ps游戏机里的自带的线路检测功能,就跟各种电视盒一样,自带的线路检测
因为ps是游戏机,即时强的游戏都是 通过UDP类型 传输的 。
所以,他自带了一个 NAT类别 分类 1 2 3 级
我以前一直迷茫这个级别是根据什么划分的,后来就没在研究了
网上各种说法都有,也不一样。 有人说 是经过了几层转发,也人说是设备层级
以前并没有特别仔细研究这个,反正至今我也是没弄明白。
但有一点共识! NAT 3 是最差!
如果是NAT3 在ps中 会有 派对无法聊天、某些游戏不能网战或网战不容易搜到人等等各种问题。
- 1.全锥型(Full Cone)
- 2.限制锥型(Restricted Cone), 或者说是IP受限锥型
- 3.端口受限锥型(Port Restricted Cone), 或者说是IP + PORT受限锥型
- 4.对称型(Symmetric)
复制代码
--------------------------------------------
上面说了NAT123是什么梗,下面说下对于没有PS的朋友,UDP到底重要不重要。
UDP 上文说了!游戏很多很多游戏都是UDP协议,其次还有P2P 也有UDP什么迅雷 bt这样的工具。
比如你和我下同一个种子,我的嗷嗷嗷跑,你那里没速度。 。 这是就PS中的NAT3 感觉
我们可以通过一个工具 来检测UDP NatTypeTester
打开这个工具后,直接点get就行
注意!看下图
最好的图,
本机的端口 0.0.0.0 57110
本地的端口 113.209.79.41:57110 (这个就是 你访问外网后的ip 和端口)
外网的端口和本机的端口一致!
无法P2P的图
本机端口 与外网不同(而且IP地址也不同)
这种情况大内网比较多见,大内网有N个IP 端口又不知道绑定在那个IP了 (下面有详解)
同为 FullCone 见上上图(最好) 与 下图
最好的公网ip端口 与本机一致! 在PS里属于NAT1
而下图 虽也是 FullCone 但端口不同 依然属于 NAT2
比如你游戏模式下 看到虽然是 FullCone 但ps里依然说你是NAT2
而这是最糟糕的问题,被封了udp或者限制了UDP反正就是不给用。
这问题也是在大内网中常见的,因为大内网了,UPD端口不知从那个IP出去的。
出去了之后,就再也回不来了,迷路了。
----------------------------------------------
NAT有4个类型
它们分别是:
NAT1、NAT2、NAT3、NAT4。从 NAT1 至 NAT4 限制越来越多。下面分别讲解。
NAT1: Full Cone NAT,全锥形NAT,这是最宽松的网络环境,你想做什么,基本没啥限制IP和端口都不受限。
NAT2: Address-Restricted Cone NAT,受限锥形NAT,相比NAT1,NAT2 增加了地址限制,也就是IP受限,而端口不受限。
NAT3: Port-Restricted Cone NAT,端口受限锥型,相比NAT2,NAT3 又增加了端口限制,也就是说IP、端口都受限。
NAT4: Symmetric NAT,对称型NAT,对称型NAT具有端口受限锥形的受限特性,内部地址每一次请求一个特定的外部地址,都可能会绑定到一个新的端口号。
也就是请求不同的外部地址映射的端口号是可能不同的。这种类型基本上就告别 P2P 了。
----------- 详解 -----------------------------
Full Cone: (Nat 1)
内网主机建立一个UDP socket(LocalIP:LocalPort) 第一次使用这个socket给外部主机发送数据时NAT会给其分配一个公网(PublicIP:PublicPort),以后用这个socket向外面任何主机发送数据都将使用这对(PublicIP:PublicPort)。此外,任何外部主机只要知道这个(PublicIP:PublicPort)就可以发送数据给(PublicIP:PublicPort),内网的主机就能收到这个数据包
Restricted Cone: (Nat 2)
内网主机建立一个UDP socket(LocalIP:LocalPort) 第一次使用这个socket给外部主机发送数据时NAT会给其分配一个公网(PublicIP:PublicPort),以后用这个socket向外面任何主机发送数据都将使用这对(PublicIP:PublicPort)。此外,如果任何外部主机想要发送数据给这个内网主机,只要知道这个(PublicIP:PublicPort)并且内网主机之前用这个socket曾向这个外部主机IP发送过数据。只要满足这两个条件,这个外部主机就可以用自己的(IP,任何端口)发送数据给(PublicIP:PublicPort),内网的主机就能收到这个数据包
Port Restricted Cone: (Nat 3)
内网主机建立一个UDP socket(LocalIP:LocalPort) 第一次使用这个socket给外部主机发送数据时NAT会给其分配一个公网(PublicIP:PublicPort),以后用这个socket向外面任何主机发送数据都将使用这对(PublicIP:PublicPort)。此外,如果任何外部主机想要发送数据给这个内网主机,只要知道这个(PublicIP:PublicPort)并且内网主机之前用这个socket曾向这个外部主机(IP,Port)发送过数据。只要满足这两个条件,这个外部主机就可以用自己的(IP,Port)发送数据给(PublicIP:PublicPort),内网的主机就能收到这个数据包
Symmetric: (Nat 4)
内网主机建立一个UDP socket(LocalIP,LocalPort),当用这个socket第一次发数据给外部主机1时,NAT为其映射一个(PublicIP-1,Port-1),以后内网主机发送给外部主机1的所有数据都是用这个(PublicIP-1,Port-1),如果内网主机同时用这个socket给外部主机2发送数据,第一次发送时,NAT会为其分配一个(PublicIP-2,Port-2), 以后内网主机发送给外部主机2的所有数据都是用这个(PublicIP-2,Port-2).如果NAT有多于一个公网IP,则PublicIP-1和PublicIP-2可能不同,如果NAT只有一个公网IP,则Port-1和Port-2肯定不同,也就是说一定不能是PublicIP-1等于 PublicIP-2且Port-1等于Port-2。此外,如果任何外部主机想要发送数据给这个内网主机,那么它首先应该收到内网主机发给他的数据,然后才能往回发送,否则即使他知道内网主机的一个(PublicIP,Port)也不能发送数据给内网主机,这种NAT无法实现UDP-P2P通信。
详解
用语定义
1.内部Tuple:指内部主机的私有地址和端口号所构成的二元组,即内部主机所发送报文的源地址、端口所构成的二元组
2.外部Tuple:指内部Tuple经过NAT的源地址/端口转换之后,所获得的外部地址、端口所构成的二元组,即外部主机收到经NAT转换之后的报文时,它所看到的该报文的源地址(通常是NAT设备的地址)和源端口
3.目标Tuple:指外部主机的地址、端口所构成的二元组,即内部主机所发送报文的目标地址、端口所构成的二元组
Full Cone NAT:所有来自同一 个内部Tuple X的请求均被NAT转换至同一个外部Tuple Y,而不管这些请求是不是属于同一个应用或者是多个应用的。除此之外,当X-Y的转换关系建立之后,任意外部主机均可随时将Y中的地址和端口作为目标地址 和目标端口,向内部主机发送UDP报文,由于对外部请求的来源无任何限制,因此这种方式虽然足够简单,但却不那么安全.
Restricted Cone NAT: 它是Full Cone的受限版本:所有来自同一个内部Tuple X的请求均被NAT转换至同一个外部Tuple Y,这与Full Cone相同,但不同的是,只有当内部主机曾经发送过报文给外部主机(假设其IP地址为Z)后,外部主机才能以Y中的信息作为目标地址和目标端口,向内部 主机发送UDP请求报文,这意味着,NAT设备只向内转发(目标地址/端口转换)那些来自于当前已知的外部主机的UDP报文,从而保障了外部请求来源的安 全性
Port Restricted Cone NAT:它是Restricted Cone NAT的进一步受限版。只有当内部主机曾经发送过报文给外部主机(假设其IP地址为Z且端口为P)之后,外部主机才能以Y中的信息作为目标地址和目标端 口,向内部主机发送UDP报文,同时,其请求报文的源端口必须为P,这一要求进一步强化了对外部报文请求来源的限制,从而较Restrictd Cone更具安全性
Symmetric NAT:这是一种比所有Cone NAT都要更为灵活的转换方式:在Cone NAT中,内部主机的内部Tuple与外部Tuple的转换映射关系是独立于内部主机所发出的UDP报文中的目标地址及端口的,即与目标Tuple无关; 在Symmetric NAT中,目标Tuple则成为了NAT设备建立转换关系的一个重要考量:只有来自于同一个内部Tuple 、且针对同一目标Tuple的请求才被NAT转换至同一个外部Tuple,否则的话,NAT将为之分配一个新的外部Tuple;打个比方,当内部主机以相 同的内部Tuple对2个不同的目标Tuple发送UDP报文时,此时NAT将会为内部主机分配两个不同的外部Tuple,并且建立起两个不同的内、外部 Tuple转换关系。与此同时,只有接收到了内部主机所发送的数据包的外部主机才能向内部主机返回UDP报文,这里对外部返回报文来源的限制是与Port Restricted Cone一致的。不难看出,如果说Full Cone是要求最宽松NAT UDP转换方式,那么,Symmetric NAT则是要求最严格的NAT方式,其不仅体现在转换关系的建立上,而且还体现在对外部报文来源的限制方面。
已经存在的穿透方案
UPNP,STUN,Teredo等都无法支持对称NAT(第4类NAT)穿透。
新方法
新方法的UDP打洞基于端口预测和限制TTL的值。也适用于其他的NAT类型。
新方法一共有3个阶段。
第一阶段
假设两个通讯的终端分别为echo client和echo server。
F1:echo client跟S1通讯,然后S1获得其经过NAT a的端口号。
F2:S1返回获得的端口号给echo client
F3:echo client给S2发一个包。包括上次S1返回的nat之后的端口号。S2记录下相关的NAT端口信息。
第二阶段
第二阶段是echo server跟S1和S2通信。流程跟echo client类似。
第三阶段
经过之前的通讯,服务器可以获得echo client和echo server两次nat的端口号。比如echo client第一次nat端口为5361,第二次nat端口为5362,那么有理由猜测,第三次的端口为5363.经过测试发现端口的变化多是有一定的规律,递增,递减,跳跃等。
F7: 基于前面两个阶段的通信,可以预测打洞的端口和打洞的模式。发送给echo server.
F8: 基于预测的端口,echo server发送大量的包。这些包包括一个固定的目的端口和低的TTL值。
F9: 同理,服务器将预测的端口发给echo client,跟F7类似。
F10: 基于预测的端口,echo client发送大量固定端口的数据包到预测的端口。之后,echo client 转换到接受模式。
如果预测的端口刚好被大量的包都命中。那么就可以建立通信。
这种方法从安全的角度来说是利用了目前路由器实现对称NAT的方法中存在端口可以预测的漏洞,利用这个漏洞来实现打洞。加上一次发送大量的包,来增加命中的概率。
|