使用 frp 转发 Windows 远程桌面

该教程基于阿里云的轻量应用服务器(因为最近弄了个阿里云的轻量服务器)用来作为 frp 服务器,总体来说效果不错。而且这个服务器峰值带宽 200 Mbps,不限流量(理论上),所以甚至可以跑 Moonlight 串流,延迟可以接受。本教程会讲述如何在 Linux 系统的服务器上搭建 frp 服务器,并解决 Windows 远程连接的一些小问题。本教程在阿里云版 Linux 上演示,不同的发行版均可参考。
frp 原理
(以下内容部分参考自 gofrp.org 文档)
frp 主要包含两个组件:客户端(frpc)和服务端(frps)。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。
对于类似远程桌面、Minecraft 服务器等简单的端口转发,服务端只需要配置鉴权密钥、一个监听端口,并开放防火墙相应端口即可。对于具体要转发的端口和协议,需要在客户端设置。
服务器配置
博主新薅的羊毛是阿里云的轻量应用服务器,在选择服务器的时候尽量选择离自己 IP 地址比较近的服务器,博主在这里选择的是华东上海地区服务器,这样理论上能够降低远程桌面的延迟。
阿里云轻量应用服务器界面
在构建实例的时候,我选择的是 Linux 系统配合阿里云特供版的宝塔面板,总体来说算是比较好用。
实例创建完成后,用服务器的外网 IP 登录宝塔面板,第一次登录会对账号密码进行设置,可以浏览器保存一下,进入后可以开启两步验证器。
我们会将 frp 安装在 /opt 目录下。代码用于自动获取最新版本号并下载,请在 bash 解释器下,以 root 身份运行这七行代码。(后文均在 root 账户下操作)
1 | cd /opt/ |
1 | version=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/fatedier/frp/releases/latest) |
1 | version=${version##*/v} |
1 | wget https://github.com/fatedier/frp/releases/latest/download/frp_${version}_linux_amd64.tar.gz |
1 | tar -xzvf frp_${version}_linux_amd64.tar.gz |
1 | mv /opt/frp_${version}_linux_amd64 /opt/frp |
1 | cd /opt/frp/ |
完成后,我们需要准备两个端口,并在阿里云服务器的防火墙中开放对应的端口(如57777端口),分别是 frp 握手端口(TCP 协议)和远程桌面的映射端口(TCP 和 UDP)。我这里是将服务器系统防火墙关闭,只用阿里云的防火墙开放端口。建议至少留一个防火墙,不要全部开放。
然后,需要给 frps 写一个配置文件。在某次 frp 更新后,默认的配置文件使用 toml 格式,但我感觉旧版的 ini 配置更方便,这里还是使用 ini 配置文件。创建 frps.ini 文件,并写入以下内容:
1 | [common] |
然后运行下 frps 试试:
1 | ./frps -c frps.ini |
如果没有明显报错,就没问题了。先不急着关掉,可以用客户端连接试试。
客户端连接-使用 frpmgr
Windows 可以直接用 frpmgr。这是一个 frp GUI 客户端,支持以服务模式自启动,我用着感觉不错。在 releases 中下载安装程序安装即可。
配置Linux服务端自启动
1. 创建 systemd 服务文件
在 `/etc/systemd/system/` 目录下创建一个名为 `frps.service` 的文件:
bash
1 | sudo nano /etc/systemd/system/frps.service |
在文件中写入以下内容(根据你的实际路径和配置文件修改):
1 | [Unit] |
`ExecStart` 指定了 frps 的启动命令,确保路径和配置文件路径正确。
`Restart=on-failure` 表示如果服务失败会自动重启。
`User=root` 指定以 root 用户运行,你可以根据需要修改为其他用户。
2. 重新加载 systemd 配置
- 执行以下命令,让 systemd 重新加载服务配置:
1 | sudo systemctl daemon-reload |
3. 启动并设置开机自启
启动 frps 服务:
1 | sudo systems start frps |
设置开机自启动:
1 | sudo systemctl enable frps |
4. 检查服务状态
-检查 frps 服务是否正常运行:
1 | sudo systemctl status frps |
如果一切正常,你会看到服务处于 `active (running)` 状态。
最后确认在你的主机上打开远程桌面
在你需要带出去的Windows笔记本里启动remote desktop,输入服务器 IP 和你的设置的端口号对主机进行远程控制
或者在你的移动设备上安装RD客户端(Microsoft远程桌面)新增电脑,输入 IP 和你设置的端口号,在下方账号里添加你的主机账号和密码,点击连接即可。
- Title: 使用 frp 转发 Windows 远程桌面
- Author: Lijiong
- Created at : 2025-04-08 17:44:53
- Updated at : 2025-04-08 17:50:51
- Link: https://lijiong.online/2025/04/08/1-4/
- License: This work is licensed under CC BY-NC-SA 4.0.