『Linux学习笔记』FRPC 详细介绍及配置解析!

『Linux学习笔记』FRPC 详细介绍及配置解析!

文章目录

  • 一. FRPC 详细介绍及配置解析
      • FRPC 的主要功能
      • FRPC 配置文件解析
        • 全局配置
        • 代理配置
          • 第一个代理服务
          • 第二个代理服务
      • 配置文件整体工作流程
      • 常见配置项说明
      • FRPC 的使用步骤
      • 注意事项
      • 结论
  • 二. 参考文献

一. FRPC 详细介绍及配置解析

在这里插入图片描述

FRPC 是 FRP(Fast Reverse Proxy) 工具中的客户端组件,用于将本地服务通过 FRP 服务器暴露到外网。FRP 是一款高性能的反向代理应用,主要用于内网穿透,使得位于内网或防火墙后的服务可以被外网访问。FRP 由 FRPS(服务端)和 FRPC(客户端)两部分组成,FRPC 运行在需要暴露服务的机器上,FRPS 运行在具有公网 IP 的服务器上。

FRPC 的主要功能

  1. 内网穿透:将内网服务映射到公网,使外部用户可以访问内网服务。
  2. 多协议支持:支持 TCP、UDP、HTTP、HTTPS 等多种协议的代理。
  3. 高性能:采用多线程和高效的网络模型,保证数据传输的高性能和低延迟。
  4. 安全性:支持多种认证方式(如 token、TLS 等),确保数据传输的安全。
  5. 灵活配置:通过配置文件灵活定义多个代理服务,满足不同场景的需求。

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

下面对该配置文件进行逐项解析:

全局配置
  1. serverAddr

    • 说明:FRP 服务端的地址,即 FRPS 运行的服务器的 IP 地址或域名。
    • 示例值"115.231.111.98"
  2. serverPort

    • 说明:FRP 服务端监听的端口号,FRPC 将通过此端口与 FRPS 建立连接。
    • 示例值10000
  3. auth.method

    • 说明:认证方法,用于 FRPC 和 FRPS 之间的身份验证。常用的认证方法包括 tokentls 等。
    • 示例值"token"
  4. auth.token

    • 说明:当 auth.method 设置为 token 时,使用的认证令牌。此令牌需要与 FRPS 配置中的令牌一致,确保 FRPC 能成功连接到 FRPS。
    • 示例值"KHWp6xxxEj30jTI"
代理配置

配置文件中定义了两个代理服务,分别在 [[proxies]] 块中进行配置。每个 [[proxies]] 块代表一个独立的代理服务。

第一个代理服务
  1. name

    • 说明:代理服务的名称,用于在 FRPS 上区分不同的代理。
    • 示例值"hunxxxx01"
  2. type

    • 说明:代理类型,决定了数据传输的协议。常见类型包括 tcpudphttphttps 等。
    • 示例值"tcp"
  3. localPort

    • 说明:本地服务的端口号,FRPC 将转发来自 FRPS 的流量到这个端口。
    • 示例值10007
  4. remotePort

    • 说明:FRPS 服务器上分配的端口号,外部用户通过访问这个端口来访问内网的服务。
    • 示例值13007

解释:这个代理配置将本地机器(运行 FRPC 的机器)上端口 10007 的 TCP 服务,通过 FRPS 的 115.231.111.98:10000 服务器上的端口 13007 暴露到外网。外部用户访问 115.231.111.98:13007 即可访问本地的 10007 端口服务。

第二个代理服务
  1. name

    • 说明:代理服务的名称。
    • 示例值"clothesxxxx_01"
  2. type

    • 说明:代理类型。
    • 示例值"tcp"
  3. localPort

    • 说明:本地服务的端口号。
    • 示例值38001
  4. remotePort

    • 说明:FRPS 服务器上分配的端口号。
    • 示例值13008

解释:这个代理配置将本地机器上端口 38001 的 TCP 服务,通过 FRPS 的 115.231.111.98:10000 服务器上的端口 13008 暴露到外网。外部用户访问 115.231.111.98:13008 即可访问本地的 38001 端口服务。

配置文件整体工作流程

  1. FRPC 启动:运行 frpc 客户端,加载 frpc.toml 配置文件。
  2. 连接 FRPS:FRPC 根据 serverAddrserverPort 连接到 FRPS,并使用 auth.methodauth.token 进行身份验证。
  3. 建立代理:根据 [[proxies]] 配置,FRPC 会向 FRPS 注册多个代理,每个代理对应一个本地服务。
  4. 数据转发
    • 外部用户访问 FRPS 的 remotePort,FRPS 将流量转发给 FRPC。
    • FRPC 接收到流量后,将其转发到本地的 localPort,完成数据传输。

常见配置项说明

除了上述配置文件中的参数,FRPC 的配置文件还支持多种其他配置项,以满足不同的需求:

  • logLevel:日志级别,如 infowarnerror
  • logFile:日志文件路径。
  • protocol:协议类型,支持 tcpkcpudp 等。
  • heartbeatInterval:心跳间隔,保持连接的稳定性。
  • tls_enable:是否启用 TLS 加密。

FRPC 的使用步骤

  1. 下载 FRP:从 FRP 的 GitHub 仓库 下载适用于操作系统的 FRP 版本。
  2. 配置 FRPS:在具有公网 IP 的服务器上配置并启动 FRPS,确保防火墙允许 FRPS 监听的端口(如 10000)。
  3. 配置 FRPC:在需要暴露服务的内网机器上,编写 frpc.toml 配置文件,指定要代理的服务。
  4. 启动 FRPC:运行 frpc 客户端,开始与 FRPS 建立连接并代理服务。
  5. 访问服务:通过访问 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/64953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql中局部变量_MySQL中变量的总结

本文对MySQL中局部变量、用户变量、系统变量的理解进行总结。 一、局部变量 局部变量由DECLARE语句声明: DECLARE var_name[,...] type [DEFAULT value] 默认值由DEFAULT子句来声明,默认值也可以是一个表达式。 局部变量的作用范围仅限在它被声明的BEGIN…

JAVA将集合切分成指定份数(简易)

JAVA将集合切分成指定份数 主要方法 /** * 主要方法* param list 切分的集合* param count 切成的份数* return*/ public static List<List> splitList(List list,int count){if(count <0 ){return Lists.newArrayList();}List<List> result Lists.newArrayL…

ECharts关系图-关系图11,附视频讲解与代码下载

引言&#xff1a; 关系图&#xff08;或称网络图、关系网络图&#xff09;在数据可视化中扮演着至关重要的角色。它们通过节点&#xff08;代表实体&#xff0c;如人、物体、概念等&#xff09;和边&#xff08;代表实体之间的关系或连接&#xff09;的形式&#xff0c;直观地…

OpenHarmony的分布式服务框架介绍与实现解析

OpenHarmony的分布式服务框架是一个用于实现设备间高效协作与资源共享的重要架构&#xff0c;以下是其详细介绍&#xff1a; 框架概述 OpenHarmony的分布式服务框架基于分布式软总线、分布式数据管理、分布式Profile等技术特性&#xff0c;构建了统一的分布式服务管理机制&am…

网安瞭望台第17期:Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析

国内外要闻 Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析 在网络安全的复杂战场中&#xff0c;近期出现了一个值得关注的动态&#xff1a;名为 Rockstar 2FA 的钓鱼即服务&#xff08;PhaaS&#xff09;工具包遭遇变故&#xff0c;意外推动了另一个新生服务 Flo…

抚琴成一快-如何即兴谱例

如何即兴配套谱例 1.即兴01谱例2.即兴02谱例 1.即兴01谱例 2.即兴02谱例 慢推弦&#xff0c;1.5比较合适

uniapp登录

第一步整登录 先整个appid APPID和APPSecret https://developers.weixin.qq.com/community/develop/article/doc/000ca4601b8f70e379febac985b413 一个账号只能整一个小程序 正确流程 调用uni.login https://juejin.cn/post/7126553599445827621 https://www.jb51.net/a…

[python]pymc3-3.11.0安装后测试代码

测试通过环境&#xff1a; pymc33.11.0 python3.8 测试代码&#xff1a; import arviz as az import matplotlib.pyplot as plt import numpy as np import pymc3 as pm RANDOM_SEED 8927 np.random.seed(RANDOM_SEED) az.style.use("arviz-darkgrid") # True p…

基于微信小程序的短视频系统(SpringBoot)+文档

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

深入理解 Linux wc 命令

文章目录 深入理解 Linux wc 命令1. 基本功能2. 常用选项3. 示例3.1 统计文件的行、单词和字符数3.2 仅统计行数3.3 统计多个文件的总和3.4 使用管道统计命令输出的行数 4. 实用案例4.1 日志分析4.2 快速统计代码行数4.3 统计单词频率 5. 注意事项6. 总结 深入理解 Linux wc 命…

DataV的安装与使用(Vue3版本)

1、DataV(vue3)地址&#xff1a;DataV Vue3TSVite版 | DataV - Vue3 2、使用 npm install kjgl77/datav-vue3 安装 3、全局引入。 4、此时就可以按需使用了~

云原生服务网格Istio实战

基础介绍 1、Istio的定义 Istio 是一个开源服务网格&#xff0c;它透明地分层到现有的分布式应用程序上。 Istio 强大的特性提供了一种统一和更有效的方式来保护、连接和监视服务。 Istio 是实现负载平衡、服务到服务身份验证和监视的路径——只需要很少或不需要更改服务代码…

Flutter web - 5 项目打包优化

介绍 目前 flutter 对 web 的打包产物优化较少&#xff0c;存在 main.dart.js 单个文件体积过大问题&#xff0c;打包文件名没有 hash 值&#xff0c;如果有使用 CDN 会存在资源不能及时更新问题。本文章会对这些问题进行优化。 优化打包产物体积 从打包产物中可以看到其中 …

KingbaseES(金仓数据库)入门学习

前言 金仓是一种多进程架构&#xff0c;每一个连接到服务器的会话&#xff0c;在服务器上面都会为该会话分配进程 图形化界面管理 新建数据库名 然后新建一个模式 再创建一个表 新建一个表&#xff0c;然后设置列名 记得要保存 查询数据 也可以新建数据表&#xff0c;用命令…

基于Springboot的数字科技风险报告管理系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实…

【大模型】ChatGPT 打造个人专属GPTs助手使用详解

目录 一、前言 二、GPTs介绍 2.1 GPTs是什么 2.2 GPTs工作原理 2.3 GPTs 主要功能 2.4 GPTs 应用场景 2.5 GPTs 优缺点 三、GPTs 创建个人专属应用操作过程 3.1 内置GPTs模板 3.1.1 内置GPTs使用过程 3.2 手动配置方式创建 GPTs 3.2.1 创建过程 3.3 使用对话方式创…

Cobalt Strike 4.8 用户指南-第十四节 Aggressor 脚本

14.1、什么是Aggressor脚本 Aggressor Script 是Cobalt Strike 3.0版及更高版本中内置的脚本语言。Aggressor 脚本允许你修改和扩展 Cobalt Strike 客户端。 历史 Aggressor Script 是 Armitage 中开源脚本引擎Cortana的精神继承者。Cortana 是通过与 DARPA 的网络快速跟踪计…

Vue(四)

1.Vuex 1.1 Vuex是什么 Vuex 是一个插件&#xff0c;可以帮我们管理 Vue 通用的数据。例如&#xff1a;购物车数据、个人信息数据。 1.2 vuex的使用 1.安装 vuex 安装 vuex 与 vue-router 类似&#xff0c;vuex 是一个独立存在的插件&#xff0c;如果脚手架初始化没有选 v…

基础9 CRTP 与 Expression Templates

目录 一、奇异递归模版(CRTP) 二、表达式模板 &#x1f349; 概要 &#x1f347; 奇异递归模板模式&#xff08;CRTP&#xff09; 动机与原理 &#x1f353; 表达式模板&#xff08;Expression Templates&#xff09; 动机与原理 &#x1f348; 示例代码 &#x1f35…

分布式协同 - 分布式事务_TCC解决方案

文章目录 导图Pre流程图2PC VS 3PC VS TCC2PC&#xff08;Two-Phase Commit&#xff0c;二阶段提交&#xff09;3PC&#xff08;Three-Phase Commit&#xff0c;三阶段提交&#xff09;TCC&#xff08;Try-Confirm-Cancel&#xff09;2PC、3PC与TCC的区别2PC、3PC与TCC的联系 导…