『Linux学习笔记』FRPC 详细介绍及配置解析! |
文章目录
- 一. FRPC 详细介绍及配置解析
- FRPC 的主要功能
- FRPC 配置文件解析
- 全局配置
- 代理配置
- 第一个代理服务
- 第二个代理服务
- 配置文件整体工作流程
- 常见配置项说明
- FRPC 的使用步骤
- 注意事项
- 结论
- 二. 参考文献
一. FRPC 详细介绍及配置解析
FRPC 是 FRP(Fast Reverse Proxy) 工具中的客户端组件,用于将本地服务通过 FRP 服务器暴露到外网。FRP 是一款高性能的反向代理应用,主要用于内网穿透,使得位于内网或防火墙后的服务可以被外网访问。FRP 由 FRPS(服务端)和 FRPC(客户端)两部分组成,FRPC 运行在需要暴露服务的机器上,FRPS 运行在具有公网 IP 的服务器上。
FRPC 的主要功能
- 内网穿透:将内网服务映射到公网,使外部用户可以访问内网服务。
- 多协议支持:支持 TCP、UDP、HTTP、HTTPS 等多种协议的代理。
- 高性能:采用多线程和高效的网络模型,保证数据传输的高性能和低延迟。
- 安全性:支持多种认证方式(如 token、TLS 等),确保数据传输的安全。
- 灵活配置:通过配置文件灵活定义多个代理服务,满足不同场景的需求。
FRPC 配置文件解析
以下是用户提供的 frpc.toml
配置文件内容:
serverAddr = "115xxxx98"
serverPort = 10000
auth.method = "token"
auth.token = "KHWp6xxxEj30jTI"
[[proxies]]
name = "hunxxxx01"
type = "tcp"
localPort = 10007
remotePort = 13007
[[proxies]]
name = "clothesxxxx_01"
type = "tcp"
localPort = 38001
remotePort = 13008
下面对该配置文件进行逐项解析:
全局配置
-
serverAddr
- 说明:FRP 服务端的地址,即 FRPS 运行的服务器的 IP 地址或域名。
- 示例值:
"115.231.111.98"
-
serverPort
- 说明:FRP 服务端监听的端口号,FRPC 将通过此端口与 FRPS 建立连接。
- 示例值:
10000
-
auth.method
- 说明:认证方法,用于 FRPC 和 FRPS 之间的身份验证。常用的认证方法包括
token
和tls
等。 - 示例值:
"token"
- 说明:认证方法,用于 FRPC 和 FRPS 之间的身份验证。常用的认证方法包括
-
auth.token
- 说明:当
auth.method
设置为token
时,使用的认证令牌。此令牌需要与 FRPS 配置中的令牌一致,确保 FRPC 能成功连接到 FRPS。 - 示例值:
"KHWp6xxxEj30jTI"
- 说明:当
代理配置
配置文件中定义了两个代理服务,分别在 [[proxies]]
块中进行配置。每个 [[proxies]]
块代表一个独立的代理服务。
第一个代理服务
-
name
- 说明:代理服务的名称,用于在 FRPS 上区分不同的代理。
- 示例值:
"hunxxxx01"
-
type
- 说明:代理类型,决定了数据传输的协议。常见类型包括
tcp
、udp
、http
、https
等。 - 示例值:
"tcp"
- 说明:代理类型,决定了数据传输的协议。常见类型包括
-
localPort
- 说明:本地服务的端口号,FRPC 将转发来自 FRPS 的流量到这个端口。
- 示例值:
10007
-
remotePort
- 说明:FRPS 服务器上分配的端口号,外部用户通过访问这个端口来访问内网的服务。
- 示例值:
13007
解释:这个代理配置将本地机器(运行 FRPC 的机器)上端口 10007
的 TCP 服务,通过 FRPS 的 115.231.111.98:10000
服务器上的端口 13007
暴露到外网。外部用户访问 115.231.111.98:13007
即可访问本地的 10007
端口服务。
第二个代理服务
-
name
- 说明:代理服务的名称。
- 示例值:
"clothesxxxx_01"
-
type
- 说明:代理类型。
- 示例值:
"tcp"
-
localPort
- 说明:本地服务的端口号。
- 示例值:
38001
-
remotePort
- 说明:FRPS 服务器上分配的端口号。
- 示例值:
13008
解释:这个代理配置将本地机器上端口 38001
的 TCP 服务,通过 FRPS 的 115.231.111.98:10000
服务器上的端口 13008
暴露到外网。外部用户访问 115.231.111.98:13008
即可访问本地的 38001
端口服务。
配置文件整体工作流程
- FRPC 启动:运行
frpc
客户端,加载frpc.toml
配置文件。 - 连接 FRPS:FRPC 根据
serverAddr
和serverPort
连接到 FRPS,并使用auth.method
和auth.token
进行身份验证。 - 建立代理:根据
[[proxies]]
配置,FRPC 会向 FRPS 注册多个代理,每个代理对应一个本地服务。 - 数据转发:
- 外部用户访问 FRPS 的
remotePort
,FRPS 将流量转发给 FRPC。 - FRPC 接收到流量后,将其转发到本地的
localPort
,完成数据传输。
- 外部用户访问 FRPS 的
常见配置项说明
除了上述配置文件中的参数,FRPC 的配置文件还支持多种其他配置项,以满足不同的需求:
- logLevel:日志级别,如
info
、warn
、error
。 - logFile:日志文件路径。
- protocol:协议类型,支持
tcp
、kcp
、udp
等。 - heartbeatInterval:心跳间隔,保持连接的稳定性。
- tls_enable:是否启用 TLS 加密。
FRPC 的使用步骤
- 下载 FRP:从 FRP 的 GitHub 仓库 下载适用于操作系统的 FRP 版本。
- 配置 FRPS:在具有公网 IP 的服务器上配置并启动 FRPS,确保防火墙允许 FRPS 监听的端口(如
10000
)。 - 配置 FRPC:在需要暴露服务的内网机器上,编写
frpc.toml
配置文件,指定要代理的服务。 - 启动 FRPC:运行
frpc
客户端,开始与 FRPS 建立连接并代理服务。 - 访问服务:通过访问 FRPS 的
remotePort
,即可访问内网的服务。
注意事项
- 安全性:确保
auth.token
或其他认证方式的安全,避免未经授权的访问。 - 端口管理:FRPS 服务器上的
remotePort
需要合理分配,避免端口冲突。 - 网络带宽:FRP 的性能依赖于 FRPS 服务器的网络带宽,确保 FRPS 服务器具备足够的带宽以支持预期的流量。
- 日志监控:定期检查 FRPC 和 FRPS 的日志,及时发现和解决潜在问题。
结论
FRPC 是 FRP 工具中关键的客户端组件,通过配置文件可以灵活地将内网服务暴露到公网。理解和正确配置 frpc.toml
文件,对于实现高效、安全的内网穿透至关重要。上述解析希望能帮助您更好地理解 FRPC 的工作原理及配置方法。
二. 参考文献
- frp中文文档:https://gofrp.org/zh-cn/docs/overview/
- docker容器:https://hub.docker.com/r/snowdreamtech/frpc
- https://github.com/fatedier/frp/blob/dev/README_zh.md
docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps
docker run --restart=always --network host -d -v /etc/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc