使用 Cloudflare Tunnel 实现远程访问 RDP

经验 · 04-24

最近把家里的迷你小主机从 Ubuntu 又重装回了 Windows 系统。考虑到大多数小服务都迁到云服务器上了,这台机器目前只跑着局域网的 Jellyfin,换回 Windows 的话好处是可以更方便地 RDP 上去,GUI 操作还是比命令行要轻松得多。加上赛博菩萨 Cloudflare 提供了免费的 Tunnel,除了 frp 之外也是一种可以一试的远程访问方式。 (这不得梭几股 NET 支持一下 > <

创建和配置 Tunnel

在 Cloudflare 控制台找到 ZeroTrust 功能并开通,可以选择免费的 Plan,此时可能必需要绑定一种支付方式,不过不会实际扣钱。然后创建 Tunnel。因为主机是 Windows 系统所以这里只能选择 Cloudflared 类型的 Connector, Linux 可以选择 WARP 这个还没有尝试过。

2024-04-24T07:33:16.png

接下来要配置家庭主机,根据提示,下载相应系统的 Cloudflared 程序并运行即可,运行的命令会包含一个 token 用于连接到创建的这个 Tunnel,页面中有非常详细的提示。对于 Windows 来说,这步操作后系统中就会多了一个 Cloudflared 的服务,并且开机自启。

然后继续在 CF 控制台中配置如何访问这个 Tunnel。选择 Public Hostname,如果域名本身 DNS 托管在 CF,直接填一下就行。因为目的是转发 RDP,所以 service type 这里要选择 RDP。默认端口是 3389。

2024-04-24T07:38:51.png

使用客户端连接

客户端机器上也要安装 Cloudflared ,然后连接到这个 Tunnel。这里 hostname 是刚才控制台指定的域名, url则是映射到本机。

.\cloudflared.exe access rdp --hostname lab.example.com --url rdp://localhost:3089

接下来就可以在远程的这台客户端机器上 RDP 连接 homelab 啦。比如通过 Windows 的远程桌面或者 mac 上的 MS Remote Desktop。注意机器地址就是 localhost:3089,对应上面命令中配置的 url。

RDP 的一些踩坑

整个配置 Tunnel 和客户端连接的流程其实非常简单,按照 CF 控制台页面的提示一步一步操作就行。但是因为是新装的 Windows 系统,反倒踩了一些 RDP 的坑。

  1. 要确保系统防火墙允许 3389 端口
  2. 用于登录的用户需要在 Remote Desktop User中,可以通过 此电脑 → 管理 → 本地用户和组 → 用户 → 找到你的账户 → 隶属于 查看是否包含 Remote Desktop User,如果不在,需要操作添加一下。
  3. 在 Windows 设置-账户中,需要取消“仅允许 Windows Hello 登录”,注销登录后让这个账号使用密码登录到系统中一次。这样远程的时候,可以使用账号密码登录。比如如果已经登录了微软账号 [email protected],那么 RDP 时,使用 [email protected] 和这个账号的微软密码登录即可。RDP 的密码不是 Windows Hello 的 PIN。
  4. 这个我没有遇到过,但看网上有人遇到过,可以一并检查一下:

    打开“本地组策略编辑器” Windows 设置 → 安全设置 → 本地策略 → 安全选项 → 网络访问: 本地帐户的共享和安全模型;从“仅来宾”修改为“经典”即可

都配置完成之后连上 RDP 的那一刻感觉还是不错的,happy RDP!

homelab
Powered by Typecho, theme Jasmine