最近好好把玩了互联网几大善人的服务,从O家的到C家的,来更新个不常见的,就是Cloudflare家的WebRDP服务,目前中英文教程很少,只有一个英文的manual,GPT啥的都没问得到。而且现在处在beta版,用起来还是有点小难度的。WebRDP跟一般rdp不一样,就是在浏览器就可以远程桌面,不需要客户端的那种。
首先假定各位看官都有大善人家的Cloudflare账号,有域名,没有就去注册去,域名一年没几个钱,C家的账号不要钱,再把域名的NS服务指向c家,就是C家来管理域名。并且拥有了隧道,毕竟有隧道你才有链路可以连到主机上面去。

我相信有了以上配置的童鞋,平时连个个人nas啥的也没啥难度吧,虽然网速没这么理想,凑合也能用用。但是webrdp,也就是浏览器端的rdp端配置有点小复杂,目前还处在beta版本,具体使用方法见👇的链接。
按照说明的流程,解释一下
1. Connect the server to Cloudflare
意思就是你要有个隧道,被控制windows的机器通过tunnel可达,但不要求一个网段。例如运行cloudflare隧道节点的IP是192.168.1.5,远程桌面的ip的是10.10.0.5,只要192.168.1.5可以访问10.10.0.5就可以。
2. Add a target
这个目标是跟tunnels在一个栏目下,用过tunnels,自然也能找到目标。

添加一个目标,就是你被控端的IP地址,主机名可以随便写,注意一下主机名不会成为域名,访问也用不到,就是个标志而已,你自己能够区分就行。IPV4填你机器的ip地址,而且得手输,下拉框只是个摆设,当你的地址段在可以路由到地址(cidr)里,自然而然会弹出选项,例如你输192.168.1.5,会自动弹出192.168.1.5/24(default)。至于ipv6,估计差不多,只不过我没用。这一步

3. Create a DNS record
这一步是创建DNS记录,官方文档这么说的“You can create either an A
, AAAA
, or CNAME
record:”,之前没看到这一小段,英语不好,哈哈哈哈。
一看下面给个3个记录,傻呵呵的建了A,AAAA之后,再建CNAME报错了。实际上只需要选择一个,推荐选CNAME。这一步是一个小坑,尤其我这种英语不好的,一看3个选项,刷刷刷全给设了。

最后这么一段文字,The DNS record does not need to point to an active destination IP address or hostname; the DNS record just needs to be valid. Cloudflare’s RDP proxy will handle the routing to the correct RDP target. 所以CNAME的指向随便设,比方我就直接写test.net,但是代理必须选上。
注意哈,这里不要在tunnel里建隧道,建议直接新开域名,这个webrdp跟tunnels的公共主机名没关系。
4. Create an Access application

这一步没什么,选择自托管就好了

接下来选择域名,这个域名就是我们刚刚设置cname的域名。

建议会话持续时间长一点,否则经常输验证码也是烦人的。在别的机器上可以用隐私模式用。

浏览器呈现选择RDP就行,目标主机的话建议两个都选上(要不然刚才加target加了干嘛),身份验证最好选上。

下面添加策略,就是谁能访问,建议选择email,邮箱收验证码之后才能登陆。

后面全部点默认,至此隧道设置完毕。这时候以为大功告成,直接输那个网址,哦吼,哈哈哈哈哈

下面才是硬核的。仔细一看还有第6步
6. Connect as a user
其他都是废话,最核心的要义是你需要通过这个URL来接入WebRDP,而不是之前注册的域名。
https://<app-domain>/rdp/<vnet-id>/<target-ip>/<port>.
- APP-DOMAIN就是我们刚刚设的cname的域名,比方webrdp.xuzp.net
- <vnet-id>是网络id,待会细讲
- <target-ip>就是被控端的ip地址,这个应该好理解,而且不用转义,比方192.168.0.5,就输192.168.0.5
- <port>是3389,如果你的rdp不是这个端口,可以另外写,我相信一般人不会改吧,特别是内网,都映射出来用啦,3389变33389也没多大意义了,但是做好密码规划。
硬核的来了,这个<vnet-id>需要通过curl命令来获得。首先创建用户API令牌,别问我什么,反正后面要用到。我相信经常网上冲浪的童鞋知道api令牌是个啥东西,有了api令牌,就不需要输密码了,有了这个字符串,你就可以代表这个账户操作了,所以令牌要管好,特别github好多源代码里带令牌的,哈哈哈哈。

CLOUDFLARE家的令牌管理特别细致,可以规定哪些令牌能干什么,我们这里选“读取所有资源”的模版令牌,否则一项一项勾选权限太麻烦了。

这里要选允许所有区域,否则下一步不给你过去。

之后你就得到了这样一个页面。可以获得你的令牌号

把curl的代码拷贝下来,接下来按照这个页面教程来获得vnet-id,原来的格式是这样的
curl "https://api.cloudflare.com/client/v4/accounts/<账户id,这一段不要动>/tokens/verify" \
-H "Authorization: Bearer <API令牌,这一段不要动>"
做小的改动,把网址结尾的/tokens/verify换成/teamnet/virtual_networks
curl "https://api.cloudflare.com/client/v4/accounts/<账户id,这一段不要动>/teamnet/virtual_networks" \
-H "Authorization: Bearer <API令牌,这一段不要动>"
如果你是windows用wsl,如果你用linux/mac,直接命令粘贴这段代码,你会得到这样一个输出,其中第一个id,2f928一长串就是你的vnet-id了

最后你可以通过下面的地址接入远程rdp了,其中2f928那一串就是刚刚的vnet-id了
https://webrdp.xxxxxxxx.net/rdp/2f928c06-xxxx-xxxx-xxxx-xxxxxxxxxx/172.20.71.181/3389
如果配置正确,你将会的得到这个页面,输入策略允许的ip,得到验证码

密码正确之后

输入你机器的用户名和密码就可以访问啦

至此,web端的远程桌面配置完成,虽然速度很鸡肋,但是应急还是可以凑合的,至少比每次需要cloudflared输命令,然后再rdp登陆方便。网址可以记下来,用的时候直接登录。安全性高的电脑不要乱用哈,毕竟理论上cloudflare是可以拿到你的账户密码的。