一句话定义:NAT(Network Address Translation,网络地址转换)让一整个家庭或公司的多台设备共用一个公网 IP 上网;内网穿透(NAT traversal)则是在这套"外人进不来"的规则下,想办法给外面的人开一扇能进来的门。
原理:一个前台收发室的比方
一栋写字楼(你家局域网)里有几十个房间(手机、笔记本、NAS、摄像头),每个房间有自己的内部编号(内网 IP,比如 192.168.x.x)。但整栋楼对外只有一个门牌号(公网 IP)。
楼下的前台就是 NAT。房间里的人往外寄信,前台会在登记本上记一笔:"这封信是从 3 号房寄出的,回信给 3 号房。"回信到了,前台翻登记本,准确转交。但关键在登记本:只有内部先寄出去过的,才有记录。
所以外面的人想直接给 5 号房寄信,前台查不到记录,不知道 5 号房是谁,直接丢掉。这不是故障,是设计如此——IPv4 地址不够用,全世界设备共用一个地址池是刚需;顺带还带来好处:外部无法主动扫描到你家设备,天然多一层隔离。
问题来了:你想在公司访问家里的 NAS,或让同事打开你本地跑的模型 Demo,怎么办?
三条路,本质都是想办法让登记本上有记录
| 方式 | 做法 | 代价 |
|---|---|---|
| 端口映射(port forwarding) | 直接跟前台说:以后找"门牌号+某个编号"的,一律送到 5 号房 | 需要你有公网 IP 且能改路由器配置;等于固定的门常年开着 |
| 打洞(hole punching) | 5 号房先主动往外寄一封信,登记本上就有了记录,外面的人趁记录还在赶紧回信,双方接上 | 需要一台公网服务器帮忙"对暗号"(如 STUN 服务),且遇到严格型 NAT 会失败 |
| 中继(relay) | 双方都只跟前台外的中转站通信,由中转站转交 | 一定能通,但流量绕路,速度和成本都吃亏 |
工程上的穿透工具通常把后两种组合起来用:能打洞就打洞,打不通自动降级到中继。这个"先试直连、不行再中转"的协商过程,就是常说的 ICE 框架。
和相邻概念的区别
端口映射是"改 NAT 的配置",需要权限,是一次性、静态的;内网穿透是"不改配置,靠通信技巧绕过 NAT",通常是动态的、由内网侧主动发起。反向代理则是应用层的转发,穿透解决的是"能不能连上",反代解决的是"连上之后怎么分发和加密"。VPN 更像是把整台设备接进内网,粒度比穿透粗。
对从业者的实际意义
做 AI 的人几乎躲不开这件事:本地起个推理服务或 WebUI 想给别人看、远程连公司开发机、调试部署在边缘设备上的模型、从外面拉家里的数据集。普通人则更常见于远程看摄像头、远程桌面、NAS 和游戏联机。
最后一句提醒:穿透等于在墙上开了门,请务必配好鉴权——别把无密码的管理端口直接暴露到公网。具体工具的能力和配置方式,以官方页面为准。
