frp 配置参数详解

frp 0.71.0 的 frps.toml/frpc.toml 配置参数总览与分类详解,含服务端/面板/鉴权/传输/客户端/代理段各参数含义与真实默认值、生产配置模板与常见问题,基于实测回显归纳。

frpfrp配置详解2026/10/09

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。

三、参数查看与修改方式

  1. 查看全部参数与默认值:
    /opt/frp/frps --help
    /opt/frp/frpc --help
    
  2. 配置以 TOML 键值对写入对应 .toml 文件,命令行同名 flag 可覆盖(命令行优先)。
  3. 校验语法:
    /opt/frp/frps verify -c /opt/frp/frps.toml
    /opt/frp/frpc verify -c /opt/frp/frpc.toml
    
    实测回显(两者语法均 ok):
    frps: 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(服务端)常用参数

参数默认值说明
bindAddr0.0.0.0frps 对外绑定地址
bindPort7000frps 主监听端口(frpc 需连接)
kcpBindPort未设置KCP 监听 UDP 端口
quicBindPort未设置QUIC 监听 UDP 端口
proxyBindAddr0.0.0.0代理转发绑定地址
vhostHttpPort未设置HTTP 虚拟主机端口(http/https 代理所需)
vhostHttpsPort未设置HTTPS 虚拟主机端口
vhostHttpTimeout60HTTP vhost 响应头超时(秒)
subdomainHost未设置子域名通配主机
maxPortsPerClient未设置单客户端最大端口数
allowPorts空允许映射的端口范围
tlsOnlyfalse仅允许 TLS 连接
auth.methodtoken鉴权方式(token)
auth.token空共享令牌(两端必须一致)
webServer.addr0.0.0.0面板监听地址
webServer.port未设置面板端口(如 7500)
webServer.useradmin面板用户名
webServer.passwordadmin面板密码
log.toconsole日志输出(console 或文件路径)
log.levelinfo日志级别
log.maxDays3日志文件保留天数

4.2 frpc(客户端)常用参数

参数默认值说明
serverAddr127.0.0.1frps 地址
serverPort7000frps 端口
auth.methodtoken鉴权方式
auth.token空共享令牌
loginFailExittrue登录失败是否直接退出
transport.protocoltcp传输协议(tcp/kcp/quic/websocket/wss)
transport.tls.enabletrue是否启用 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代理名(唯一)
typetcp / 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