概述
Frp (Fast Reverse Proxy) 是一个高性能的内网穿透工具,可以将内网服务暴露到公网,支持 TCP、UDP、HTTP、HTTPS 等多种协议。
🚀 核心特性:
- 多协议支持:TCP/UDP/HTTP/HTTPS/STCP
- 加密传输:支持 TLS 加密
- 负载均衡:支持多个后端服务
- Web 管理界面:可视化管理和监控
场景应用
1. 远程访问内网服务
- 访问家里或公司内网的 NAS、路由器管理界面
- 远程桌面连接(RDP/VNC)
- SSH 远程管理服务器
2. 微信开发调试
- 微信公众号/小程序本地开发调试
- Webhook 回调测试
3. 个人网站部署
- 将本地开发环境暴露到公网
- 临时展示项目效果
4. 游戏服务器
- Minecraft、CS 等游戏服务器搭建
- 与朋友共享本地游戏服务
安装部署
1. 下载程序
在 GitHub 上下载对应版本的 frp 程序:
- GitHub Release:https://github.com/fatedier/frp/releases
- 官方文档:https://gofrp.org/docs/
# 直接下载指定版本(Linux amd64)
wget https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_linux_amd64.tar.gz
# 或使用 curl
curl -LO https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_linux_amd64.tar.gz
2. 解压安装
# 解压文件
tar -xzvf frp_0.53.2_linux_amd64.tar.gz
# 进入目录
cd frp_0.53.2_linux_amd64/
# 查看文件
ls -la
将文件复制到系统目录:
# 复制到指定目录(推荐)
sudo cp frps /usr/local/bin/
sudo cp frpc /usr/local/bin/
# 或复制到用户目录
cp frps frpc ~/
服务端配置
1. 基本测试
chmod +x frps
./frps
2. 创建配置文件
vim frps.toml
配置文件内容(带注释版本):
bindPort = 7000 # 客户端连接端口
auth.method = "token" # 认证方式
auth.token = "your_token" # 认证令牌(请修改为强密码)
webServer.port = 7500 # 管理面板端口
webServer.addr = "0.0.0.0" # 绑定所有网络接口
webServer.user = "admin" # 管理员用户名
webServer.password = "admin" # 管理员密码(请修改)
完整配置(无注释版本):
bindPort = 7000
auth.method = "token"
auth.token = "your_secure_token"
webServer.port = 7500
webServer.addr = "0.0.0.0"
webServer.user = "admin"
webServer.password = "your_secure_password"
💡 配置说明:
bindPort:客户端连接的端口,需要在防火墙开放auth.token:验证令牌,确保客户端和服务端一致webServer:Web 管理界面配置,访问地址http://服务器IP:7500
3. 启动服务
./frps -c frps.toml
4. 配置系统服务
创建 systemd 服务文件:
sudo vim /etc/systemd/system/frps.service
配置文件内容:
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
ExecStart = /usr/local/bin/frps -c /etc/frp/frps.toml
Restart = always
RestartSec = 5s
[Install]
WantedBy = multi-user.target
系统服务管理
# 启用开机自启动
systemctl enable frps
# 启动服务
systemctl start frps
# 查看状态
systemctl status frps
# 停止服务
systemctl stop frps
# 重启服务
systemctl restart frps
# 查看日志
journalctl -u frps -f
客户端配置
1. 基本测试
chmod +x frpc
./frpc
2. 创建配置文件
vim frpc.toml
配置文件内容(带注释版本):
serverAddr = "1.1.1.1" # 服务器公网IP
serverPort = 7000 # 服务器端口
auth.method = "token" # 认证方式
auth.token = "your_secure_token" # 与服务端一致的令牌
[[proxies]]
name = "web" # 代理名称(唯一)
type = "tcp" # 代理类型
localIP = "127.0.0.1" # 本地服务IP
localPort = 80 # 本地服务端口
remotePort = 8080 # 远程访问端口
[[proxies]]
name = "ssh" # SSH服务代理
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 2222
完整配置(无注释版本):
serverAddr = "1.1.1.1"
serverPort = 7000
auth.method = "token"
auth.token = "your_secure_token"
[[proxies]]
name = "web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 8080
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 2222
3. 启动客户端
./frpc -c frpc.toml
4. 配置系统服务
sudo vim /etc/systemd/system/frpc.service
配置文件内容:
[Unit]
Description = frp client
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
ExecStart = /usr/local/bin/frpc -c /etc/frp/frpc.toml
Restart = always
RestartSec = 5s
[Install]
WantedBy = multi-user.target
系统服务管理
# 启用开机自启动
systemctl enable frpc
# 启动服务
systemctl start frpc
# 查看状态
systemctl status frpc
# 查看日志
journalctl -u frpc -f
高级配置
1. 配置 HTTP/HTTPS 代理
[[proxies]]
name = "web_http"
type = "http"
localIP = "127.0.0.1"
localPort = 8080
customDomains = ["www.example.com"]
[[proxies]]
name = "web_https"
type = "https"
localIP = "127.0.0.1"
localPort = 443
customDomains = ["www.example.com"]
2. 配置 STCP 安全隧道
服务端配置:
[[proxies]]
name = "secret_ssh"
type = "stcp"
localIP = "127.0.0.1"
localPort = 22
secretKey = "your_secret_key"
访问端配置:
[[visitors]]
name = "secret_ssh_visitor"
type = "stcp"
serverName = "secret_ssh"
secretKey = "your_secret_key"
bindAddr = "127.0.0.1"
bindPort = 6000
3. 后台运行方式
nohup ./frpc -c frpc.toml >/dev/null 2>&1 &
查看运行进程:
ps aux | grep frpc
终止进程:
# 查找进程ID
ps aux | grep frpc
# 终止进程(替换 PID 为实际进程ID)
kill PID
常见问题
问题1:连接服务器失败
现象:客户端无法连接到服务器 解决方案:
- 检查服务器防火墙是否开放相应端口
- 确认服务器端 frps 正常运行
- 验证 token 是否一致
- 检查网络连接是否正常
问题2:代理服务无法访问
现象:配置正确但无法通过远程端口访问服务 解决方案:
- 检查本地服务是否正常运行
- 确认远程端口没有被占用
- 检查服务器防火墙规则
- 验证配置文件语法是否正确
问题3:Web 管理界面无法访问
现象:无法访问 frp 管理界面 解决方案:
- 确认 webServer 配置正确
- 检查防火墙是否开放管理端口
- 验证用户名密码是否正确
- 使用
http://服务器IP:7500访问
问题4:服务频繁断开
现象:连接不稳定,经常断开 解决方案:
- 使用 systemd 服务配置自动重启
- 检查网络稳定性
- 增加心跳间隔配置
- 查看日志定位具体问题
相关文章
网络编程基础
- ProtoBuf 简明教程 - 高效序列化协议
- RESTful API 设计
- 网络安全基础
服务器部署
- Docker 基本命令 - 容器化部署
- Tomcat 服务器 - Java Web 服务器
远程管理工具
微服务架构
- Nacos - 服务注册与发现
- SpringBoot - 微服务开发
- 消息队列 - 异步通信
移动开发
- Android 网络编程 - 移动端网络
- 微信小程序开发 - 小程序网络请求
总结
Frp 是一个强大且易用的内网穿透工具,具有以下特点:
🎯 核心优势
- 简单易用:配置简洁,上手快速
- 性能优秀:高并发,低延迟
- 功能丰富:支持多种协议和场景
- 跨平台:支持 Windows/Linux/macOS
📚 适用场景
- 开发调试:本地开发环境外网访问
- 远程办公:访问公司内网资源
- 个人应用:搭建个人网站、游戏服务器
- 物联网:设备远程管理和监控
🚀 最佳实践
- 安全第一:使用强密码,定期更新
- 端口管理:合理规划端口使用
- 监控日志:定期检查运行状态
- 备份配置:保存重要配置文件