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

news2024/12/24 20:01:48
『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.coloradmin.cn/o/2264892.html

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

相关文章

WPS工具栏灰色怎么办

WPS离线不登录,开启工具栏等相关功能 当你在使用WPS的过程中,若因网络问题或其他特殊原因,导致无法登录使用WPS时,可根据以下步骤开启离线兼容模式,开启此模式后,可在未登录的状态下,激活并使用…

【微信小程序】2|轮播图 | 我的咖啡店-综合实训

轮播图 引言 在微信小程序中,轮播图是一种常见的用户界面元素,用于展示广告、产品图片等。本文将通过“我的咖啡店”小程序的轮播图实现,详细介绍如何在微信小程序中创建和管理轮播图。 轮播图数据准备 首先,在home.js文件中&a…

JavaEE进阶--mybatis使用测试日志参数传递浏览器访问

文章目录 1.项目创建2.mybatis的使用2.1创建初始页面2.2补充yml文件2.3navicate表2.4用户类的编写2.5查询接口2.6运行测试 3.细节说明3.1java开发规范3.2关于包3.3持久层代码 4.测试文件4.1如何生成4.2生成位置4.3补充方法 5.配置mybatis日志6.参数传递6.1单个参数6.2多个参数 …

IDEA用jformdesigner插件做管理系统MVC架构

在 IntelliJ IDEA 中结合 JFormDesigner 插件,通过 Swing 框架实现一个管理系统的 MVC 架构是一种经典的开发方式。以下是具体的步骤和实现思路,包含从项目创建到 MVC 架构的核心代码实现。 1. 项目结构设计 为了清晰的 MVC 分层架构,建议按…

学习Cookie 提升

目录 Cookie 的覆盖​​​​​​​ Cookie下的path 特点 设置Cookie 路径 实例 Cookie的最大存活时间 设置Cookie 存活时间 实例 Cookie 和session的区别 和联系 Cookie 的覆盖 当 key相同 和只要path的上级目录的路径相同,就可以被替换掉 value 值 如下图…

021、深入解析前端请求拦截器

目录 深入解析前端请求拦截器: 1. 引言 2. 核心实现与基础概念 2.1 基础拦截器实现 2.2 响应拦截器配置 3. 实际应用场景 3.1 完整的用户认证系统 3.2 文件上传系统 3.3 API请求缓存系统 3.4 请求重试机制 3.5 国际化处理 4. 性能优化实践 4.1 请求合并…

4、mysql高阶语句

mysql高阶语句是对复杂的条件进行查询的操作。 排序—order by 加了desc表示由大到小 1、查询name和score,地址都是云南西路的按id进行由小到大排序 2、查询name和score,先按hobbid进行排序,再把结果按id进行排序 第一段字段必须要有相同的…

叉车作业如何确认安全距离——UWB测距防撞系统的应用

叉车在工业环境中运行,常常需要在狭窄的空间内完成货物的搬运和堆垛,这对操作员的技术水平和安全意识提出了极高的要求。传统的叉车作业依赖操作员的经验和视觉判断来确认安全距离,然而这种方式往往存在误差,特别是在视线受阻或光…

LLaVA 多模态大模型:两阶段训练,实现视觉与语言模态的高效融合

LLaVA 多模态大模型:两阶段训练,实现视觉与语言模态的高效融合 论文大纲理解确认目标分析过程实现步骤效果展示金手指 结构分析1. 层级结构分析叠加形态(从基础到高级)构成形态(部分到整体)分化形态&#x…

PostgreSQL 的历史

title: PostgreSQL 的历史 date: 2024/12/23 updated: 2024/12/23 author: cmdragon excerpt: PostgreSQL 是一款功能强大且广泛使用的开源关系型数据库管理系统。其历史可以追溯到1986年,当时由加州大学伯克利分校的一个研究团队开发。文章将深入探讨 PostgreSQL 的起源、…

台球助教平台系统开发APP和小程序信息收藏功能需求解析(第十二章)

以下是开发台球助教系统客户端(APP,小程序,H5)几端的信息收藏功能的详细需求和功能说明,内容比较详细,可以说是一个教科书式的详细说明了,这套需求说明不仅仅用在我们的台球助教系统程序上&…

SRE 与 DevOps记录

flashcat https://flashcat.cloud

Linux Shell 脚本编程基础知识篇—shell 运算命令详解

ℹ️大家好,我是练小杰,本文继续Linux shell脚本编程的基础知识内容,接着讲算术运算命令的详细操作~~ 复习:【shell简介以及基本操作】 更多Linux 相关内容请点击👉“Linux专栏”~ 文章目录 let运算命令的用法let 的高…

2002 - Can‘t connect to server on ‘192.168.1.XX‘ (36)

参考:2002 - Can‘t connect to server on ‘192.168.1.XX‘ (36) ubantu20.04,mysql5.7.13 navicat 远程连接数据库报错 2002 - Can’t connect to server on ‘192.168.1.61’ (36) 一、查看数据库服务是否有启动,发现有启动 systemctl status mysql…

GitCode 光引计划投稿|MilvusPlus:开启向量数据库新篇章

在人工智能和大数据时代,向量数据库作为处理非结构化数据的核心技术,正变得越来越重要。MilvusPlus,作为「光引计划」的一部分,应运而生,旨在提供一个高性能、易扩展、全功能的向量数据库解决方案。项目背景根植于对现…

一起学Git【第四节:添加和提交文件】

通过前三节的学习,基本上对Git有了初步的了解,下面开始进行文件的添加和提交的流程。 这里主要涉及四个命令: git init 创建仓库git status查看仓库状态git add添加至暂存区git commit提交文件之前已经使用过git init命令了,此处不再具体讲解。参照一起学Git【第二节:创建…

RISC-V架构的压缩指令集介绍

1、压缩指令集介绍 RISC-V的压缩指令集(C扩展)‌是一种设计用于减少代码大小和提高性能的技术。标准的RISC-V指令是32位,压缩指令集可以将部分32位的指令用16位的指令替代,从未减小程序占用存储空间的大小,提高指令密…

CosyVoice安装过程详解

CosyVoice安装过程详解 安装过程参考官方文档 前情提要 环境:Windows子系统WSL下安装的Ubunt22.4python环境管理:MiniConda3git 1. Clone代码 $ git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git # 若是submodule下载失败&…

docker 容器的基本使用

docker 容器 一、docker是什么? 软件的打包技术,就是将算乱的多个文件打包为一个整体,打包技术在没有docker容器之前,一直是有这种需求的,比如上节课我把我安装的虚拟机给你们打包了,前面的这种打包方式是…

【计算机视觉基础CV-图像分类】05 - 深入解析ResNet与GoogLeNet:从基础理论到实际应用

引言 在上一篇文章中,我们详细介绍了ResNet与GoogLeNet的网络结构、设计理念及其在图像分类中的应用。本文将继续深入探讨如何在实际项目中应用这些模型,特别是如何保存训练好的模型、加载模型以及使用模型进行新图像的预测。通过这些步骤,读…