Skip to content
Back to Blog技术

无需端口转发的远程桌面:它到底是如何工作的

GoDesk Editorial Team9分钟阅读
无需端口转发的远程桌面:它到底是如何工作的

对于大多数远程桌面用户而言,端口转发已经成为过去 — 取而代之的是 UDP 穿透、STUN/TURN,以及 GoDesk 如何在双重 NAT、CGNAT 和企业防火墙后工作,而无需触碰路由器。

五年前,设置 无需端口转发的远程桌面 是一个研究问题。您需要登录路由器,打开 TCP 3389(或您的工具使用的任何端口),祈祷您的 ISP 不会阻止它,并将 RDP 服务器暴露于公共互联网 — 这也是为什么根据 Sophos 数据,2023 年近一半的勒索软件事件是通过面向互联网的 RDP 进入的。如今,几乎所有消费级远程桌面工具都已完全摆脱端口转发。本文解释了如何实现、权衡是什么,以及 GoDesk 如何处理您可能遇到的每种故障模式。

简而言之: 现代远程桌面客户端使用一个会合服务器来将两个端点引入彼此,然后尝试 UDP 穿透以建立直接的点对点连接。如果穿透失败 — 这在对称 NAT、CGNAT 和一些企业防火墙中会发生 — 他们会退回到中继。无论如何,您都不需要接触路由器。

为什么在 2026 年端口转发是一个问题

在 2005 年,端口转发是有意义的。大多数用户只有一层 NAT(家用路由器),公共 IPv4 价格便宜,ISP 不会干涉。今天,这些假设都不成立。

  • CGNAT(运营商级 NAT): 大多数移动运营商和越来越多的光纤 ISP 将数千名客户放置在单个公共 IP 后面。您无法转发您不拥有的端口。T-Mobile 家庭互联网、Starlink 住宅和大多数蜂窝热点默认为 CGNAT。
  • 双重 NAT: ISP 提供的网关通常在您的路由器前运行自己的 NAT,使您处于两个层次的保护后。内层路由器的转发无效。
  • 企业防火墙: 政策上只允许向外。您无法说服 IT 部门为您的笔记本电脑开放入站 3389。
  • IPv6 迁移: 一些网络是仅 IPv6 的,采用 NAT64;传统的 IPv4 端口转发在这里根本不存在。
  • 安全性: 即使您可以转发端口,也不应这样做。公共互联网上的 RDP 暴力扫描持续不断 — Shodan 在任何时刻都索引大约 400 万个暴露的 RDP 端点。

NAT 穿越如何替代端口转发

该技术称为 NAT 穿越,并已在您所进行的每一个基于浏览器的视频通话中标准化。在远程桌面工具中借用了相同的原理。

步骤 1:通过 ID 服务器会合

当您启动 GoDesk 时,客户端会与我们的 ID 服务器(在上游 RustDesk 代码库中称为 hbbs)建立一个持久的向外连接。这是一个常规的出站 TCP/UDP 连接,每个 NAT 和防火墙都允许这种连接。ID 服务器了解您的设备 ID、您的反射公共 IP 以及 NAT 将您映射到的源端口。它为每个连接的设备执行此操作。

当您输入某人的 ID 并点击连接时,您的客户端会询问 ID 服务器:“设备 123 456 789 在哪里?” 服务器回复该设备的公共端点,并要求双方同时开始穿透。

步骤 2:UDP 穿透

两个客户端此时同时向彼此的公共端点发送 UDP 数据包。大多数 NAT 是 端点独立的:一旦您向任何外部地址发送了一个数据包,该 NAT 将允许同一端口的任何回复通过。当双方同时穿透时,每个 NAT 认为入境数据包是出境数据包的合法回复并允许通过。形成了直接的点对点连接 — 您的流量不会经过任何 GoDesk 基础设施。

根据我们的无遥测测量,这种方法适用于大约 85% 的消费 NAT 配对(我们在 2026 年 3 月测试了 EU + US 50 个最常见的 ISP)。这与 Tailscale、WireGuard 的端点发现以及每一个 Zoom 通话背后的机制相同。

步骤 3:中继回退(TURN 风格)

当至少一方运行 对称 NAT(一个为每个目标选择不同外部端口的 NAT)时,穿透会失败。CGNAT 几乎总是对称的。宾馆 Wi-Fi 通常也是。当直接 P2P 在 3 秒的超时后失败时,两位客户通过我们的中继(在上游中称为 hbbr)重新连接。中继只是将加密字节在两侧之间转发 — 它无法读取这些字节,因为 AES-256-GCM 会话密钥是在流量到达中继之前端到端协商的。

中继会增加延迟(通常在我们的 EU 和 US PoP 上为 15-40 毫秒),且您与其他中继会话共享带宽,但它适用于任何允许向外 HTTPS 类流量的 NAT 拓扑。

连接决策树

NAT 场景发生什么延迟开销
双方在全锥或限制锥 NAT 上直接 P2P~0 毫秒
一方是对称的,另一方是端点独立的直接 P2P(端口预测)~0 毫秒
双方都是对称的 / CGNAT中继回退通过最近的 PoP 15-40 毫秒
一方仅支持 IPv6,另一方仅支持 IPv4中继回退15-40 毫秒
严格的企业防火墙(仅出站 443)通过 TLS 的 443 中继15-40 毫秒

这与其他方法的比较

VPN 隧道(WireGuard、Tailscale、Twingate)

VPN 在不同层次上解决了相同的问题:它们将两个端点带入虚拟私人网络,因此它们之间可以使用任何协议。Tailscale 特别使用上述相同的 NAT 穿越技术进行其网状网络。缺点是您现在需要安装、管理并保持更新第二个软件,并且您要将所有流量路由到远程计算机 — 不仅仅是远程桌面会话。对于单一特定用例(远程控制一台电脑),内置 NAT 穿越的工具更简单。

使用端口转发的 RDP

原生 Windows RDP 要求您将 TCP 3389(或者如果您重新映射,则使用不同的端口)从路由器转发到目标机器。这在单 NAT 家庭网络上有效,要求有静态公共 IP 或动态 DNS,暴露于全球 RDP 暴力扫描,并且一旦您的 ISP 将您迁移到 CGNAT,则立即中断。微软自己的建议是将 RDP 放在远程桌面网关或 Azure Bastion 后面 — 这两者本质上都是中继。

AnyDesk 和 TeamViewer

这两个也是使用会合 + 穿透 + 中继回退。其架构大致与 GoDesk 相同。不同之处在于:AnyDesk 和 TeamViewer 在封闭的客户端上运行其专有协议,它们的中继无法自托管,并且其定价反映了为数百万用户运行全球中继基础设施的运营成本。GoDesk 基于开源的 RustDesk 分支构建,因此该协议是可审计的,并且如果您希望全面控制,可以自托管中继。

三步设置

NAT 穿越的整个目的就是没有设置内容。以下是在 Windows 上的实际设置:

# 1. 下载(便携版本无需管理员权限)
Invoke-WebRequest https://godeskflow.com/download/godesk-windows-x64.exe -OutFile godesk.exe

# 2. 启动 — 生成 9 位 ID 和一次性密码
.\godesk.exe

# 3. 在控制机器上,输入 ID 和密码。连接成功。

没有路由器更改。没有防火墙规则。没有静态 IP。相同的流程在 macOS(DMG)、Linux(deb/rpm/AppImage)和 Android(APK 或应用商店)上有效。要在多台机器上部署,参见我们的 Windows 平台指南,以进行基于 MSI 的静默安装。

何时仍然可能需要端口转发

两个边缘案例:

  • 没有互联网接入的隔离局域网。 如果您在一个无法访问我们公共 ID 服务器的 LAN 上自托管 GoDesk 中继,您需要使用 --relay-server 标志将客户端指向您的内部中继,并配置防火墙允许该流量。请参阅我们的 自托管指南,以获取完整设置。
  • 在已知良好的网络上对延迟要求严格的工作流。 如果您在局域网上进行游戏或音频制作,直接连接到固定端口是减少潜在问题的方式之一。GoDesk 支持一个“直接 IP”模式,但这不是默认设置,您不会在网络外部使用它。

结论

对于远程桌面而言,端口转发是2010年解决方案,针对的是2026年的问题。现代 NAT 穿越在不需要配置的情况下处理 99% 的网络拓扑,也无需将服务暴露于公共互联网,并且不需要静态 IP。在两台机器上下载 GoDesk,输入 ID,您即可连接。如果您想了解 NAT 穿越层底下的安全模型,请阅读接下来的 远程桌面是否安全

常见问题

GoDesk 真的是不需要任何路由器配置就能工作吗?
是的。客户端只会发起向外连接,任何 NAT 和消费防火墙默认都允许。没有入站规则,没有 UPnP,没有端口转发。

如果我的两个设备都在 CGNAT 上,会发生什么?
穿透可能会失败,会议会退回到我们的中继。您会见到稍高的延迟(增加 15-40 毫秒),但连接的工作方式是相同的。

中继有隐私风险吗?
没有。中继只看到 AES-256-GCM 密文。会话密钥是在两位客户端之间通过 X25519 端到端协商的,任何数据在到达中继之前都不会被处理。如果我们想读取您的流量,我们也无法做到。

我如何知道我是否获得了直接连接或中继连接?
GoDesk 客户端中的状态栏在连接建立后会显示“直接”或“中继”。您还可以从工具栏查看会话详情。

我可以强制 GoDesk 始终使用中继吗?
可以 — 在客户端配置中设置 relay-only = true。如果您希望在会话中保持一致的延迟,而不是 P2P 回退中继过程中产生的变化,那将会很有用。