frp 配置参数详解
frp 0.71.0 的 frps.toml/frpc.toml 配置参数总览与分类详解,含服务端/面板/鉴权/传输/客户端/代理段各参数含义与真实默认值、生产配置模板与常见问题,基于实测回显归纳。
frp 配置参数详解
目标:详解 frp 0.71.0 的 TOML 配置(
frps.toml/frpc.toml)全部参数含义与真实默认值,按服务端、面板、鉴权、传输、客户端、代理段分类说明,并给出生产配置模板与常见问题。默认值均取自frps --help/frpc --help实测回显。
一、环境信息
- frp 版本:0.71.0
- 配置格式:TOML(
frps.toml/frpc.toml;0.36.0 前的旧版为 INI) - 默认配置文件:frps 无默认
-c(需显式指定);frpc 默认./frpc.ini - 默认值来源:
frps --help/frpc --help实测 - 实测架构:Ubuntu 22.04 / amd64
二、前置条件
- 已按《Ubuntu 22.04 安装 frp 指南》部署好 frps / frpc。
- 配置文件位置:服务端
/opt/frp/frps.toml,客户端/opt/frp/frpc.toml。
三、参数查看与修改方式
- 查看全部参数与默认值:
/opt/frp/frps --help /opt/frp/frpc --help - 配置以 TOML 键值对写入对应
.toml文件,命令行同名 flag 可覆盖(命令行优先)。 - 校验语法:
实测回显(两者语法均 ok):
/opt/frp/frps verify -c /opt/frp/frps.toml /opt/frp/frpc verify -c /opt/frp/frpc.tomlfrps: the configuration file /opt/frp/frps.toml syntax is ok frpc: the configuration file /opt/frp/frpc.toml syntax is ok
⚠️ 注意:新版默认开启
--strict-config(默认true),未知字段会直接报错。枚举/布尔值务必按文档写,否则verify即失败。
四、参数总览
4.1 frps(服务端)常用参数
| 参数 | 默认值 | 说明 |
|---|---|---|
bindAddr | 0.0.0.0 | frps 对外绑定地址 |
bindPort | 7000 | frps 主监听端口(frpc 需连接) |
kcpBindPort | 未设置 | KCP 监听 UDP 端口 |
quicBindPort | 未设置 | QUIC 监听 UDP 端口 |
proxyBindAddr | 0.0.0.0 | 代理转发绑定地址 |
vhostHttpPort | 未设置 | HTTP 虚拟主机端口(http/https 代理所需) |
vhostHttpsPort | 未设置 | HTTPS 虚拟主机端口 |
vhostHttpTimeout | 60 | HTTP vhost 响应头超时(秒) |
subdomainHost | 未设置 | 子域名通配主机 |
maxPortsPerClient | 未设置 | 单客户端最大端口数 |
allowPorts | 空 | 允许映射的端口范围 |
tlsOnly | false | 仅允许 TLS 连接 |
auth.method | token | 鉴权方式(token) |
auth.token | 空 | 共享令牌(两端必须一致) |
webServer.addr | 0.0.0.0 | 面板监听地址 |
webServer.port | 未设置 | 面板端口(如 7500) |
webServer.user | admin | 面板用户名 |
webServer.password | admin | 面板密码 |
log.to | console | 日志输出(console 或文件路径) |
log.level | info | 日志级别 |
log.maxDays | 3 | 日志文件保留天数 |
4.2 frpc(客户端)常用参数
| 参数 | 默认值 | 说明 |
|---|---|---|
serverAddr | 127.0.0.1 | frps 地址 |
serverPort | 7000 | frps 端口 |
auth.method | token | 鉴权方式 |
auth.token | 空 | 共享令牌 |
loginFailExit | true | 登录失败是否直接退出 |
transport.protocol | tcp | 传输协议(tcp/kcp/quic/websocket/wss) |
transport.tls.enable | true | 是否启用 TLS |
proxy(每段代理) | — | 见 六、代理段详解 |
webServer.port | 未设置 | 本地管理 API 端口(frpc status/reload 依赖) |
log | — | 同 frps 日志段 |
五、核心参数分类详解
5.1 服务端基础段(frps)
bindAddr / bindPort 决定 frps 的服务入口;kcpBindPort / quicBindPort 用于支持 kcp/quic 协议探测的客户端;proxyBindAddr 指定代理数据转发绑定地址。示例:
bindAddr = "0.0.0.0"
bindPort = 7000
kcpBindPort = 7000
proxyBindAddr = "0.0.0.0"
💡 说明:
kcpBindPort可与bindPort相同(实测 vhost kcp 复用 UDP 端口),用于高丢包弱网场景;QUIC 同理。
5.2 面板段(webServer,frps)
内置可视化面板,用于查看在线客户端与代理:
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "q1w2e3r4"
⚠️ 注意:新版把面板参数统一收敛到
webServer.*段,旧版顶层dashboardPort等不再被识别,写错会报json: unknown field "dashboardPort"(见 FAQ)。
5.3 鉴权段(auth)
两端共享令牌,不匹配则握手失败:
auth.method = "token"
auth.token = "q1w2e3r4"
⚠️ 注意:
auth.token属敏感值,生产请用独立生成的强口令,并通过系统密钥注入(环境变量/编排平台透传),避免明文入库。
5.4 传输段(transport)
在 frpc 上控制与 frps 的通信协议与加密:
serverAddr = "120.10.10.1"
serverPort = 7000
transport.protocol = "tcp"
transport.tls.enable = true
transport.protocol可选tcp/kcp/quic/websocket/wss(默认tcp)。transport.tls.enable默认true;frps 侧配tlsOnly = true时强制全链路 TLS。
5.5 客户端连接段(frpc)
serverAddr = "120.10.10.1"
serverPort = 7000
loginFailExit = true
loginFailExit = true时,frpc 首次连接 frps 失败即退出(实测提示With loginFailExit enabled, no additional retries will be attempted);false时持续重试。- frpc 的本地管理 API(
frpc status/reload/stop)依赖:
webServer.addr = "127.0.0.1"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "q1w2e3r4"
💡 说明:不配
webServer.port时执行frpc status会提示web server port should be set if you want to use this feature。
5.6 代理段([[proxies]],frpc)
frpc 通过一个或多个 [[proxies]] 段定义穿透规则,核心字段:
| 字段 | 说明 |
|---|---|
name | 代理名(唯一) |
type | tcp / udp / http / https / stcp / xtcp / tcpmux / sudp |
localIP | 本地目标 IP(默认 127.0.0.1) |
localPort | 本地目标端口 |
remotePort | 服务端对外端口(tcp/udp 用) |
customDomains | 自定义域名列表(http/https 用) |
transport.bandwidthLimit | 带宽限制(如 1MB) |
useCompression / useEncryption | 压缩 / 加密 |
TCP 代理示例:
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
HTTP 代理示例(需 frps 开启 vhostHttpPort):
[[proxies]]
name = "web"
type = "http"
localIP = "127.0.0.1"
localPort = 8080
customDomains = ["web.example.com"]
UDP 代理示例(如暴露 DNS/SNMP):
[[proxies]]
name = "udp-dns"
type = "udp"
localIP = "127.0.0.1"
localPort = 53
remotePort = 6053
💡 说明:
http/https类型依赖 frps 的vhostHttpPort/vhostHttpsPort;未设置会报type [http] not supported when vhost http port is not set。tcp/udp直接由 frps 在remotePort侦听。
5.7 日志段(log)
log.to = "console"
log.level = "info"
log.maxDays = 3
log.to:console是标准输出(systemd/journald/compose 可采集);也可写文件路径实现文件日志保留。log.level:可选trace/debug/info/warn/error,默认info。log.maxDays:文件日志保留天数,默认3。
六、生产配置模板
适用场景:4 核 8G 内存、SSD 磁盘、50 个以内穿透隧道的中小规模生产环境。
frps.toml(服务端)
bindAddr = "0.0.0.0"
bindPort = 7000
kcpBindPort = 7000
proxyBindAddr = "0.0.0.0"
vhostHttpPort = 80
vhostHttpsPort = 443
subdomainHost = "frp.example.com"
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "q1w2e3r4"
auth.method = "token"
auth.token = "q1w2e3r4"
log.to = "file"
log.level = "info"
log.maxDays = 7
💡 说明:面板(
7500)与vhostHttpPort/vhostHttpsPort建议在安全组/防火墙按需收敛;auth.token生产请替换为强口令。
frpc.toml(客户端)
serverAddr = "120.10.10.1"
serverPort = 7000
transport.protocol = "tcp"
transport.tls.enable = true
loginFailExit = true
auth.method = "token"
auth.token = "q1w2e3r4"
webServer.addr = "127.0.0.1"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "q1w2e3r4"
log.to = "file"
log.level = "info"
log.maxDays = 3
SSH 与 Web 一组示例代理:
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
[[proxies]]
name = "web"
type = "http"
localIP = "127.0.0.1"
localPort = 8080
customDomains = ["web.example.com"]
transport.bandwidthLimit = "10MB"
⚠️ 注意:
customDomains需将对应域名解析到 frps 所在服务器,才能通过 vhost 分流转发到本地端口。示例域名web.example.com、地址120.10.10.1均为演示值,生产按实际填写。
七、常见问题(FAQ)
Q1:配置报 json: unknown field "dashboardPort"?
面板参数已迁移到 webServer.* 段。把顶层 dashboardPort/dashboardUser/dashboardPwd 改为 webServer.port/webServer.user/webServer.password 即可。
Q2:frpc status 提示 web server port should be set?
frpc 未配 webServer.port。为 frpc 加上 webServer.addr/webServer.port/webServer.user/webServer.password 后重启,frpc status 即可工作。
Q3:为什么 http 代理报 vhost http port is not set?
frps 未配 vhostHttpPort。在 frps.toml 加 vhostHttpPort = 80(并 systemctl restart frps 使配置生效)。
Q4:auth.token 不匹配会怎样?
frpc 发起 login 时鉴权失败,服务端记录握手失败并拒绝注册代理。排查时把两端 token 对齐并 verify 两端配置。
Q5:改了 TOML 需要重启吗?
frps 必须 systemctl restart frps(或 compose restart frps);frpc 可 frpc reload 热加载(新增/删除/改代理即时生效,不影响已有连接),或 systemctl restart frpc。
Q6:useCompression 与 useEncryption 在哪配?
在 [[proxies]] 段配 useCompression = true、useEncryption = true;也可用命令行单代理子命令的 --uc / --ue 开关。
八、参考链接
- frp 配置文档:
https://github.com/fatedier/frp/tree/master/doc - 全文参数默认值:以
frps --help/frpc --help实测为准 - frp 官方仓库:
https://github.com/fatedier/frp