English version: Remote Desktop Across NAT and Firewalls (Without Port Forwarding)
如果 2025 年还有远程桌面教程告诉你"在路由器上转发 3389 端口",关掉它就行。端口转发是 1990 年代的方案,现在有更好的答案 —— 而且它把你的网络敞开给了整个互联网。
这篇文章讲清楚现代远程桌面工具怎么自动跨 NAT 和防火墙,以及为什么你再也不该在路由器上戳洞了。
端口转发的真实代价
转发端口的意思是告诉路由器:"任何到我公网 IP 的 3389 端口流量,都转给我的工作站。" 两个问题:
- 整个互联网都能访问那个端口。 僵尸网络每几小时扫一遍全部 40 亿 IPv4 地址。把 RDP 暴露到公网 24 小时内,你就能看到几千次登录尝试。
- 你家或办公室的网络边界多了个洞。 远程桌面服务上的任何漏洞,现在对全互联网都暴露。
光是 2017 年的 BlueKeep 漏洞,就让估计超过 80 万台公网可见的 RDP 服务器暴露在可蠕虫传播的远程代码执行风险下。它们本来不该开放公网,是被人按错误教程主动打开的。
现代工具怎么做
两台都在 NAT 后的设备能直接对话,前提是连接方式正确。这套技术叫 NAT 穿透,由三个协议配合:
STUN —— "我的公网 IP 是什么?"
STUN(NAT 会话穿越工具)让 NAT 后的设备问一台公网服务器:"我的流量从你那边看是什么样?" 服务器回复 NAT 映射出去的 IP:port。这样设备就知道自己的公网地址。
客户端 (192.168.1.5:54321) ──► STUN 服务器
◄── "你看起来是 203.0.113.7:48201"
ICE —— "把每条路径都试一遍"
ICE(交互式连接建立)收集设备所有可能的地址 —— 本地 IP、STUN 拿到的公网 IP、中转 IP —— 通过信令服务器跟对端交换。两边把所有组合都试一遍,哪条能通用哪条。
TURN —— "其它都不行时的兜底"
TURN(中转穿透 NAT)是回退方案。ICE 找不到直连路径时(典型场景是两端都在对称 NAT 后),流量走 TURN 中转。设计良好的工具里这条路径仍然端到端加密 —— TURN 服务器看不到内容。
为什么这套能跑通
两端都知道对方的公网 IP:port,并且都从各自 NAT 主动发出一个包之后,NAT 表项会保留足够久接收回程流量。这套俗称"UDP 打洞"。
客户端 NAT 映射表: 服务端 NAT 映射表:
54321 → 203.0.113.7:48201 53000 → 198.51.100.4:39102
两边各发一个出站包。
两边 NAT 都允许这些映射上的回程流量。
两端就能直连了。
听起来很脆弱。实际上,互联网上大多数连接都能这么穿通。
什么时候会失败
NAT 穿透失败的场景:
- 两端都在对称 NAT 后(家用路由器很少,蜂窝运营商和部分企业网络常见)。
- 网络完全屏蔽 UDP(一些极严格的企业防火墙)。
- 信令服务器连不上(少见,通常是出站代理配置错误)。
正经工具会自动回退 TURN,把会话保住。如果你撞上这种情况,看《NAT 穿透失败?P2P 连接问题排查》。
这对你意味着什么
- 你不需要碰路由器。也不该碰。
- 你不需要专门为远程桌面架一套 VPN。
- 你不需要公网 IP。
- 一款设计良好的工具,只要网络允许出站,从任何环境都能起会话。
这是 2025 年的远程桌面工具与 2010 年代"RDP + 端口转发"配置之间最大的差距。
接下来读什么
- 为什么这套能跑:《P2P 与中转架构远程桌面的技术深度对比》
- 如果不能跑:《NAT 穿透失败?P2P 连接问题排查》
- 给团队搭建:《给团队搭建远程桌面访问》