frp软件实现网络穿透

1. 名词

1.1. 网络穿透

网络穿透是一种技术,用于解决内网设备或服务无法直接被外部网络访问的问题。通常,内网设备位于路由器后面,并没有公网 IP 地址,因此外部用户不能直接连接到这些设备。网络穿透通过一些特定的技术手段,使得外部用户能够访问这些内网设备。

1.2. FRP

FRP (Fast Reverse Proxy) 是一种常用的网络穿透工具,它通过代理服务器实现内网穿透,允许内网的服务被外网访问。FRP 支持多种协议(如 HTTP、HTTPS、TCP 等),并且支持反向代理和动态 DNS 功能,使用起来较为简便。

2. FRP

2.1. FRP 的基本工作原理:

  1. 客户端(frpc):在内网设备上运行,负责与 FRP 服务器建立连接。
  2. 服务器端(frps):部署在公网服务器上,负责接收外部的请求,并将请求转发到对应的内网客户端。
  3. 隧道建立:内网设备通过客户端与公网的 FRP 服务器建立隧道连接,外部请求通过该隧道被转发到内网服务。

2.2. FRP 的应用场景:

  • 远程访问内网服务:比如你有一台内网 Web 服务器,你希望外部访问时通过 FRP 访问到内网 Web 服务。
  • IoT 设备远程管理:对于很多部署在内网中的 IoT 设备,可以通过 FRP 实现远程控制。
  • 办公场景:在公司内部网络中部署服务,可以通过 FRP 实现对外的访问。

2.3. FRP (Fast Reverse Proxy) 详细介绍

FRP (Fast Reverse Proxy) 是一个高性能的反向代理应用,专门用于内网穿透。它使得处于内网中的服务能够通过一个公网服务器被外部访问,常用于连接内网的数据库、Web 服务、远程桌面等服务。

2.3.1. 主要特性:

  • 支持多种协议:FRP 支持 TCPUDPHTTPHTTPSWebSocket 等多种协议。
  • 反向代理:能够将内网的服务通过一个外部服务器暴露给互联网。
  • 负载均衡:通过支持多个隧道转发,可以在多个后端服务之间实现负载均衡。
  • 多种加密方式:FRP 支持加密和压缩,可以保护数据传输的安全性。
  • 动态域名:支持动态 DNS 和自定义域名映射。
  • 简单配置:FRP 的配置文件结构简单,容易上手。
  • 高性能:FRP 使用 Go 语言编写,具有较高的性能,能够处理大量并发连接。

2.3.2. 组成:

  1. FRP 服务器端(frps):部署在公网服务器上,负责接收外部请求并转发到对应的内网客户端。
  2. FRP 客户端(frpc):运行在内网设备上,负责将内网服务暴露到外网,客户端与服务器端之间建立隧道连接。

2.3.3. 工作原理:

FRP 的工作原理基于代理技术。它通过一个公网服务器作为中介,将内网客户端和外部请求连接起来。客户端和服务器之间通过一个持久的 TCP 连接保持通信,并将请求和响应数据进行转发。

2.3.4. FRP 的常见应用场景:

  1. 远程访问:使得部署在内网的服务(如 Web 应用、数据库、SSH 服务等)能够通过公网 IP 或域名进行访问。
  2. IoT 设备连接:支持远程控制和监控内网中的设备,如路由器、摄像头等。
  3. 内网穿透:当用户位于 NAT 网络或防火墙后时,通过 FRP 实现内网与外网的通信。
  4. 私有云服务:可以将一些私有服务(如文件服务器)暴露给外部使用。

2.3.5. 主要功能:

  • TCP 和 UDP 转发:支持将 TCP 和 UDP 数据流转发到内网服务。
  • HTTP/HTTPS 反向代理:支持 Web 服务的代理,能够将外部请求转发到内网的 HTTP/HTTPS 服务。
  • WebSocket 支持:允许 WebSocket 连接通过 FRP 转发,适用于实时应用。
  • 多端口和多协议支持:支持配置多个端口和协议进行反向代理。
  • 自定义域名和路径:支持设置自定义域名,方便管理。
  • 插件支持:支持一些额外的功能插件,如加密、压缩等。

2.3.6. 开发语言和架构:

  • 开发语言:FRP 是使用 Go 语言(Golang)开发的,这使得其具备高效的性能,尤其在并发处理方面具有优势。
  • 跨平台支持:FRP 支持 Linux、Windows、macOS 等多种操作系统。

2.3.7. GitHub 地址:

FRP 的源代码可以在 GitHub 上找到:

  • FRP GitHub 地址

在 GitHub 上,你可以找到 FRP 的源码、文档、示例配置、常见问题解答以及社区的贡献。

2.3.8. 其他相关资源:

  1. 官方文档:FRP 提供了非常详细的 官方文档,包括如何进行安装、配置和使用的说明。
  2. Docker 支持:FRP 也支持 Docker 部署,可以在没有过多配置的情况下直接在 Docker 容器中使用。
  3. 社区和讨论:FRP 拥有活跃的社区支持,可以通过 GitHub Issues 或者其他技术论坛与开发者和使用者交流问题。

3. 安装使用过程

3.1. 下载

下载地址在github上[Releases · fatedier/frp]
在这里插入图片描述

一般需要下载两个,像笔者就下载了一个linux的,一个windows的:

  • Linux的安装在公网Ip的服务器上
  • Windows安装在家中主机上

在这里插入图片描述

3.2. Linux安装步骤

  1. 下载符合版本的Linux版本上传到服务器内,并解压
tar -xzvf rp_0.61.0_linux_amd64.tar.gz
  1. 配置frps.toml配置文件
bindAddr = "0.0.0.0"
bindPort = 7100
kcpBindPort = 7100webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "username"
webServer.password = "passwd"log.to = "/frpslog/frps.log"
log.level = "info"
log.maxDays = 3auth.method = "token"
auth.token = "ceshi123456"allowPorts = [
{ start = 6000, end = 7000},
]
  1. 创建frps为服务并启动服务器
vim vim /etc/systemd/system/frps.service

将下列内容写入到文本中,需要修改路径

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /data/software/frp_0.61.0_linux_amd64/frps -c /data/software/frp_0.61.0_linux_amd64/frps.toml[Install]
WantedBy = multi-user.target
  1. 设置启动,并设置自动启动
sudo systemctl start frps
systemctl status frps
systemctl restart frps
systemctl start frps && systemctl enable frps
systemctl restart frps
  1. 查看frps服务状态
# systemctl status frps
● frps.service - frp serverLoaded: loaded (/etc/systemd/system/frps.service; enabled; preset: enabled)Active: active (running) since Mon 2024-11-18 16:38:58 CST; 1 week 6 days agoMain PID: 146916 (frps)Tasks: 7 (limit: 9453)Memory: 15.9M (peak: 30.7M)CPU: 33.300sCGroup: /system.slice/frps.service└─146916 /data/software/frp_0.61.0_linux_amd64/frps -c /data/software/frp_0.61.0_linux_amd64/frps.tomlNov 18 16:38:58 iv-ydinw2ob28cva4f6np8r systemd[1]: Started frps.service - frp server.

3.3. 查看Web管理界面运行状态

访问你的地址,记得开启防火墙许可以及云服务器的安全组策略

frps dashboard 记得修改ip地址信息

在这里插入图片描述

3.4. 继续安装客户端

前面服务端使用的frps,那么客户端使用的是frpc

  1. 修改frpc.toml
  • serverAddr: 修改为前面的公网服务器的IP地址
  • auth.token: 记得与前面frps.toml中的值保持一致
  • proxies:就比较好理解了,如第一个则是:将本机的3000端口暴露到公网服务器的6002上。
serverAddr = "127.0.0.1"
serverPort = 7100
loginFailExit = truelog.to = "D:/Software/frp_0.59.0_windows_amd64/frpc.log"
log.level = "info"
log.maxDays = 3auth.method = "token"
auth.token = "ceshi123456"[[proxies]]
name = "local_knowledge"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3000
remotePort = 6002[[proxies]]
name = "local_gpt"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 6003
  1. 启动服务
D:\Software\frp_0.59.0_windows_amd64>frpc.exe -c ./frpc.toml

访问地址:http://172.0.0.1:6002

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

leetcode3250. 单调数组对的数目 I,仅需1s

题目: https://leetcode.cn/problems/find-the-count-of-monotonic-pairs-i/description/ 不为别的,只是记录下这个超过100%,而且比原先最快的快了一个量级 不知道咋分析,反正得出结论就是,变大不变,变小…

使用docker-compose部署搜索引擎ElasticSearch6.8.10

背景 Elasticsearch 是一个开源的分布式搜索和分析引擎,基于 Apache Lucene 构建。它被广泛用于实时数据搜索、日志分析、全文检索等应用场景。 Elasticsearch 支持高效的全文搜索,并提供了强大的聚合功能,可以处理大规模的数据集并进行快速…

Zabbix 模板翻译自动化教程

在企业 IT 运维管理中,Zabbix 作为一款强大的开源监控平台被广泛应用。而 Zabbix 模板作为监控配置的重要组成部分,用来定义监控项、触发器、图形等。随着国际化的需求增加,Zabbix 模板的翻译工作变得日益重要,特别是在需要为不同…

Springboot小知识(1):启动类与配置

一、启动类(引导类) 在通常情况下,你创建的Spring应用项目都会为你自动生成一个启动类,它是这个应用的起点。 在Spring Boot中,引导类(也称为启动类,通常是main方法所在的类)是整个…

数据集-目标检测系列- 海边漫步锻炼人检测数据集 person >> DataBall

数据集-目标检测系列- 海边漫步锻炼人检测数据集 person >> DataBall DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球…

NLP信息抽取大总结:三大任务(带Prompt模板)

信息抽取大总结 1.NLP的信息抽取的本质?2.信息抽取三大任务?3.开放域VS限定域4.信息抽取三大范式?范式一:基于自定义规则抽取(2018年前)范式二:基于Bert下游任务建模抽取(2018年后&a…

手机中的核心SOC是什么?

大家好,我是山羊君Goat。 常常听说CPU,中央处理器等等的,它是一个电脑或单片机系统的核心,但是对于SOC可能相比于CPU了解的人没有那么广泛。 所以SOC是什么? SOC全称是System on Chip,就是片上系统&#…

网络--socket编程--基础

1、网络字节序 已知:内存中的很多数据都有大小端之分,在网络这,网络数据流也是有大小端之分的。 TCP/IP协议规定:网络数据流采用大端字节序(即低地址处放高位字节)。 因此,小端机器发送网络数据流之前,必须转为大端(一般的机器会自动转换): 在网络-本地字节序转换…

Transformers在计算机视觉领域中的应用【第1篇:ViT——Transformer杀入CV界之开山之作】

目录 1 模型结构2 模型的前向过程3 思考4 结论 论文: AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE 代码:https://github.com/google-research/vision_transformer Huggingface:https://github.com/huggingf…

<数据集>路面坑洼识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:665张 标注数量(xml文件个数):665 标注数量(txt文件个数):665 标注类别数:1 标注类别名称:[pothole] 序号类别名称图片数框数1pothole6651740 使用标注工具&#x…

PySide6 QSS(Qt Style Sheets) Reference: PySide6 QSS参考指南

Qt官网参考资料: QSS介绍: Styling the Widgets Application - Qt for Pythonhttps://doc.qt.io/qtforpython-6/tutorials/basictutorial/widgetstyling.html#tutorial-widgetstyling QSS 参考手册: Qt Style Sheets Reference | Qt Widge…

07.ES11 08.ES12

7.1、Promise.allSettled 调用 allsettled 方法&#xff0c;返回的结果始终是成功的&#xff0c;返回的是promise结果值 <script>//声明两个promise对象const p1 new Promise((resolve, reject) > {setTimeout(() > {resolve("商品数据 - 1");}, 1000)…

qt QGraphicsRotation详解

1、概述 QGraphicsRotation 是 Qt 框架中 QGraphicsTransform 的一个子类&#xff0c;它专门用于处理图形项的旋转变换。通过 QGraphicsRotation&#xff0c;你可以对 QGraphicsItem&#xff08;如形状、图片等&#xff09;进行旋转操作&#xff0c;从而创建动态和吸引人的视觉…

Unity Plane API解释

构造函数解释&#xff0c;d的解释为&#xff1a;距离是沿着平面法线从平面到原点的距离。注意&#xff0c;这意味着为正值的distance值将导致平面朝向原点。负的距离值会导致平面朝向远离原点。 试验&#xff1a; GetSide方法检测点是否位于平面的正向侧&#xff0c;结果显示…

通讯专题4.1——CAN通信之计算机网络与现场总线

从通讯专题4开始&#xff0c;来学习CAN总线的内容。 为了更好的学习CAN&#xff0c;先从计算机网络与现场总线开始了解。 1 计算机网络体系的结构 在我们生活当中&#xff0c;有许多的网络&#xff0c;如交通网&#xff08;铁路、公路等&#xff09;、通信网&#xff08;电信、…

深度学习模型:LSTM (Long Short-Term Memory) - 长短时记忆网络详解

一、引言 在深度学习领域&#xff0c;循环神经网络&#xff08;RNN&#xff09;在处理序列数据方面具有独特的优势&#xff0c;例如语音识别、自然语言处理等任务。然而&#xff0c;传统的 RNN 在处理长序列数据时面临着严重的梯度消失问题&#xff0c;这使得网络难以学习到长…

算法笔记:力扣24. 两两交换链表中的节点

思路&#xff1a; 本题最简单的就是通过递归的形式去实现 class Solution {public ListNode swapPairs(ListNode head) {if(head null || head.next null){return head;}ListNode next head.next;head.next swapPairs(next.next);next.next head;return next;} } 对于链…

ehr系统建设方案,人力资源功能模块主要分为哪些,hrm平台实际案例源码,springboot人力资源系统,vue,JAVA语言hr系统(源码)

eHR人力资源管理系统&#xff1a;功能强大的人力资源管理工具 随着企业规模的不断扩大和业务需求的多样化&#xff0c;传统的人力资源管理模式已无法满足现代企业的需求。eHR人力资源管理系统作为一种先进的管理工具&#xff0c;能够为企业提供高效、准确、实时的人力资源管理。…

【Android】从事件分发开始:原理解析如何解决滑动冲突

【Android】从事件分发开始&#xff1a;原理解析如何解决滑动冲突 文章目录 【Android】从事件分发开始&#xff1a;原理解析如何解决滑动冲突Activity层级结构浅析Activity的setContentView源码浅析AppCompatActivity的setContentView源码 触控三分显纷争&#xff0c;滑动冲突…

OGRE 3D----2. QGRE + QQuickView

将 OGRE(面向对象图形渲染引擎)集成到使用 QQuickView 的 Qt Quick 应用程序中,可以在现代灵活的 UI 框架中提供强大的 3D 渲染功能。本文将指导您如何在 QQuickView 环境中设置 OGRE。 前提条件 在开始之前,请确保您已安装以下内容: Qt(版本 5.15 )OGRE(版本14.2.5)…