Skip to content

使用 FRP 反向代理实现 Windows 远程桌面连接 ​

用 FRP 把内网 Windows 电脑的远程桌面(RDP,3389 端口)经公网云服务器中转暴露出去:内网机器运行 frpc 主动连接云服务器上的 frps,外部通过云服务器端口访问 RDP。本文覆盖双端配置(TOML 格式)、连接验证,以及用 NSSM 把 frpc 装成 Windows 服务开机自启。适合需要在公司访问家里电脑、或异地访问内网机器的场景。

什么是 FRP ​

FRP(Fast Reverse Proxy)是一个开源的内网穿透反向代理工具,由 fatedier 开发并维护。它可以帮助你将位于 NAT(网络地址转换)或防火墙后的内网服务,暴露到公网,实现从外网访问内网资源。

核心用途 ​

FRP 主要解决的问题是:你的设备没有公网 IP,但你想让外网能访问它提供的服务。常见场景包括:

  • 远程桌面连接家里的 Windows 电脑(RDP)
  • 外网访问家里 NAS、摄像头、Web 服务器
  • 调试本地开发的网站或 API(如微信小程序、支付回调)
  • SSH 到内网 Linux 服务器

架构组成 ​

FRP 采用 C/S(客户端/服务端)架构:

组件 作用 运行位置
frps(Server) FRP 服务端,部署在有公网 IP 的服务器上(如云服务器) 公网服务器
frpc(Client) FRP 客户端,部署在内网机器上(如家里电脑、树莓派) 内网设备

客户端主动连接服务端,建立隧道;外部用户访问服务端的某个端口,流量被转发到内网客户端指定的服务。

支持的协议 ​

类型 说明
tcp 最常用,用于 RDP、SSH、数据库等
udp 用于游戏、语音、视频流等 UDP 应用
http / https 反向代理 Web 服务,支持域名路由(vhost)
stcp / sudp 安全传输:点对点加密,需访问方也运行 frpc(适合高安全场景)
xtcp P2P 直连(实验性,依赖 NAT 类型)

配置步骤 ​

方案核心思路:

  • 家里的个人电脑(内网)运行 FRP 客户端(frpc),连接到云服务器(公网)上运行的 FRP 服务端(frps)
  • 在外部通过连接云服务器的某个端口,经由 FRP 转发到家里电脑的 3389 端口(Windows 远程桌面默认端口)

前提条件 ​

  1. 云服务器:有公网 IP,开放相应端口(如 frps 监听端口、RDP 映射端口)
  2. 家里电脑:
    • 开启 Windows 远程桌面(系统设置 → 系统 → 远程桌面 → 启用)
    • 防火墙允许 3389 端口入站
    • 可以运行 FRP 客户端(Windows 版本)
  3. FRP 下载地址:https://github.com/fatedier/frp/releases(选择对应平台版本)

步骤一:配置云服务器(FRP 服务端 frps) ​

1. 下载并解压 FRP ​

bash
# 以 Linux 为例(如 Ubuntu)
wget https://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_linux_amd64.tar.gz
tar -zxvf frp_0.54.0_linux_amd64.tar.gz
cd frp_0.54.0_linux_amd64

2. 编辑 frps.toml ​

v0.52 起使用 TOML 格式,字段为顶层配置,无 [server] 段:

toml
# frps.toml
bindPort = 7000        # FRP 服务端监听客户端连接的端口
vhostHTTPPort = 8080   # 如果需要 HTTP 内网穿透才用,可选

# 可选:Dashboard(用于监控),v0.52 起由旧版 dashboard* 字段改为 webServer.*
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "yourpassword"

# Token 认证(推荐),v0.52 起写作 auth.token
auth.token = "your_secure_token"

注意:如果你使用的是旧版 FRP(v0.52 之前),配置文件是 frps.ini,格式为 INI(token = ...、dashboard_port = ...)。建议使用新版。

3. 启动 frps ​

bash
./frps -c ./frps.toml

建议使用 systemd 或 screen/nohup 后台运行。

4. 开放防火墙端口 ​

确保云服务器安全组/防火墙开放:

  • 7000(FRP 客户端连接)
  • 6000(用来映射 RDP 的公网端口,按实际配置)

步骤二:配置家里电脑(FRP 客户端 frpc) ​

1. 下载 Windows 版 FRP ​

从 GitHub Releases 下载 frp_x.x.x_windows_amd64.zip,解压到任意目录(如 C:\frp)。

2. 编辑 frpc.toml ​

toml
# frpc.toml
serverAddr = "你的云服务器IP"
serverPort = 7000

auth.token = "your_secure_token"  # 必须和服务端一致

[[proxies]]
name = "rdp-home-pc"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 6000   # 云服务器上对外开放的端口

remotePort = 6000 表示:访问 云服务器IP:6000 就等于访问家里电脑的 3389。

3. 启动 frpc(Windows) ​

以管理员身份打开命令提示符或 PowerShell:

powershell
cd C:\frp
frpc.exe -c frpc.toml

建议设置为开机自启(见下文 NSSM 一节)。

步骤三:连接远程桌面 ​

  1. 打开「远程桌面连接」(mstsc)
  2. 计算机地址填写:你的云服务器IP:6000(例如 123.123.123.123:6000)
  3. 用户名和密码:家里电脑的登录凭据(必须是启用远程桌面的账户)
  4. 点击连接即可

安全建议 ​

  • 不要直接暴露 3389 到公网,FRP 隧道 + token 认证是更安全的通道
  • 使用强 token,避免未授权连接
  • 可考虑启用 TLS(FRP 支持)
  • 家里电脑设置复杂密码,或启用网络级认证(NLA)
  • 可更改 RDP 默认端口(非必须,但增加安全性)

用 NSSM 把 frpc 装成 Windows 服务开机自启 ​

步骤 ​

  1. 下载 NSSM(Non-Sucking Service Manager) 官网:https://nssm.cc/download 下载 nssm-2.24.zip(或其他最新版),解压,进入对应架构文件夹(如 win64)。
  2. 以管理员身份打开命令提示符(CMD 或 PowerShell)
  3. 运行以下命令(路径根据你的情况修改):
cmd
nssm install FrpcService "C:\frp\frpc.exe" "-c C:\frp\frpc.toml"
  1. 设置工作目录(重要!否则可能找不到配置文件):
cmd
nssm set FrpcService AppDirectory "C:\frp"
  1. (可选)设置日志(便于排查):
cmd
nssm set FrpcService AppStdout "C:\frp\frpc.log"
nssm set FrpcService AppStderr "C:\frp\frpc.err.log"
  1. 启动服务:
cmd
nssm start FrpcService
  1. 确认开机自启(默认已设为自动):
    • 按 Win + R → 输入 services.msc
    • 找到 FrpcService → 右键 → 属性 → 启动类型:自动

之后 frpc 会作为系统服务在开机时自动运行。

要点 ​

  • v0.52 是配置分水岭:TOML 顶层字段 + auth.token/webServer.* 新写法,旧 INI 教程照抄会启动失败
  • 端口两件套:bindPort(frps↔frpc)与 remotePort(对外映射)分开理解,防火墙两个都要放行
  • Windows 端别裸奔运行 frpc,用 NSSM 装成服务并设置 AppDirectory,否则重启后服务找不到配置
  • 安全底线:RDP 不直接暴露公网,强 token + NLA
最近更新

基于 VitePress 构建