青鸟网测
切换新版
登录 注册

NAT 类型在线检测

同端口多目标映射采样 + 出口交叉校验,输出带原始数据与判定依据的 NAT 行为报告

NAT 类型在线检测

在同一条 WebRTC 连接、同一个本地 UDP 端口上,向多个独立 STUN 目标发起请求, 比较各目标观测到的公网映射端点是否一致,据此判定映射行为(EIM / ADM / APDM)并推定 NAT 类型; 再与服务端出口 IP 交叉校验以识别 CGNAT、多出口等情况。

未开始 可信度:—

检测全程在浏览器本地完成,HTTP 回显仅用于校验当前访问出口 IP, 不上传任何 ICE candidate。

📊 检测结果

等待检测
点击「开始检测」后,浏览器会在同一连接内以同一本地端口向多个 STUN 目标发起探测, 并据此给出映射行为判定与原始数据。
— 未判定 映射行为:待检测
状态未开始
可信度—
总耗时--
成功轮次0/0

判定依据

尚未采样

可信度依据:尚未开始检测。

映射采样统计

公网映射端点
0
公网映射地址
0
STUN 映射候选
0
本地候选
0
TCP 候选
0

🔌 公网出口与映射行为(交叉校验)

HTTP 出口 IP(服务端观测)
--
STUN 公网映射地址
--
上游网络线索
--

运行环境:待检测。

说明:HTTP 出口 IP 为服务端在传输层观测到的客户端地址,可能已被反向代理改写; STUN 映射地址为 UDP 出口侧 NAT 分配的公网端点。二者不一致通常指向多层 NAT、CGNAT 地址池或多出口负载均衡。

📑 映射行为分析

每一轮采样都在同一条连接内完成,因此轮内所有探测共用同一个本地 UDP 端口; 「本地端口相同、映射端点却不同」只能由「映射取决于目标」解释。

暂无检测数据

· 等待检测。

📡 NAT 类型速览

NAT1/2/3 的映射行为相同,差异仅在过滤行为;浏览器端只能确认「锥形族」。

NAT0极佳
开放网络 / 无 NAT
本机直接持有公网地址,未经过地址转换。外部主机可直接访问,P2P、联机、语音视频均为最佳状态。
影响:无连接限制
建议:注意主机防火墙与暴露面,只开放必要端口
NAT1极佳
全锥(Full Cone)
同一内网端点映射到固定公网端点,且外部任意主机均可向该映射端点发包。
影响:P2P 下载、联机、语音通话均直连
建议:连接能力最强,同时暴露面也最大,建议配合主机防火墙使用
NAT2良好
受限锥(Restricted Cone)
映射固定;仅当内网主机先前向某外部地址发送过数据后,该地址才能回连(按 IP 限制)。
影响:多数应用可直连,部分联机需打洞
建议:一般无需处理;若个别应用失败,可开启 UPnP 或端口转发
NAT3一般
端口受限锥(Port Restricted Cone)
映射固定;回连同时受外部 IP 与端口限制(按 IP+端口过滤)。
影响:游戏联机与 P2P 易受影响,失败时依赖中继
建议:检查光猫桥接、路由器 UPnP、或申请公网 IPv4
NAT4较差
对称型(Symmetric)
映射随目标地址(乃至端口)变化,同一内网端点访问不同目标会得到不同的公网端点。
影响:P2P 打洞最困难,联机与通话多需 TURN 中继
建议:优先改善为公网 IPv4 / IPv6,或使用中继与内网穿透方案

❓ 未能确认的检测项

以下项目需要服务端配合或非浏览器协议能力,纯前端检测无法给出结论, 为避免误导,一律标注为未知,不做推测。

过滤行为(Filtering Behavior) 未知

判定「是否接受未经请求的外来数据包」需要 STUN 服务端从另一个 IP / 端口主动回连映射端点 (RFC 3489 Test II / III,RFC 5780 CHANGE-REQUEST)。浏览器 WebRTC 不允许构造这类请求。

因此:全锥 / 受限锥 / 端口受限锥 三条子类型在本页只做「族」级判定,不细分。

Hairpinning(回环穿透) 未知

需在 NAT 同一侧部署 STUN 服务端并观察内网主机能否访问本网络的公网映射地址 (RFC 5780 Test V)。公共 STUN 节点均位于外部网络,无法用于该测试。

影响:决定同一 NAT 后的两台设备能否直连,影响局域网内联机与内网穿透。

TCP 映射与过滤行为 未知

浏览器仅在配置 TURN over TCP 时才会发起 TCP 中继连接,无法对任意目标发起 TCP 的 STUN 探测, 因此本页只报告是否观察到 TCP host 候选,不对 TCP 映射行为下结论。

影响:部分企业网络屏蔽 UDP 后,仅 TCP 可用的场景需要单独评估。

🔬 原始探测数据

每条记录对应一次 STUN Binding 请求:探测目标 → 观测到的公网映射端点。 候选地址仅在浏览器本地分析,不会上传后端。

暂无探测数据

🎮 连接体验评估

依据本次映射行为判定给出,仅供参考。

🎮
游戏联机
待测
📡
P2P 下载
待测
📹
视频通话
待测
🔧
远程访问
待测

⚙ 检测流程与判定规则

检测流程

阶段动作采集到的数据
S0 环境检查 RTCPeerConnection 可用性、安全上下文(HTTPS / localhost)
S1 本地候选枚举 host 候选 → 内网 IP / 端口;浏览器启用 mDNS 时地址被混淆为 *.local
S2 映射行为采样(核心):单条连接挂载全部 STUN,以同一本地端口向多个目标发 Binding 请求,重复多轮 每个目标返回的公网映射端点(IP:端口)、归属目标、协议、单轮耗时
S3 出口交叉校验 服务端观测到的 HTTP 出口 IP,与 STUN 映射地址集合比对
S4 判定引擎 映射行为(EIM / ADM / APDM)、端口保持、映射地址数量 → NAT 类型
S5 未测项标注 过滤行为、Hairpinning、TCP 映射 → 统一标注「未知」并说明原因

判定规则

观察到的现象(同一本地端口,多个探测目标)映射行为结论
未收到任何 srflx 映射,且 host 候选本身是公网地址无转换开放网络 / 无 NAT
未收到任何 srflx 映射,host 候选为内网地址未知无法判定(UDP 受阻或 STUN 不可达)
各目标返回的公网映射端点完全相同EIM锥形族(NAT1/2/3,子类型未知)
各目标返回的映射地址不同ADM / APDM对称型(NAT4)
映射地址相同、但映射端口不同APDM对称型(NAT4)
单轮内仅 1 个目标响应(样本不足)未知无法判定,需重试

⚠ 边界情况与限制

多层 NAT(Multi-layer NAT)

光猫 + 路由器 + 代理叠加时,浏览器只能观测到最外层的映射结果。内层 NAT 的类型无法单独测量, 因此结论代表「整条路径的等效行为」。内层为对称型、外层为锥形时,整体表现为对称型。

运营商级 NAT / CGNAT

IPv4 地址紧张,宽带、校园网、企业网与移动网络的出口普遍使用 CGNAT。 典型特征是映射地址存在多个(地址池)或与 HTTP 出口 IP 不一致, 往往直接表现为对称型(NAT4)或接近 NAT4 的严格环境。

防火墙与企业策略

UDP 被完全屏蔽时采集不到任何 srflx,此时无法区分「没有 NAT」与「无法探测」,本页会标注为未知。 企业代理、SSL 检查设备也可能改写或拦截 STUN 流量,导致映射地址与真实出口不一致。

映射地址随线路变化

多 WAN、ECMP、负载均衡或 VPN 环境下,不同目标可能走不同出口,映射地址自然不同。 这会与对称型 NAT 的现象重合,本页只能给出「映射随目标变化」的事实,无法区分是 NAT 分配策略还是路由策略所致。

mDNS 与 IPv6 双栈

现代浏览器默认用 mDNS(*.local)隐藏内网 IP,导致「内网 IP/端口」不可见,属于隐私保护而非故障。 双栈环境下 host 候选可能包含公网 IPv6,此时即便 IPv4 侧存在 NAT,IPv6 侧也可能是直连。

浏览器实现差异

不同浏览器对 STUN 节点的选取、候选去重与统计字段(如映射端点的归属目标 url)支持程度不同。 当归属信息缺失时,本页仍可使用「同轮端点是否一致」做判定,但无法指出是哪个目标返回了哪个端点。

❓ 常见问题

为什么不能给出「全锥 / 受限锥 / 端口受限锥」的精确结论?

三者的映射行为完全相同(都是端点无关映射),差异只在过滤行为: 全锥允许任意外部主机回连,受限锥只允许曾被访问过的 IP,端口受限锥还额外限制端口。 测量过滤行为必须让服务端从另一个地址主动向映射端口发起连接,这在浏览器 WebRTC 中无法做到。 因此本页只能确认「属于锥形族」,并明确标注子类型未知。

为什么每轮采样要用同一条连接?

因为 ICE 会为每条连接分配不同的本地 UDP 端口。如果每个 STUN 目标各建一条连接,本地端口不同, 映射端口自然可能不同,此时比较端口毫无意义。只有在同一连接(同一本地端口)内比较, 「映射是否随目标变化」才是有效结论。

「映射地址变化」一定是对称型 NAT 吗?

不一定。对称型 NAT 会造成映射随目标变化,但多出口路由、ECMP、VPN 或代理也会造成同样的现象。 本页会在「上游网络线索」中标注映射地址数量与 HTTP 出口是否一致,帮助你区分, 但最终归属仍需结合网络拓扑判断。

为什么结果和某些「NAT 检测工具」不一致?

不少工具由客户端直接向自建 STUN 服务端发起 RFC 3489 全套测试(含 CHANGE-REQUEST),可以给出精细子类型; 浏览器端受安全策略限制无法复现。若需要精确到 NAT1/2/3,建议使用本地客户端工具或自建 STUN 服务端。

这个检测会收集我的数据吗?

不会。候选地址与映射结果只在浏览器本地计算与展示,不会上传;api/nat.php 仅回显服务端观察到的连接来源 IP, 用于交叉校验。STUN 节点只会看到探测来源地址,这是 STUN 协议的固有行为。

说明:本页通过单个连接内的多目标 STUN 采样观测 NAT 映射行为,并辅以 HTTP 出口交叉校验。 浏览器无法执行完整的 STUN 变更请求或让远端主动回连,因此过滤行为、Hairpinning 与 TCP 映射行为均标注为未知, 结论属于「映射行为推定」,不等同于客户端级 NAT 类型测试。