Skip to main content

FRP Or Cloudflare Tunnel 实现RDP远程访问

·1 min
HomeLab
Table of Contents

最近有个需求,需要在外面访问家中的设备。曾尝试询问过当地电信/联通是否可以给提供个公网 IP, 得到的回复是近期下发文件都不允许提供这样的服务了,搜索了下类似的解决方案,找到了 frp , 配置并使用了一段时间, 发现经常中断, 而且其中痛点是如果家中网络变化后(比如连接 VPN),FRP 就会中断无法重启,配置 frp 成为守护进程并自动重启又太麻烦,该方案就放弃了。后来发现了 Cloudflare 提供这个 ZeroTrust 服务也可以给我实现类似的功能, 而且并不需要太多的维护,家中网络变动也不会影响连接,最终就选择了 Cloudflare Tunnel 作为最终方案。

这里 frp 配置和 Cloudflare 的配置方案都记录下.

FRP
#

必要条件
#

  • 拥有公网 IP 的 VPS

服务端设置
#

去 github 下载最新的安装文件:

wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
tar -zxvf frp_0.61.1_linux_amd64.tar.gz
cd frp_0.61.1_linux_amd64/

创建一个配置文件frps.ini (貌似 ini 格式的配置后期会不在支持, 但 0.61.1 版本使用上倒是没什么问题)

[common]
bind_port = 1234
token = xxxx        <<<< token需要和client端一致

启动服务并放后台

./frps -c frps.ini &

客户端设置
#

我的客户端是 windows,所以同样去下 github 找了个 windows 版本的安装文件。

客户端的配置:

[common]
server_addr = x.x.x.x
server_port = 1234
token = xxxxx

[rdp]
type = tcp
local_ip = 0.0.0.0
local_port = 3389
remote_port = 1235          <<< 服务器1235 端口映射到家中PC的3389 端口

cmd里启动服务:

./frpc -c frpc.ini

这样你就可以访问服务器的 1235 端口, 远程到家中的电脑。

Cloudflare Tunnel
#

必要条件
#

  • Cloudflare 中需要有个自己的域名

Cloudflare 配置
#

开通 Cloudflare Zero Trust 服务, 选择 free plan, 据说 free plan 也是无限流量。

alt text

选择Cloudflared,并随便为该隧道起个名字.

alt text

alt text

下一步就是为家里的 PC 机安装 Clouflare 连接器, 我的是 windows, 所以选择 Windows, follow 它提供的步骤安装程序,以管理员身份运行一个命令, 运行完成后你家中的 PC 就会上线。

即使家中 PC 机重启也不需要重新配置, 因为你第一次运行后已经在后台运行一个服务,开机会自动启动。

alt text

PC 上线后, 下一步配置 RDP 服务, 子域自己起一个好听的名字, 域 选择在 cloudflare 中购买到的域名。

至此所有 Cloudflare 上的配置就完成,后续不需要特别关注。

alt text

远程访问
#

我这边随身携带的是一个 Mac 电脑, 所以在 Mac 电脑中需要先去安装个 Cloudflare 连接器:

brew install cloudflared

安装后在 terminal 里运行以下命令:

cloudflared access rdp --hostname xxx.xxx --listener 127.0.0.1:6689

其中 hostname 后面的域名为上面配置里的 子域.域名 , listenner 中的端口可以随机,为本地开放的端口。

打开 RDP 软件添加一个主机127.0.0.1:6689, 这样你就可以远程访问家中的设备。

alt text




Comments