Skip to content

什么是 FRP

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

🌐 核心用途

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

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

🧱 架构组成

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

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

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

🔌 支持的协议

FRP 支持多种代理类型:

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

Windows远程桌面连接

要通过远程桌面(RDP)访问家里的个人电脑,并使用 FRP(Fast Reverse Proxy) 实现内网穿透,可以按照以下步骤进行配置。整个方案的核心思路是:

  • 家里的个人电脑(内网)运行 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.50+ 使用 TOML 格式)

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

# 可选:Dashboard(用于监控)
dashboardAddr = "0.0.0.0"
dashboardPort = 7500
dashboardUser = "admin"
dashboardPwd = "yourpassword"

# Token 认证(推荐)
token = "your_secure_token"

注意:如果你使用的是旧版 FRP(< v0.50),配置文件是 frps.ini,格式为 INI。建议使用新版。

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
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,避免未授权连接。
  • 可考虑启用 TLS(FRP 支持)。
  • 家里电脑设置复杂密码,或启用网络级认证(NLA)。
  • 可更改 RDP 默认端口(非必须,但增加安全性)。

📦 使用 NSSM 将 FRP 安装为 Windows 服务开机自启

步骤:

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

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

基于 VitePress 构建