什么是 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 远程桌面默认端口)。
🧩 前提条件
- 云服务器:有公网 IP,开放相应端口(如 frps 监听端口、RDP 映射端口)。
- 家里电脑:
- 开启 Windows 远程桌面(系统设置 → 系统 → 远程桌面 → 启用)。
- 防火墙允许 3389 端口入站。
- 可以运行 FRP 客户端(Windows 版本)。
- 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 封装为服务)。
🏢 步骤三:在公司使用远程桌面连接
- 打开“远程桌面连接”(mstsc)。
- 计算机地址填写:
你的云服务器IP:6000- 例如:
123.123.123.123:6000
- 例如:
- 用户名和密码:家里电脑的登录凭据(必须是启用远程桌面的账户)。
- 点击连接即可。
🔒 安全建议
- 不要直接暴露 3389 到公网,FRP 是安全通道。
- 使用强
token,避免未授权连接。 - 可考虑启用 TLS(FRP 支持)。
- 家里电脑设置复杂密码,或启用网络级认证(NLA)。
- 可更改 RDP 默认端口(非必须,但增加安全性)。
📦 使用 NSSM 将 FRP 安装为 Windows 服务开机自启
步骤:
- 下载 NSSM(Non-Sucking Service Manager)
官网:https://nssm.cc/download
下载nssm-2.24.zip(或其他最新版),解压,进入对应架构文件夹(如win64)。 - 以管理员身份打开命令提示符(CMD 或 PowerShell)
- 运行以下命令(路径根据你的情况修改):
cmd
1nssm install FrpcService "C:\frp\frpc.exe" "-c C:\frp\frpc.toml" - 设置工作目录(重要!否则可能找不到配置文件):
cmd
1nssm set FrpcService AppDirectory "C:\frp" - (可选)设置日志(便于排查):
cmd
1nssm set FrpcService AppStdout "C:\frp\frpc.log"
2nssm set FrpcService AppStderr "C:\frp\frpc.err.log" - 启动服务:
cmd
1nssm start FrpcService - 设置开机自启(默认已设为自动):
- 按
Win + R→ 输入services.msc - 找到
FrpcService→ 右键 → 属性 → 启动类型:自动
- 按
✅ 现在 frpc 会作为系统服务在开机时自动运行。