『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…

Netty内存泄漏:LEAK: ByteBuf.release() was not called before it‘s garbage-collected.

文章目录 前言ByteBuf问题分析解决方法单个方法中ChannelHandler链中 前言 项目中使用Netty接收设备传递的数据时,查看日志发现有时会报错:LEAK: ByteBuf.release() was not called before its garbage-collected. 根据提示也可以看出是使用ByteBuf时&a…

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;直观地…

java 对mongodb操作封装工具类

在 Java 中&#xff0c;封装 MongoDB 操作的工具类是非常常见的做法。使用 MongoDB 官方的 Java 驱动程序&#xff0c;结合常用的工具类封装&#xff0c;可以使得与 MongoDB 的交互更加方便和清晰。下面是一个简单的 MongoDB 操作封装工具类的示例代码。 前提 首先&#xff0…

事件响应基本流程

虽然安全专业人员努力保护系统免受恶意攻击或人为疏忽&#xff0c;但尽管做出了这些努力&#xff0c;但不可避免地会出现问题。出于这个原因&#xff0c;安全专业人员也扮演着第一响应者的角色。要了解事件响应&#xff0c;首先要了解用于描述各种网络攻击的术语。 违规 失控…

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

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

Java爬虫获取1688关键字接口详细解析

概述 在电商领域&#xff0c;获取商品信息和价格对于市场分析、价格监控和供应链管理至关重要。1688作为中国领先的B2B电商平台&#xff0c;提供了海量的商品数据。本文将详细介绍如何利用Java爬虫技术合法合规地获取1688商品关键字接口数据。 前期准备 Java开发环境&#x…

【漏洞复现】BIG-IP Next Central Manager OData 注入漏洞(CVE-2024-21793)

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 一、漏洞概述 1.1漏洞简介 漏洞名称:BIG-IP Next Central Manager OData 注入漏洞漏洞编号:CVE-2024-21793漏洞威胁等级:超危影响范围:BIG-IP Next Central Manage…

vscode 识别git目录

vscode 偶尔无法识别使用git 新托管的项目。 以下是我提供的解决方案——重启 git.enabled VS Code配置问题&#xff1a; 有时候&#xff0c;VS Code的配置可能会导致无法识别.git文件夹。确保你的VS Code配置中启用了Git的相关功能。你可以通过”Settings”&#xff08;设置…

网安瞭望台第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比较合适

希腊字母表

希腊字母 以下是数学和科学中常用的 希腊字母 及其用途的对照表&#xff0c;包括大写和小写形式&#xff1a; 序号字母名称发音&#xff08;英文&#xff09;数学与科学用途1ΑαAlphaˈlfə表示角度、系数、角速度等2ΒβBetaˈbeɪtə 或 ˈbiːtə表示系数、β辐射、概率密…

3090. 每个字符最多出现两次的最长子字符串

题目内容&#xff1a; 给你一个字符串 s &#xff0c;请找出满足每个字符最多出现两次的最长子字符串&#xff0c;并返回该 子字符串 的 最大 长度。 示例 1&#xff1a; 输入&#xff1a; s "bcbbbcba" 输出&#xff1a; 4 解释&#xff1a; 以下子字符串长…

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 命…

HarmonyOs:创建线程的3种方式

使用Worker创建线程 基本概念&#xff1a;Worker主要为应用程序提供多线程运行环境&#xff0c;可让应用程序在执行过程中与宿主线程分离&#xff0c;在后台线程中运行脚本进行耗时操作&#xff0c;避免计算密集型或高延迟任务阻塞宿主线程。使用方法&#xff1a; 创建Worker线…

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

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