okaa

如何实现外网 RDP 远控(frp)

使用 frp 在任意网络下实现远程桌面控制。

为什么使用 RDP

RDP 是 Windows 自带的协议。相比市面上的远程桌面软件,如 Todesk、Anydesk、向日葵等,有以下优势:

为什么使用 frp

RDP 仅支持同 IP 段使用,为了在外网下实现远控,我们需要用 frp 方法给内网做穿透。

frp 是一个反向代理软件,体积轻量但功能强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持 HTTP、TCP、UDP 等众多协议。
用 frp 实现外网 RDP 远控的原理,就是让被控端与服务器相连,我们通过服务器来间接连接被控端,从而实现远控。

准备

服务端配置

首先,查看服务器架构:

arch

参考 frp 的 Releases 页面,选择符合自己架构的版本下载(比如我是 X86_64 架构,即选择 amd64):

wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz

下载后,解压并改名:

tar -zxvf frp_0.36.2_linux_amd64.tar.gz && mv frp_0.36.2_linux_amd64 frp

我们看一下 frp 文件夹内的文件:

cd frp && ls

其中,frps 与 frps.ini 是服务端的程序与配置文件(s 结尾代表 server),而 frpc 与 frpc.ini 是客户端相关的(c 结尾代表 client),我们现在暂时不用,可以删除:

rm -f frpc frpc.ini

接下来,我们修改 frps.ini 文件:

vim frps.ini
[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin

编辑完成后,按 Esc 后输入 :wq 保存退出。

为了在后台运行 frp 服务,我们可以使用 nohup 命令:

nohup ./frps -c frps.ini &

如果看到以下输出:

nohup: ignoring input and appending output to 'nohup.out'

即表示服务正常运行。我们也可以用 jobs 命令,查看正在运行的服务。

为了测试服务端是否配置成功,我们可以访问 x.x.x.x:7500,使用上面配置的用户名和密码,看看能否顺利进入仪表盘。如果访问不了仪表盘,也有可能在服务器的防火墙处放开相关端口。

被控端配置

还是参考 frp 的 Releases 页面,选择符合自己架构的版本下载。下载后解压重命名,可删除 frps 和 frps.ini 文件。打开 frpc.ini 文件:

[common]
server_addr = x.x.x.x
server_port = 7000
token = 12345678
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7001
[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7002

接下来,我们配置自定义的规则:

RDP(Remote Desktop 协议)在 Windows 上默认的端口号为 3389,协议 TCP。 SMB(Windows 文件共享协议)默认端口号为 445,协议 TCP。

为了在后台运行 frpc,我们创建脚本 frpc.vbs,将以下内容粘贴进去:

frpc.vbs

set ws=WScript.CreateObject("WScript.Shell")
ws.Run "c:\frp\frpc.exe -c c:\frp\frpc.ini",0

注意可能需要修改路径。

将 frpc.vbs 放入 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 目录内,即可实现开机自启动。

如果想测试使用,可以直接运行脚本,或重启自动运行。

远控端配置

控制端是移动设备

如果需要在手机、iPad 上远控电脑,则需要先安装 Microsoft 远程桌面 App,然后执行以下步骤:

  1. 在 App 内右上角点击 + – 添加电脑
  2. 电脑名称 填入 IP:remote_port,例如 x.x.x.x:7001,点击返回
  3. 账户名称 填入被控端电脑的账户密码,点击返回

如果一切配置正常,这时候应该可以成功远程控制了。

控制端是 Windows

直接在开始菜单搜索打开 远程桌面连接,填入 IP:remote_port 例如 x.x.x.x:7001,按提示输入用户名密码,即可实现远程控制。

退出移动版