内网穿透:如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)
内网穿透:如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)
在没有公网IP的情况下,如何实现远程桌面连接?本文将详细介绍如何借助Cloudflare的零信任隧道(Zero Trust Tunnel)服务,实现内网穿透,从而通过远程桌面协议(RDP)连接到没有公网IP的电脑。
远程桌面协议(RDP, Remote Desktop Protocol)是Windows系统(家庭版除外)自带的远程桌面连接功能,无需安装额外客户端即可实现远程桌面访问与控制。但是,如果被控制的电脑没有公网IP且不在同一个局域网中,该如何使用这个协议进行远程连接呢?本文将介绍如何借助Cloudflare的零信任隧道服务实现这一需求。
准备工作
- 需要有两台电脑:一台配置好远程桌面用于被远程访问,另一台用于连接这台电脑。
- 需要注册Cloudflare账号并绑定一个域名。
操作步骤
进入Cloudflare零信任控制台
打开Cloudflare控制台,依次进入
ZeroTrust
->Networks
->Tunnels
。新建Tunnel
点击
Create Tunnel
,选择Select Cloudflared
,给隧道起个名字,然后保存。下载并安装cloudflared客户端
在两台电脑上都下载并安装cloudflared客户端,并复制命令行代码。
在被控制的电脑上运行命令
打开命令提示符(以管理员身份运行),输入刚才复制的命令。配置成功后应该能在
Connectors
列表中看到一个“连接者”。配置域名(外网访问与内网映射规则)
点击网页上的
Next
,选择一个域名,协议选择RDP,URL输入localhost://3389
(因为rdp默认端口是3389),然后保存隧道。在控制者电脑上进行远程连接
打开命令提示符,输入命令:
cloudflared.exe access rdp --hostname test.letmefly.xyz --url rdp://localhost:1234
然后使用mstsc连接
localhost:3089
,输入用户名和密码完成远程连接。
原理解释
整体原理
被控制电脑没有公网IP也没有处于控制者电脑所在局域网中,控制者电脑想要连接它但是访问不到它。但是Cloudflare有公网IP,因此被控制电脑要安装cloudflared客户端并输入命令,其实是被控制电脑与cloudflare服务器建立了一个持久性连接(隧道)。控制者电脑访问配置的域名,流量到达cloudflare服务器,借助cloudflare服务器实现与被控制者的通信。
新建Tunnel的作用
新建Tunnel就是新建一个cloudflare与被控制者之间的“隧道”,二者通过“隧道”保持持久化连接。
被控制者电脑为何要安装cloudflared客户端并输入命令
安装客户端是为了建立与cloudflare服务器之间的隧道。那串命令是为了让cloudflare服务器知道这台电脑要连接哪个隧道。
配置域名规则的作用
配置了访问规则,cloudflare才知道流量到来时如何转发、通过哪个隧道以及什么规则转发给哪个机器。例如,配置中
Subdomain
是test
,Domain
是letmefly.xyz
,Type
是RDP
,URL
是localhost:3389
。因此在控制者电脑上使用RDP协议访问test.letmefly.xyz
时,流量会被转发到被控制者的localhost:3389
上。访问者电脑上的配置
访问者电脑上输入的命令相当于把对
localhost:1234
的RDP访问转发到test.letmefly.xyz
上,因此mstsc后输入localhost:1234
流量就可以被转发到test.letmefly.xyz
然后被通过隧道转发到被控制机器的localhost:3389
上,从而实现远程桌面连接。