NAT原理是什么?四种NAT类型对游戏联机的影响
NAT原理说穿了只有一句话:你家里十几个设备共用一个公网 IP,靠的就是它。路由器在中间做地址转换,出去的时候把内网地址换成公网地址,回来的时候再换回去。
这套机制解决了 IPv4 地址不够用的问题,但也带来一个副作用——外面的人没法主动连进来。游戏联机、语音通话、P2P 传输遇到的绝大多数"连不上对方",根源都在这里。
转换表是怎么工作的
路由器内部维护一张表,记录着"内网某设备的某端口"对应"公网 IP 的某端口"。
你的电脑用 192.168.1.5:50000 发出一个包,路由器把它改成 公网IP:60000 再发出去,同时在表里记一笔。对方回包到 公网IP:60000,路由器查表,知道该转回 192.168.1.5:50000。
关键在于:这个映射是你先发包才建立的。没有这条记录时,外面发来的包路由器不知道该给谁,只能丢掉。
四种 NAT 类型,宽松程度递减
差别在于路由器对"回包"的审查有多严:
| 类型 | 建立映射后,谁能发包进来 | 打洞难度 |
|---|---|---|
| 全锥型(Full Cone) | 任何人,只要知道那个公网端口 | 最容易 |
| 受限锥型(Restricted Cone) | 只有你曾发过包的那个 IP | 容易 |
| 端口受限锥型(Port Restricted) | 只有你曾发过包的那个 IP + 端口 | 较难 |
| 对称型(Symmetric) | 同上,且每个目标分配不同的公网端口 | 极难 |
对称型最难的原因值得单独说。前三种里,你对外的公网端口是固定的,所以可以通过第三方服务器告诉对方"来连我的 60000 端口"。对称型每连一个新目标就换一个端口,第三方告诉对方的那个端口号,等对方真来连时已经失效了。
游戏机把这套叫法简化了。PlayStation 的 NAT 类型 1/2/3,Xbox 的开放/中等/严格,大致对应宽松到严格。
怎么查自己是哪一种
游戏主机自带检测:PS 在网络设置里测试网络连接,结果会直接显示 NAT 类型;Xbox 在网络设置里看 NAT 类型。
电脑上可以用支持 STUN 检测的工具,原理是向一台公网服务器发包,观察映射规律来反推类型。
最简单的判断:如果你家宽带的公网 IP 和路由器 WAN 口显示的 IP 不一致,比如 WAN 口是 100.64.x.x 或 10.x.x.x 开头,那你根本没有公网 IP,走的是运营商级 NAT。
运营商级 NAT 是另一回事
CGNAT 是指运营商在你和公网之间又做了一层 NAT,成百上千个用户共用一个公网 IP。
这种情况下你怎么设置路由器都没用,端口转发、UPnP、DMZ 全部失效,因为真正做转换的设备不在你家里。国内很多宽带默认就是这样,尤其是后装的和移动网络。
唯一的解法是打电话给运营商要公网 IP,有些地区给,有些不给。
挂代理之后 NAT 会变好吗?通常更差
这是最需要纠正的一个误区。
很多人以为"网络问题挂个代理就好了",但对 P2P 联机来说,走代理往往让打洞变得更难:
- 你的流量从代理服务器出去,对方看到的是服务器的 IP 和端口
- 代理服务器同时服务很多人,对外的端口分配通常是动态的,行为接近对称型 NAT
- 更麻烦的是,打洞需要双方直连,而代理天然是中转结构
结果就是:原本 NAT 类型不错、能直连的人,挂上全局代理反而组不上队。
这不代表代理对游戏没用。它对客户端到游戏服务器那条链路是有效的,能改善延迟和丢包。但玩家之间的 P2P 连接是另一回事,代理帮不上忙,还可能添乱。
所以判断很简单:卡的是和服务器之间的延迟,代理有用;连不上队友、语音不通,那是 NAT 问题,要从路由器和运营商那边解决。 这两类问题的区分方法可以参考VPN vs 加速器:卡慢怎么选,选线路的思路见游戏经常卡顿,VPN怎么选择。
能改善 NAT 类型的几个办法
按有效性排序:
- 要公网 IP 是根本解法,其余都是在有公网 IP 的前提下才成立
- 开 UPnP,让游戏自己去路由器申请端口映射。大多数路由器默认关着
- 手动端口转发,把游戏需要的端口固定映射到你的设备
- DMZ 主机,把某台设备完全暴露出去。有效但有安全风险,不建议长期开
常见问题
NAT 类型严格会让网速变慢吗?
不会。NAT 类型影响的是"能不能建立直连",跟带宽和延迟没有直接关系。下载慢是另一套原因,别往这上面归因。
为什么改了路由器设置还是严格类型?
八成是运营商级 NAT。你的路由器 WAN 口如果拿到的是 100.64.x.x 这类地址,那它上面还有一层 NAT,你在自己路由器上做的任何设置都到不了那一层。
开 UPnP 安全吗?
有一定风险。它允许内网程序自动向路由器申请开放端口,恶意软件同样能用这个机制。家用环境下为了联机开着可以接受,但要确保内网设备都是可信的。
NAT 和代理有什么区别?
NAT 是地址转换,解决的是多设备共用一个公网 IP,工作在你的路由器上。代理是流量中转,解决的是访问路径问题,工作在一台远端服务器上。两者都会改变对方看到的来源地址,但目的完全不同。
用了代理之后还需要管 NAT 吗?
如果只是访问网站和看视频,不用管,那些都是客户端主动发起的连接。只有需要别人主动连你的场景才涉及 NAT,比如 P2P 联机、自建服务对外访问。