本页目录
办公室服务迁移后,内网服务需要重新配置远程访问。我使用 FRP,让内网客户端主动连接公网服务端,再把外部请求转回指定服务。这篇先跑 Web 示例,再看软路由客户端、TCP 映射和两种管理界面。
版本边界:这是 2020 年 FRP
v0.34.3的 INI 配置记录,新部署应使用官方当前版本与配置说明。下面示例用于理解旧环境,不能逐字贴进新版 TOML。网络能穿透,不等于服务可以无鉴权公开。
1. FRP 简介:服务端在公网,客户端在内网
外部访问者 → 公网主机 frps → 已建立的连接 → 内网 frpc → 目标服务
| 准备项 | 用途 |
|---|---|
| 可达的公网主机 | 运行 frps,接收客户端与外部请求 |
| 内网主机或路由设备 | 运行 frpc,连接需要访问的服务 |
| 相容的 FRP 版本与平台包 | 两端分别选择对应系统、架构 |
| 域名与 DNS 记录 | HTTP 虚拟主机示例按域名匹配 |
| 防火墙与服务认证 | 仅开放需要的范围,保护实际服务 |
frps 是服务端,frpc 是客户端;这两个二进制与各自配置文件别混用。HTTP 可以共享服务端端口、按域名区分请求,TCP 映射则通常为目标指定独立远端端口。
2. 服务端:下载、配置、启动
从 官方 Releases选择平台包并核对版本、架构与文件。旧环境使用 Linux amd64 包,解压后编辑 frps.ini。
[common]
bind_port = 7000
vhost_http_port = 54321
vhost_https_port = 54322
token = REPLACE_WITH_A_RANDOM_SHARED_SECRET
这里的数字是可调整的示例端口,不是只能使用的固定值;鉴权值必须自行生成,两端一致,不使用短数字演示口令。
| 参数 | 用途 |
|---|---|
bind_port | 客户端连接服务端的通信端口 |
vhost_http_port | HTTP 虚拟主机入口 |
vhost_https_port | HTTPS 虚拟主机入口,不自动为应用签发证书 |
token | 此旧版本中的共享鉴权值 |
先前台启动,看到日志再判断配置是否有效:
./frps -c ./frps.ini
前台可用 Ctrl + C 停止。旧环境也使用过 nohup:
nohup ./frps -c ./frps.ini > frps.log 2>&1 &
它将进程放到后台并处理挂断信号,不提供完整的重启、健康检查或日志管理;长期运行应使用系统服务管理。停进程时先确认 PID,优先正常终止,不把强制 kill -9 当默认步骤。
3. 客户端:先映射 Web 服务,再从外部验证
Windows、Linux 和 Mac 的旧版配置
下载对应客户端包,修改 frpc.ini。下面是独立的占位示例,域名与鉴权均需替换:
[common]
server_addr = frp.example.com
server_port = 7000
token = REPLACE_WITH_A_RANDOM_SHARED_SECRET
[web-demo]
type = http
local_ip = 127.0.0.1
local_port = 80
custom_domains = demo.example.com
local_ip 是从 frpc 所在机器看目标服务的地址。服务在本机才用 127.0.0.1;服务在另一台局域网设备上就填其内网地址,先确认客户端本身能访问它。
HTTP 示例不靠客户端的 remote_port 区分站点,而由服务端 vhost_http_port 接收,按 custom_domains 匹配。先将该域名解析到公网服务端,再在客户端目录启动:
# Linux / Mac 的旧版客户端
./frpc -c ./frpc.ini
# Windows 的旧版客户端
.\frpc.exe -c .\frpc.ini
日志连接成功后,先确认本地 Web 服务可用,再从另一台设备或网络访问对应域名与入口端口。停止客户端后再验证服务不可达,有助于确认确实经过这条链路。不要只看浏览器缓存里的旧页面。
LEDE 客户端:界面对应同一套参数
我使用的旧 LEDE 插件把配置分成基本配置和穿透配置。先启用 FRPC,填公网服务器地址、连接端口和鉴权;HTTP 项再填目标 LAN 地址、目标端口与域名。
插件的 TCP 多路复用设置需与服务端版本及配置一致,不能单纯说某个开关必须永远为 true。修改后看日志和实际请求,固件、插件来源和维护状态也要核对。
在路由设备上运行客户端,可以连接其可达的其他 LAN 服务,不必每台目标机器都装 frpc;但路由器上的 127.0.0.1 指路由器自己,不是桌面电脑。配置生成后可核对实际文件,避免界面与运行配置不同步。
4. TCP 映射:本地端口与远端端口分开
旧版 TCP 配置的关键字段如下:
[service-demo]
type = tcp
local_ip = 127.0.0.1
local_port = 3306
remote_port = 54329
这里用数据库端口说明映射关系,不建议把数据库裸露给互联网。客户端连接本地服务,外部访问服务端的 54329;不是把外部客户端仍填成 3306。实际访问控制、强鉴权、加密和防火墙允许范围要在开放前准备好。
尽量采用受限通道访问管理和数据库服务。验证既要试允许的连接,也要确认未授权请求被拒绝;测试结束撤销不需要的映射与防火墙规则。
5. Dashboard 与 AdminUI:管理入口别一起公开
| 界面 | 配置位置 | 用途 |
|---|---|---|
| Dashboard | frps 服务端 | 查看服务端状态、代理与流量 |
| AdminUI | frpc 客户端 | 查看或管理客户端配置 |
旧版 Dashboard 使用 dashboard_port、dashboard_user、dashboard_pwd 等字段;客户端使用 admin_addr、admin_port 与对应凭证。客户端示例将 admin_addr 设为 127.0.0.1,只在本机访问。
管理界面不是业务服务,不能为了省事把同一批端口都开放。公网侧限制管理来源,使用独立强凭证;不要沿用示例 admin/admin 或把真实配置贴进文章。新版字段和 Web 管理方式以当前文档为准。
从连通到可维护,还要再走一步
主线就是服务端入口、客户端目标、域名或端口匹配,再加实际服务自己的安全措施。连接成功、外部可访问、未授权被拒绝、停用后入口收回,分别检查才算完整。
欢迎分享你的平台、版本与脱敏日志,别只贴“连接不上”。感谢阅读,希望这份旧版记录能帮你理解原理;今天新部署还是从官方当前配置开始,不为复刻教程继续使用旧二进制和旧口令。



