适用人群:有公网云服务器的开发者、想从外网访问家中 NAS / 远程桌面 / 本地 Web 服务的玩家
frp 版本:v0.68.1(截至 2026 年最新稳定版)
涵盖内容:frp 是什么 → 服务端(frps)配置 → Linux 客户端配置 → Windows 客户端配置 → 安全加固 → 开机自启 → 常见问题排查 → 云服务器推荐
一、frp 是什么?为什么你需要它?
frp(Fast Reverse Proxy) 是一个由 Go 语言编写的开源反向代理工具,专门用于内网穿透——让没有公网 IP 的本地服务器也能被外部访问。
穿透原理(一句话版)
你有一台有公网 IP 的云服务器(充当"交通枢纽"),还有一台在内网的设备(比如家里的电脑、树莓派)。frp 在内网设备到云服务器之间建立一条反向隧道,外面的人通过访问云服务器的端口,流量就会自动转发到内网设备上。
外网用户 → 公网服务器(frps) → 内网设备(frpc) → 本地服务
🌍 ☁️ 🏠 💻
frp 的架构优势
二、服务端配置(Linux 公网云服务器)
- 前提:你已有一台带公网 IP 的 Linux 云服务器(推荐 Ubuntu 20.04/22.04/24.04 或 Debian 11/12)
步骤 1:下载并解压 frp
# 创建安装目录
mkdir -p /usr/local/frp && cd /usr/local/frp
# 下载最新版 frp(以 v0.68.1 为例,请到 GitHub Releases 页面确认最新版本号)
wget https://github.com/fatedier/frp/releases/download/v0.68.1/frp_0.68.1_linux_amd64.tar.gz
# 备用下载地址:https://gofrp.org/zh-cn/docs/
# 解压
tar -zxvf frp_0.68.1_linux_amd64.tar.gz --strip-components=1
# 查看文件,确认包含 frps (服务端程序)、frpc (客户端程序) 和 .toml 配置文件
ls -l
解压后目录结构如下:
- /usr/local/frp/
- ├── frps # 服务端可执行文件
- ├── frpc # 客户端可执行文件
- ├── frps.toml # 服务端配置文件
- ├── frpc.toml # 客户端配置文件(服务端用不到,可删除)
- └── LICENSE
步骤 2:编写 frps.toml 配置文件
nano /usr/local/frp/frps.toml
写入以下内容:
# frps.toml —— frp 服务端配置(v0.68+ 标准格式)
# 服务端监听端口,客户端将连接此端口
bindPort = 7000
# ==================== 身份认证 ====================
# 方式一:直接填写 token(简单场景推荐)
auth.token = "your_strong_token_here"
# 方式二:从文件加载 token(v0.64+,避免在配置文件中硬编码)
# auth.tokenSource.type = "file"
# auth.tokenSource.file.path = "/etc/frp/server_token"
# ==================== 服务端 Dashboard ====================
# Web 管理面板配置
webServer.addr = "0.0.0.0" # 公网访问填 0.0.0.0,仅本机填 127.0.0.1
webServer.port = 7500 # 面板访问端口
webServer.user = "admin" # 面板登录用户名
webServer.password = "admin" # 面板登录密码(务必修改!)
# ==================== 代理端口范围(可选) ====================
# 允许客户端使用的远程端口范围,建议按需开放
allowPorts = [
{ start = 6000, end = 6009 }, # SSH / 远程桌面等 TCP 代理
{ start = 8080, end = 8089 }, # Web 服务代理
]
关于 TOML 格式:自 v0.50 起,frp 全面使用 TOML 格式替代旧版 INI 格式,旧格式已弃用。新版配置对缩进敏感,请严格按照示例格式编写。
步骤 3:配置防火墙
你需要在云服务商的安全组中放行以下端口,同时确保系统防火墙也已开放:
| 端口 | 用途 | 协议 |
|---|---|---|
| 7000 | frps 服务端监听端口(客户端连接用) | TCP |
| 7500 | Dashboard 管理面板 | TCP |
| 6000-6009 | 代理隧道实际使用的端口(按需开放) | TCP/UDP |
| 80/443 | HTTP/HTTPS 穿透端口(如需要) | TCP |
系统防火墙示例(Ubuntu/Debian 使用 UFW、CentOS/RHEL 使用 firewalld):
# === Ubuntu/Debian 用户 (UFW) ===
sudo ufw allow 7000/tcp
sudo ufw allow 7500/tcp
sudo ufw allow 6000:6009/tcp
sudo ufw enable
# === CentOS/RHEL 用户 (firewalld) ===
sudo firewall-cmd --permanent --add-port=7000/tcp
sudo firewall-cmd --permanent --add-port=7500/tcp
sudo firewall-cmd --permanent --add-port=6000-6009/tcp
sudo firewall-cmd --reload
步骤 4:配置 systemd 开机自启(推荐)
sudo nano /etc/systemd/system/frps.service
写入:
[Unit]
Description=frp Server Service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.toml
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload # 重载 systemd 配置
sudo systemctl enable frps # 开机自启
sudo systemctl start frps # 立即启动
sudo systemctl status frps # 查看运行状态
看到 active (running) 即服务端启动成功。
步骤 5:验证服务端
浏览器访问 http://你的服务器IP:7500,输入配置的用户名和密码,即可进入 Dashboard 面板。
Dashboard 主要功能一览:
- 📊 查看当前所有连接的客户端及其在线状态
- 📈 监控每个代理的流量统计(接收/发送字节数)
- 🔍 查看每个客户端的连接历史(v0.67+ 支持)
- ⚙️ 管理代理的启用/禁用状态(v0.66+ 支持)
提示:配置完成后建议重启服务端使新配置生效:
sudo systemctl restart frps
三、客户端配置(Linux 内网设备)
假设你的内网 Linux 机器上运行着以下服务:
- SSH(端口 22)
- Web 应用(端口 3000)
现在想让外部访问。
步骤 1:下载并安装 frpc
mkdir -p /usr/local/frp && cd /usr/local/frp
# 下载(与服务端版本保持一致)
wget https://github.com/fatedier/frp/releases/download/v0.68.1/frp_0.68.1_linux_amd64.tar.gz
tar -zxvf frp_0.68.1_linux_amd64.tar.gz --strip-components=1
# 检查文件,客户端只需要 frpc 和 frpc.toml
ls -l
步骤 2:编写 frpc.toml 配置文件
步骤 2:编写 frpc.toml 配置文件
nano /usr/local/frp/frpc.toml
# frpc.toml —— frp 客户端配置
# 连接服务端
serverAddr = "你的公网服务器IP"
serverPort = 7000
# 身份认证 token,必须与服务端一致
auth.token = "your_strong_token_here"
# ==================== 代理配置 ====================
# 示例 1:穿透 SSH(TCP 协议)
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
# 示例 2:穿透本地 Web 应用(TCP 协议)
[[proxies]]
name = "web_app"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3000
remotePort = 6001
# 示例 3:穿透 HTTP 服务(带自定义域名)
[[proxies]]
name = "blog"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["blog.yourdomain.com"]
- 代理类型说明:
tcp:最通用,适合 SSH、数据库、远程桌面等一切 TCP 协议的服务http:专为 Web 服务优化,支持自定义域名,无需为每个网站占用独立端口udp:用于 DNS、游戏服务器等 UDP 协议stcp:安全 TCP,需要访问者也安装 frpc,适合不想暴露给所有人的内网服务xtcp:点对点穿透,利用 NAT 打洞尽可能直连,降低服务器带宽压力- 步骤 3:启动并配置开机自启
步骤 3:启动并配置开机自启
sudo nano /etc/systemd/system/frpc.service
[Unit]
Description=frp Client Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.toml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc
sudo systemctl status frpc
步骤 4:验证穿透效果
从外网测试:
# 测试 SSH 穿透
ssh -o Port=6000 用户名@你的公网服务器IP
# 测试 Web 应用
# 浏览器访问:http://你的公网服务器IP:6001
四、客户端配置(Windows 内网设备)
步骤 1:下载 Windows 版 frp
访问 GitHub Releases 下载 frp_0.68.1_windows_amd64.zip。
解压到任意目录(例如 C:\frp),目录中包含:
- C:\frp\
- ├── frpc.exe # 客户端程序
- ├── frpc.toml # 客户端配置文件
- ├── frps.exe # 服务端程序(客户端用不到)
- └── frps.toml
步骤 2:编写 frpc.toml 配置
用记事本或 VSCode 打开 C:\frp\frpc.toml,写入:
# frpc.toml —— Windows 客户端配置
serverAddr = "你的公网服务器IP"
serverPort = 7000
auth.token = "your_strong_token_here"
# 示例:穿透 Windows 远程桌面(RDP)
[[proxies]]
name = "rdp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 6002
步骤 3:启动客户端
方法一:命令行启动(推荐测试阶段使用)
打开 cmd 或 PowerShell,进入 C:\frp 目录:
cd C:\frp
frpc.exe -c frpc.toml
看到 [v0.68.1] start proxy success 即连接成功。
方法二:配置 Windows 服务,开机自启(推荐长期使用)
以管理员身份打开 cmd,进入 C:\frp,执行:
# 安装为 Windows 系统服务(winsw 方式)
# 此处以 frpc 的 install 参数为例
frpc install -c C:\frp\frpc.toml
# 启动服务
frpc start
# 如需卸载服务
# frpc uninstall
或者使用第三方工具 NSSM 将 frpc.exe 包装为 Windows 服务(提供可视化界面进行管理)。
Windows 客户端专属提示:
- Windows 远程桌面(RDP)默认端口为 3389,远程桌面访问前请确保 Windows 已启用远程桌面功能
- Windows Defender 防火墙可能会拦截
frpc.exe的出站连接,首次运行时会弹出安全提示,请选择"允许"- 如果穿透 Windows 文件共享(SMB,端口 445),需配置 SMB 服务本身并注意安全风险
- 推荐使用 WinSW 或 NSSM 将 frpc 包装为 Windows 系统服务,实现开机自启与崩溃自动重启
安装完成后,即可通过 公网IP:6002 远程连接到你的 Windows 桌面。
五、安全加固建议
1. 避免端口扫描检测
⚠️ 重要更新:v0.68.1 修复了一个严重的安全漏洞(CVE-2026-40910),该漏洞影响 v0.43.0 至 v0.68.0 版本,在 HTTP vhost 路由中使用
routeByHTTPUser时可能导致认证绕过。请务必升级到 v0.68.1+。
2. 最佳实践清单
# 生成强随机 token
openssl rand -hex 32
# 输出示例: a1b2c3d4e5f6...(将此值填入服务端和客户端的 auth.token)
# Dashboard 绑定本地 + SSH 隧道访问
# frps.toml 中设置: webServer.addr = "127.0.0.1"
# 从本地电脑通过 SSH 隧道访问:
# ssh -L 7500:127.0.0.1:7500 user@your-server-ip
# 然后浏览器打开 http://127.0.0.1:7500
六、常用管理操作速查
| 操作 | 命令 / 方法 |
|---|---|
| 启动/停止/重启服务端 | sudo systemctl start|stop|restart frps |
| 启动/停止/重启客户端 | sudo systemctl start|stop|restart frpc |
| 查看服务端日志 | sudo journalctl -u frps -f |
| 查看客户端日志 | sudo journalctl -u frpc -f |
| 访问 Dashboard | http://你的IP:7500 |
| 重新加载配置(客户端) | sudo systemctl reload frpc 或访问 Admin UI |
| 版本升级 | 覆盖 frps/frpc 二进制文件后 systemctl restart |
七、高频故障排查
调试技巧
# 先用前台模式测试,查看详细日志
frpc -c frpc.toml -v # 客户端调试模式
frps -c frps.toml -v # 服务端调试模式
# 如果遇到 TOML 解析错误,检查:
# - 是否使用了等号 =(正确)而非冒号 :(错误)
# - 字符串值必须加引号(除非是数字或布尔值)
# - 各配置段是否有错误的缩进
八、云服务器推荐清单
frp 服务端要求一台有公网 IP 的服务器,以下是几款适合内网穿透的高性价比选择:
国内主流云厂商
选购建议
| 入门级(个人/测试) | 中级(小团队/多服务) | 高级(企业/高并发) | |
|---|---|---|---|
| 推荐型号 | 腾讯云 Lighthouse 2核2G 或 阿里云 T6 按量 | 腾讯云 CVM S5 2核4G | 腾讯云 CVM S5 4核8G 或更高 |
| 月流量 | 100-300GB | 500GB-1TB | 1TB+(按量计费或固定带宽) |
| 带宽 | 1-5 Mbps | 5-10 Mbps | 10 Mbps+ |
| 参考预算 | 50-200元/年 | 200-500元/年 | 1000元+/年 |
| 适合穿透服务数 | 1-5个 | 5-20个 | 20个以上 |
- 带宽:穿透速度快不快取决于服务器带宽。1Mbps ≈ 128KB/s,如果穿透远程桌面至少需要 3Mbps 以上。
- 流量:部分轻量服务器有月流量限制,超出后会限速,建议预估月度使用量。
- 线路:国内服务器延迟低(<10ms),适合国内用户;国外服务器延迟较高(50-200ms),适合海外场景。
- 备案:穿透 HTTP 服务到国内服务器,需提前进行工信部域名备案。
💡 选购小贴士:初次测试可以先用腾讯云轻量服务器或阿里云 T6 按量计费,月消费不到十元;确定长期使用后,再考虑包年包月的 CVM 实例以获取更低单价。如果没有特殊需求,腾讯云 Lighthouse 是国内穿透入门的最佳性价比之选。
九、总结
至此,你已完成 frp 内网穿透的完整部署:
| 阶段 | 关键内容 |
|---|---|
| 服务端 | 下载 frps → 编写 frps.toml → 配置 Dashboard → 防火墙放行端口 → systemd 自启 |
| Linux 客户端 | 下载 frpc → 编写 frpc.toml → 配置 SSH/Web 代理 → systemd 自启 |
| Windows 客户端 | 下载 Windows ZIP 包 → 编写 frpc.toml → 命令行启动 / 注册为 Windows 服务 |
| 安全加固 | 升级到 v0.68.1+、强 token、防火墙白名单、stcp 加密代理 |
| 常见问题 | 连接拒绝 → 检查防火墙 / token 不匹配 / 端口占用 / TOML 格式错误 |
下一步进阶尝试:
- OIDC 企业级认证:对接微软 Entra ID 等企业 SSO 系统
- 负载均衡组:为多个后端服务配置统一的域名负载均衡(v0.66+)
- Docker 部署 frps:使用 Docker Compose 一键部署服务端
- 搭配 Nginx/Caddy:在 frps 前面加一层反向代理,实现 HTTPS 证书自动管理
- 监控告警:利用 Prometheus 指标 + Grafana 搭建穿透流量监控面板
- 构建 frp 管理面板:使用
frp-panel实现可视化多客户端集中管理
🛠️ Happy Tunneling! 你的内网服务从此触手可及。
本文基于 frp v0.68.1 编写,配置格式以官方文档为准。如果版本更新后有兼容性变化,请参考 https://gofrp.org/zh-cn/ 获取最新文档。

Comments NOTHING