使用 frp 转发 Windows 远程桌面

Lijiong

该教程基于阿里云的轻量应用服务器(因为最近弄了个阿里云的轻量服务器)用来作为 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
2
3
[common]
bind_port = <握手端口>
token = <连接密钥>

然后运行下 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
2
3
4
5
6
7
8
9
10
[Unit]
Description=frp server
After=network.target
[Service]
Type=simple
ExecStart=/opt/frp/frps -c /opt/frp/frps.ini
Restart=on-failure
User=root
[Install]
WantedBy=multi-user.target

`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.
Comments
On this page
使用 frp 转发 Windows 远程桌面