目录

1. 背景:为什么我们需要关心 NAT?

2. 四种 NAT 类型详解

2.1 全锥型 NAT (Full Cone NAT)

2.2 地址受限锥型 NAT (Address Restricted Cone NAT)

2.3 端口受限锥型 NAT (Port Restricted Cone NAT)

2.4 对称型 NAT (Symmetric NAT)

3. 不同 NAT 类型对常见应用场景的影响

场景一:BT / PT 下载

场景二:主机游戏联机(PS5 / Switch / Xbox)

场景三:Tailscale / ZeroTier 等 组网工具

场景四:视频通话(Zoom / 微信)

场景五:自建 WireGuard 回家

4. 如何检测你当前的 NAT 类型?

方法一:使用 natmap 或 stun 客户端

方法二:通过 Tailscale 管理后台查看

方法三:Windows 上使用 NAT Type Tester

5. 如何优化你的 NAT 类型?

6. 总结:一张表看懂四种 NAT


为什么 BT 下载慢?为什么 PS5 提示 NAT 类型严格?为什么 Tailscale 有时候走中继?答案都藏在你家路由器的 NAT 行为里。

1. 背景:为什么我们需要关心 NAT?

由于 IPv4 地址枯竭,绝大多数家庭和企业网络都依赖 NAT(网络地址转换) 让多个设备共享一个公网 IP。NAT 在节省地址的同时,也带来了一个副作用:它破坏了互联网“端到端”的直接通信模型

对于需要点对点(P2P)直接连接的应用(例如 BT/PT 下载、PS5/Switch 联机游戏、视频通话、Tailscale/WireGuard 等 组网工具),NAT 的类型直接决定了:

  • 能否成功建立直连?

  • 连接速度有多快?

  • 是否需要依赖慢速的中继服务器?


2. 四种 NAT 类型详解

根据 RFC 3489 及业界通用分类,NAT 对待 UDP 流量(因为 UDP 是 P2P 打洞的主角)的行为可以分为四类。从最宽松到最严格排列如下。

2.1 全锥型 NAT (Full Cone NAT)

行为:内网主机 (192.168.1.100:12345) 一旦向外发送一个 UDP 包,NAT 就建立一个固定的映射 (192.168.1.100:12345) ↔ (公网IP:55000)。此后,任何外部主机只要向 公网IP:55000 发包,都会被转发给内网主机。

比喻:你在墙上开了一个永久窗口,外面任何人都能通过这个窗口给你递东西。

P2P 能力:🌟🌟🌟🌟🌟 最强。打洞轻而易举,无需任何配合。

2.2 地址受限锥型 NAT (Address Restricted Cone NAT)

行为:映射是固定的 (192.168.1.100:12345) ↔ (公网IP:55000),但增加了IP 地址限制:只有那些内网主机曾经主动发送过数据包的外部 IP 才能通过 55000 端口访问进来。外部端口不限。

举例

  • 内网先向 8.8.8.8:8888 发包。

  • 那么 8.8.8.8 这个 IP 上的任何端口(比如 9999)都能向你的 55000 发包成功。

  • 但从未被你联系过的 1.1.1.1,即使发到 55000 也会被丢弃。

比喻:固定窗口,但只允许你曾经打过招呼的那条街上的人递东西(不限具体门牌号)。

P2P 能力:🌟🌟🌟🌟 较强。需要双方同时向对方 IP 发包(标准 UDP 打洞即可成功)。

2.3 端口受限锥型 NAT (Port Restricted Cone NAT)

行为:比地址受限更严格,不仅要求外部主机的 IP 是内网曾联系过的,还要求端口号也必须精确匹配。

举例

  • 内网先向 8.8.8.8:8888 发包。

  • 只有 8.8.8.8:8888 这个具体端点能成功向你的 55000 发包。

  • 即使是 8.8.8.8 这个 IP 的其他端口(比如 9999)发来的包,也会被丢弃。

比喻:你只和街角 3 号店的老板 左手 递过东西,该店的其他人或同一位置的右手都不认。

P2P 能力:🌟🌟🌟 中等。需要双方同时且精确地知道对方的 (IP, Port),这通常需要中间服务器交换完整的端点信息,且要求 NAT 的端口分配行为可预测。

2.4 对称型 NAT (Symmetric NAT)

行为与前三种完全不同——没有固定映射。内网主机 (192.168.1.100:12345) 每向一个新的目标地址 (IP, Port) 发送包,NAT 就分配一个全新的、独立的外部端口

举例

  • 内网向 8.8.8.8:8888 发包 → NAT 分配映射端口 55000

  • 同一内网向 1.1.1.1:9999 发包 → NAT 分配另一个完全不同的端口,比如 55001

  • 更关键的是,55000 这个端口只接受来自 8.8.8.8:8888 的回复,来自 1.1.1.1 的包即使发到 55000 也会被丢弃。

比喻:你每次见不同的人,都会从不同的、临时的秘密通道出发。对方想原路返回找到你几乎不可能。

P2P 能力:🌟 极弱。在典型的“一锥一对”场景中(一端是锥型 NAT,另一端是对称 NAT),打洞几乎必然失败。只有当两端都是对称 NAT 且配合端口预测等高级技巧时才有可能,但现实中成功率极低。


3. 不同 NAT 类型对常见应用场景的影响

场景一:BT / PT 下载

BT 下载依赖 DHT 网络和 P2P 直连来获取更多资源。

NAT 类型 上传/下载影响 说明
全锥型 🌟🌟🌟🌟🌟 最佳 可被大量远端 Peer 直接连接,上传速度快,做种贡献高。
地址受限锥型 🌟🌟🌟🌟 良好 需要你先去连接别人,别人才可回连。主动下载没问题,但别人主动找你的成功率降低。
端口受限锥型 🌟🌟🌟 一般 你需要主动连接每个 Peer,且必须匹配端口。部分客户端(如 qBittorrent)仍可工作,但连接建立变慢。
对称型 🌟 极差 每个 Peer 看到的你的端口都不同,DHT 宣告混乱。通常只能通过 tracker 获取有限资源,上传基本无望。

实用建议:如果你是 BT 重度用户,建议检查路由器 NAT 类型(通过 natmap 或 stun 测试),或尝试开启 UPnP / NAT-PMP,甚至更换为 OpenWrt 并设置为 Full Cone NAT。

场景二:主机游戏联机(PS5 / Switch / Xbox)

游戏机通常使用 STUN 或 TURN 来协调玩家之间 UDP 连接,NAT 类型直接决定联机体验。

NAT 类型 游戏内提示 联机表现
全锥型 NAT 类型 1(PS) / Open(Xbox) 可做主机,匹配快,语音稳定。
地址/端口受限锥型 NAT 类型 2(PS) / Moderate(Xbox) 可加入游戏,但无法做主机,偶尔匹配慢。
对称型 NAT 类型 3(PS) / Strict(Xbox) 只能和 NAT1/2 的部分玩家联机,经常匹配失败或无法语音。

真实案例:很多玩家抱怨 Switch 上《怪物猎人》无法联机,排查下来往往是运营商 CGNAT + 家用路由器对称 NAT 双重打击。

场景三:Tailscale / ZeroTier 等 组网工具

这些工具内部会尝试 UDP 打洞建立直连。如果打洞失败,会降级到中继服务器(如 Tailscale 的 DERP),带来额外延迟和带宽限制。

NAT 类型组合 直连成功率 是否降级中继
双方都是全锥型 100% 永不降级
一方全锥,一方地址受限 高(标准打洞) 偶尔
一方全锥,一方端口受限 中(需端口交换) 可能
一方全锥,一方对称 极低 几乎总是中继
双方对称 几乎为 0 总是中继

因此,如果你发现 Tailscale 节点之间总是显示 relay 状态,大概率其中一端是对称 NAT。

场景四:视频通话(Zoom / 微信)

大多数现代视频应用会通过 TURN 服务器(中继)兜底,但优先尝试 P2P。对称 NAT 会导致无法直连,从而依赖服务器转发,增加延迟和服务器成本。

场景五:自建 WireGuard 回家

如果你在 CGNAT 环境下(运营商侧已是对称/端口受限),再叠加家里的对称 NAT,WireGuard 的 PersistentKeepalive 也无法打通。此时必须借助一个公网 VPS 作为中转(即 WireGuard over WireGuard 或使用 Tailscale 的 DERP)。


4. 如何检测你当前的 NAT 类型?

方法一:使用 natmap 或 stun 客户端

bash

# 安装 stun 客户端 (Linux/macOS)
stun stun.stunprotocol.org

输出会显示 NAT 类型。

方法二:通过 Tailscale 管理后台查看

Tailscale 管理页面中,每个节点的 “NAT Type” 列会显示经过协调服务器评估的类型(如 Full ConePort Restricted Cone 等)。

方法三:Windows 上使用 NAT Type Tester

有些游戏社区提供小工具,可以快速测试。


5. 如何优化你的 NAT 类型?

方法 原理 效果
启用 UPnP / NAT-PMP 允许应用动态请求端口映射 可能将对称型转为端口受限,但并非万能
设置端口转发(虚拟服务器) 手动为特定内网端口开固定映射 对指定应用有效,但不能改善其他应用的 NAT 行为
路由器修改为 Full Cone 仅部分设备支持 OpenWrt、H3C 企业路由可配置;华为家用多数不可改
开启游戏模式 / NAT1 模式 某些家用路由器(如小米、华硕)的优化开关 可将 NAT 类型提升到地址受限甚至全锥
切换到 IPv6 彻底消灭 NAT 🌟 终极解决方案,前提是两端都有 IPv6 且应用支持

6. 总结:一张表看懂四种 NAT

NAT 类型 外部端口映射 外部主机访问条件 典型应用体验 打洞难度
全锥型 固定 无限制 BT 满速、游戏做主、Tailscale 直连 ⭐ 极易
地址受限锥型 固定 仅限曾联系的 IP BT 良好、游戏队员、Tailscale 偶中继 ⭐⭐ 较易
端口受限锥型 固定 仅限曾联系的 (IP, Port) BT 一般、游戏受限、Tailscale 常中继 ⭐⭐⭐ 中等
对称型 每个目标不同 仅限该目标 BT 残废、游戏 Strict、Tailscale 几乎总中继 ⭐⭐⭐⭐⭐ 几乎不可能

核心结论

  • 如果你重度依赖 P2P(下载、联机、组网),请务必检查并尽量优化 NAT 类型为锥型(最好是全锥型)。

  • 对称 NAT 是 P2P 的敌人。遇到它,要么换路由器,要么接受中继/代理方案。

  • 运营商 CGNAT 本身就是大型对称 NAT,叠加家中的 NAT 会让情况更糟。此时 IPv6 或公网 VPS 中转是合理出路。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐