本文章永久分享链接: https://tflow.top/nat-type-tester
选读的前置资料
- NAT类型 科普
市面上的检测NAT类型的方式有python脚本、在线网页、软件。由于NAT、STUN的复杂性,所以仅推荐在软件中检测你的设备的NAT类型,且只推荐使用RFC5780检测。RFC3489已过时。
目前github上star数最高的RFC5780检测工具为: https://github.com/HMBSbige/NatTypeTester
但除了NAT1到NAT4,我们也不能忘了NAT0,即公网IPv4/IPv6,所以我们先检测设备是否支持IPv6或拥有公网IPv4,然后再使用NatTypeTester来检测NAT类型。
设备是否拥有公网IPv4
确认设备是否拥有公网 IPv4 地址是一个非常实用且关键的步骤,尤其是在进行远程游戏联机(如主机串流、P2P联机)、搭建服务器或NAS时。
现在公网IPv4极度稀缺,所以如果根据以下步骤确定你拥有公网IPv4, 你的设备作为P2P主机是最优选择 。如果确定没有公网IPv4,也不用去跟运营商掰扯,一般只有加钱能解决。
最便捷的检测方法就是访问 https://dyebean.com/ 来检测是否有公网IP,检测结果有就是有,没有就是没有,如图所示,我的设备没有公网IPv4 。

如果你有了公网IPv4,你就直接就是标准的NAT0了。任何NAT类型的设备都能与你建立P2P。下面的检测也无需进行了。
设备是否拥有公网IPv4(土法)
如果 上面的IPv4检测网站失效了,才考虑使用这个土方法来进行检测 。
第一步,访问 https://www.itdog.cn/localhost/ ,请记住此处本机的IPv4,如图所示。

第二步,点击WIN+R,在弹出的文本框中,输入cmd,点击确定。
第三步,在弹出的命令行窗口中输入:tracert baidu.com,等待它执行完成。不要关闭命令行窗口。
最后,访问 https://chat.deepseek.com/ 来提问,提问文案如下:
我提供以下信息,请据此确认我的设备是否有公网IPV4?
1、我在线IP查询网站查到的我的设备IP为XXX(此处粘贴第一步查到的IP)
2、我的设备执行tracert baidu.com的结果如下:
[此处粘贴第三步的结果]
提问例子如下:

这样deepseek就可以直接确认你的设备是否拥有公网IPv4。
设备是否支持IPv6
双方都拥有原生、可路由的IPv6地址的情况下,这是最完美的P2P场景,连接会异常顺畅。
所以哪怕设备支持IPv6,也得进行下一步的NAT类型检测,因为对方如果不支持IPv6,仍然需要考虑双方的NAT类型。
直接访问 https://test-ipv6.com/ ,只要显示支持IPv6,你的设备就支持IPv6了。我的设备的结果如下:

如果这里没有显示IPv6,可以尝试自查,是不是路由器或光猫没有开启IPv6或支持IPv6。当然,这个自查的前提是你的网络为家庭宽带。
比如我家宽的光猫由移动提供,光猫接入了一个中兴路由器。我要想使用IPv6,就必须在光猫的管理页面 关闭IPv6的防火墙 ,如下图所示。我的中兴路由器比较新,所以默认支持IPv6,不用修改配置。

如果在光猫管理页面都没看到有IPv6的相关配置,请质问你宽带的运营商,为什么不给你们分配公网IPv6 ,现在IPv6是家宽的标配。
如果在路由器管理页面没有看到IPv6的相关配置, 请购买更新的支持IPv6的路由器 ,推荐中兴的。比如我的是中兴巡天AX3000。路由器的IPv6相关的默认配置一般无需修改。
RFC5780检测
访问 https://github.com/HMBSbige/NatTypeTester/releases 下载NatTypeTester。
如果无法正常访问以上链接,可 点击本链接下载。
解压后,打开文件夹,点击x64.exe即可运行工具。如果它提示你需要安装依赖,照做即可。
正常运行后,请确保使用的是RFC5780,如图红框所示。
选择了RFC5780与UDP,软件页面才会有 mapping behavior与filtering behavior两种NAT行为模式。如图所示:

STUN server不要选择第一个,即stun.hot-chilli.net,因为其支持IPv6,无法正常检测IPv4的NAT类型。
选好server后,点击右下角的test,等待检测结果出来。我的结果如图所示:

可见我的RFC5780的结果就是NAT3。下面提供索引列表,可据此确定你的NAT类型。
- mapping和filtering结果均为EndpointIndependent:
NAT1 - mapping结果为EndpointIndependent,filtering结果为AddressDependent:
NAT2 - mapping结果为EndpointIndependent,filtering结果为AddressAndPortDependent:
NAT3 - mapping和filtering结果均为AddressAndPortDependent,:
NAT4 - 其他结果:
NAT4,反正 比NAT3还差,比NAT4好一些 。
建议除了 第一个STUN server外,都测一测。取出现最多次的结果。
总结
恭喜你顺利完成以上步骤!你现在可以确定:
-
- 你的设备是否支持IPv6
-
- 你的NAT类型是以下其中一种
- NAT0:有公网IPv4
- NAT1
- NAT2
- NAT3
- NAT4
根据 P2P可行性分级表 可知,准备P2P的双方如果都是NAT4,就100%无法成功NAT打洞。此时,强烈建议阅读 这篇文章 来 改善NAT类型,说不定会有意外收获。(比如网络更流畅了,光猫不发烫了)