什么是 frp?
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议
内网穿透
让局域网内的服务通过具有公网 IP 的节点转发,轻松暴露到互联网
高性能
基于 Go 语言开发,支持高并发连接,提供卓越的网络传输性能
安全可靠
支持 TLS 加密传输、身份验证,确保数据传输安全
易于配置
简洁的 TOML 配置文件,支持热重载,配置管理轻松便捷
核心特性
frp 提供了丰富的功能特性,满足各种内网穿透需求
多协议支持
支持 TCP、UDP、HTTP、HTTPS 协议,满足不同应用场景的需求
- TCP/UDP 端口转发
- HTTP/HTTPS 域名转发
- WebSocket 协议支持
P2P 连接模式
支持点对点直连,减少服务器中转,提升传输效率
- 自动 NAT 穿透
- STUN 服务器支持
- 降低延迟和带宽消耗
监控面板
提供 Web Dashboard 和 Admin UI,实时监控连接状态
- 实时连接统计
- 流量监控图表
- 代理状态管理
插件系统
支持客户端和服务端插件,扩展功能灵活便捷
- HTTP 插件支持
- 自定义认证插件
- 流量统计插件
负载均衡
支持多种负载均衡策略,提高服务可用性
- 轮询负载均衡
- 权重分配
- 健康检查
高级协议
支持 KCP、QUIC 等高性能传输协议
- KCP 协议加速
- QUIC 协议支持
- 连接复用优化
安装指南
选择适合你的安装方式,快速开始使用 frp
1. 下载预编译二进制文件
从 GitHub Releases 页面下载适合你操作系统的版本:
下载链接
https://github.com/fatedier/frp/releases
2. 解压并配置
Linux/macOS
# 解压文件
tar -zxvf frp_0.58.1_linux_amd64.tar.gz
cd frp_0.58.1_linux_amd64
# 启动服务端(在有公网IP的服务器上)
./frps -c ./frps.toml
# 启动客户端(在内网机器上)
./frpc -c ./frpc.toml
1. 使用 Docker 运行服务端
Docker 命令
# 创建配置文件目录
mkdir -p /etc/frp
# 运行 frps 服务端
docker run --restart=always --network host \
-d -v /etc/frp:/etc/frp \
--name frps snowdreamtech/frps
2. 使用 Docker 运行客户端
Docker 命令
# 运行 frpc 客户端
docker run --restart=always --network host \
-d -v /etc/frp:/etc/frp \
--name frpc snowdreamtech/frpc
1. 克隆源码
Git 命令
git clone https://github.com/fatedier/frp.git
cd frp
2. 编译安装
编译命令
# 确保已安装 Go 1.23+
go version
# 编译
make build
# 运行
./bin/frps -c ./conf/frps.toml
./bin/frpc -c ./conf/frpc.toml
使用示例
通过实际案例了解 frp 的强大功能
SSH 内网穿透
基础应用通过 frp 实现 SSH 远程访问内网机器
服务端配置 (frps.toml)
# frps.toml
bindPort = 7000
客户端配置 (frpc.toml)
# frpc.toml
serverAddr = "your-server-ip"
serverPort = 7000
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
连接命令
ssh -p 6000 username@your-server-ip
Web 服务暴露
HTTP/HTTPS将内网 Web 服务通过域名暴露到公网
客户端配置
[[proxies]]
name = "web"
type = "http"
localIP = "127.0.0.1"
localPort = 8080
customDomains = ["your-domain.com"]
HTTPS 支持
[[proxies]]
name = "web-https"
type = "https"
localIP = "127.0.0.1"
localPort = 8080
customDomains = ["your-domain.com"]