Auto-sync: 2026-04-26 20:02
This commit is contained in:
@@ -1,142 +1,68 @@
|
||||
---
|
||||
title: "frp"
|
||||
type: entity
|
||||
aliases: [frp内网穿透, frp工具]
|
||||
tags: [network, proxy, tunneling, open-source]
|
||||
---
|
||||
|
||||
# frp
|
||||
|
||||
## Overview
|
||||
**frp** (Fast Reverse Proxy) 是一个开源的高性能内网穿透工具,由 [fatedier](https://github.com/fatedier/frp) 开发维护。通过在公网服务器(frps)和内网机器(frpc)之间建立反向隧道,使内网服务可被公网访问。
|
||||
|
||||
## Architecture
|
||||
|
||||
frp 采用 C/S 架构,包含两个核心组件:
|
||||
|
||||
| 组件 | 全称 | 角色 | 部署位置 |
|
||||
|------|------|------|---------|
|
||||
| **frps** | frp Server | 服务端,监听客户端连接 | 公网 VPS |
|
||||
| **frpc** | frp Client | 客户端,建立反向隧道 | 内网机器 |
|
||||
|
||||
## Core Concepts
|
||||
|
||||
### Protocol Types
|
||||
- **TCP**:通用 TCP 代理,适用于 SSH、数据库等任意 TCP 服务
|
||||
- **UDP**:通用 UDP 代理,适用于 DNS、视频流等 UDP 服务
|
||||
- **HTTP/HTTPS**:专为 Web 服务设计,支持虚拟主机和路径路由
|
||||
|
||||
### Authentication
|
||||
- **Token**:基于共享密钥的认证机制,frps 和 frpc 配置中的 `token` 必须一致
|
||||
- Token 不一致会导致认证失败:`authentication failed token mismatch`
|
||||
|
||||
### Dashboard (Optional)
|
||||
frps 可选启用 Web 管理面板:
|
||||
```ini
|
||||
[dashboard]
|
||||
dashboard_addr = 0.0.0.0
|
||||
dashboard_port = 7500
|
||||
dashboard_user = admin
|
||||
dashboard_pwd = StrongPassword123!
|
||||
```
|
||||
|
||||
## Configuration Files
|
||||
|
||||
### frps.ini (服务端)
|
||||
```ini
|
||||
[common]
|
||||
bind_addr = 0.0.0.0
|
||||
bind_port = 7000
|
||||
|
||||
# 可选:Web Dashboard
|
||||
dashboard_addr = 0.0.0.0
|
||||
dashboard_port = 7500
|
||||
dashboard_user = admin
|
||||
dashboard_pwd = StrongPassword
|
||||
|
||||
# 认证 Token(必须与客户端一致)
|
||||
token = YourSecretTokenHere
|
||||
```
|
||||
|
||||
### frpc.ini (客户端)
|
||||
```ini
|
||||
[common]
|
||||
server_addr = <frps公网IP>
|
||||
server_port = 7000
|
||||
token = YourSecretTokenHere
|
||||
|
||||
# TCP 映射示例:本地 5000 → VPS 15000
|
||||
[nas]
|
||||
type = tcp
|
||||
local_ip = 127.0.0.1
|
||||
local_port = 5000
|
||||
remote_port = 15000
|
||||
|
||||
# SSH 映射示例
|
||||
[ssh]
|
||||
type = tcp
|
||||
local_ip = 127.0.0.1
|
||||
local_port = 22
|
||||
remote_port = 60022
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
### VPS (frps)
|
||||
```bash
|
||||
cd /opt
|
||||
sudo mkdir frp && cd frp
|
||||
FRP_VER=0.65.0
|
||||
sudo curl -LO https://github.com/fatedier/frp/releases/download/v${FRP_VER}/frp_${FRP_VER}_linux_amd64.tar.gz
|
||||
sudo tar xzf frp_${FRP_VER}_linux_amd64.tar.gz
|
||||
sudo mv frp_${FRP_VER}_linux_amd64/* /opt/frp/
|
||||
```
|
||||
|
||||
### systemd Service (frps)
|
||||
```ini
|
||||
[Unit]
|
||||
Description=frp server (frps)
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/opt/frp/frps -c /opt/frp/frps.ini
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now frps
|
||||
sudo systemctl status frps
|
||||
```
|
||||
|
||||
## Common Use Cases
|
||||
|
||||
1. **Web 服务穿透**:内网 NAS、Web 应用通过子域名访问
|
||||
2. **SSH 远程访问**:通过 `ssh -p 60022 user@vps.domain.com` 访问内网机器
|
||||
3. **数据库远程连接**:MySQL、MongoDB 等数据库的远程管理
|
||||
4. **监控系统访问**:Grafana、Prometheus 等内网监控面板的公网展示
|
||||
|
||||
## Advantages
|
||||
|
||||
| 特性 | 说明 |
|
||||
|------|------|
|
||||
| **轻量** | 单二进制文件,无额外依赖 |
|
||||
| **高性能** | 基于 Go 语言,支持高并发连接 |
|
||||
| **自动重连** | 网络中断后自动重连 |
|
||||
| **热更新** | 支持配置热加载 |
|
||||
| **多协议支持** | TCP/UDP/HTTP/HTTPS |
|
||||
| **Web Dashboard** | 可选的图形化管理界面 |
|
||||
|
||||
## Related Concepts
|
||||
- [[内网穿透]] — frp 是实现内网穿透的典型工具
|
||||
- [[反向代理]] — frp 与 Caddy/Nginx 常配合使用
|
||||
- [[TCP 隧道]] — frp 建立的底层连接机制
|
||||
- [[VPS]] — frps 常部署在公网 VPS 上
|
||||
|
||||
## References
|
||||
- GitHub: https://github.com/fatedier/frp
|
||||
- 文档: https://gofrp.org/docs/
|
||||
---
|
||||
title: "frp"
|
||||
type: entity
|
||||
tags: [networking, open-source, golang, tunneling, self-hosted]
|
||||
last_updated: 2026-04-03
|
||||
---
|
||||
|
||||
# frp
|
||||
|
||||
## Overview
|
||||
**frp(Fast Reverse Proxy)** 是一款开源的高性能内网穿透工具,由 Go 语言编写,通过客户端-服务端架构(frps + frpc)建立反向隧道,使处于 NAT 或防火墙后的内网服务可以被公网访问。本 Wiki 使用 **frp v0.65.0**(INI 配置文件格式)。
|
||||
|
||||
## Core Architecture
|
||||
```
|
||||
公网用户 → VPS:7000(frps) ←——— 反向隧道 ←——— frpc(内网设备)
|
||||
```
|
||||
|
||||
## Components
|
||||
- **frps**(frp server):运行在公网 VPS,监听 7000 端口(默认),接收 frpc 连接,管理端口映射
|
||||
- **frpc**(frp client):运行在内网设备,主动连接 frps,建立反向隧道
|
||||
|
||||
## Supported Protocol Types
|
||||
| 类型 | 说明 | 适用场景 |
|
||||
|------|------|---------|
|
||||
| TCP | 原始 TCP 流量 | SSH、任意 TCP 端口 |
|
||||
| UDP | 原始 UDP 流量 | DNS、视频流 |
|
||||
| HTTP/HTTPS | 应用层代理 | Web 服务 |
|
||||
| STCP | 加密 TCP | 安全内网访问 |
|
||||
| SUDP | 加密 UDP | 安全数据传输 |
|
||||
| XTCP | P2P UDP | 穿越对称型 NAT |
|
||||
|
||||
## 在本 Wiki 中的应用
|
||||
- [[通过VPS+内网反向代理实现域名访问内网穿透]]:完整实践指南(frps + Caddy + 阿里云 DNS)
|
||||
- [[ubuntu-安装-frp-0-65-0-x86-64-操作笔记]]:Ubuntu frpc 客户端安装配置
|
||||
- [[mac-mini-安装-frp-0-65-0-arm64-操作笔记]]:Mac Mini ARM64 安装配置
|
||||
- [[家庭监控方案-prometheus-grafana-node-exporter-cadvisor-blackbox]]:通过 frp 穿透 Grafana/Prometheus 端口
|
||||
|
||||
## frpc 端口映射表(内网 Ubuntu 192.168.3.47)
|
||||
| 服务 | local_port | remote_port |
|
||||
|------|-----------|-------------|
|
||||
| n8n | 5678 | 15678 |
|
||||
| Transmission | 9091 | 19091 |
|
||||
| Grafana | 3000 | 13000 |
|
||||
| SSH | 22 | 60022 |
|
||||
|
||||
## SSH 穿透注意事项
|
||||
SSH 穿透使用 `type = tcp`,不走 Caddy(Caddy 只处理 HTTP/HTTPS)。SSH 连接命令:`ssh -p 60022 user@ubuntu1.ishenwei.online`
|
||||
|
||||
## Troubleshooting
|
||||
详见 [[通过VPS+内网反向代理实现域名访问内网穿透]] 故障排查章节:
|
||||
1. 确认 frps 监听端口 `ss -lntup | grep frps`
|
||||
2. 确认 token 与 frpc 一致 `journalctl -u frps -n 100`
|
||||
3. 确认防火墙放行 7000 端口
|
||||
4. telnet 诊断确认连接是否到达 frps
|
||||
5. 强制重启 frps + frpc
|
||||
|
||||
## Related Entities
|
||||
- [[RackNerd]]:托管 frps 的 VPS 提供商(IP: 192.227.222.142)
|
||||
- [[VPS]]:运行 frps 的公网服务器
|
||||
|
||||
## Related Concepts
|
||||
- [[内网穿透]]:frp 是实现内网穿透的工具
|
||||
- [[反向代理]]:Caddy 在 frp 上层提供 HTTPS 访问
|
||||
- [[TCP隧道]]:frp 的 TCP 类型映射建立 TCP 隧道
|
||||
|
||||
## References
|
||||
- GitHub: https://github.com/fatedier/frp
|
||||
- 文档: https://github.com/fatedier/frp#configuration
|
||||
|
||||
Reference in New Issue
Block a user