【内网穿透】FRP 跨平台内网穿透 支持windows linux x86_64 arm64 端口范围映射

news2024/12/24 11:40:17

AI提供的资料:

FRP(Fast Reverse Proxy)是一个专为内网穿透设计的高性能反向代理程序。以下是一些关于FRP的详细资料,帮助您更好地理解和使用这一工具:

核心特点:

  • 内网穿透:能够将位于内网的服务通过具有公网IP的服务器暴露到互联网上,使得外部网络可以访问原本隐藏在私有网络中的资源。
  • 协议支持:广泛支持TCP、UDP、HTTP、HTTPS等多种网络协议,满足不同应用场景的需求。
  • 高性能:设计初衷是提供高效的数据传输能力,适合需要低延迟和高带宽的应用场景。
  • 安全机制:支持TLS加密通信,可配置客户端和服务端的单向或双向身份验证,增强数据传输的安全性。
  • 配置灵活:通过简单的配置文件,用户可以定义各种代理规则,包括端口映射、协议选择、认证方式等。
  • 跨平台:FRP支持多种操作系统,包括但不限于Windows、Linux、macOS,便于在不同的环境部署。

安装与配置:

  1. 下载FRP:访问FRP的GitHub页面(https://github.com/fatedier/frp)获取最新版本的FRP客户端(frpc)和服务端(frps)程序。
  2. 部署服务端:在具有公网IP的服务器上安装并配置frps,设置监听端口、认证信息等。
  3. 配置客户端:在内网服务器上安装并配置frpc,定义需要穿透的服务(包括服务类型、本地监听端口、远端映射端口等)以及指向服务端的连接信息。
  4. 启动服务:分别在服务端和客户端启动FRP,即可实现内网服务的公网访问。

高级功能与技巧:

  • 动态端口映射:FRP支持动态分配端口,使得每次客户端连接时自动获取可用端口映射,适用于不确定数量的服务场景。
  • 连接池:优化性能,减少建立连接的延迟,适合频繁短连接的服务。
  • 日志与监控:FRP提供详细的日志记录和简单的监控功能,便于问题排查和性能监控。
  • P2P穿透尝试:虽然主要聚焦于中心化代理,FRP也尝试性支持点对点穿透,探索更灵活的网络穿透方式。

社区与文档:

  • 官方文档:FRP项目维护了一份详细的中文文档(http://www.frp.cool/doc/),涵盖了安装、配置、进阶使用等内容。
  • 社区支持:GitHub上活跃的Issue板块和各种技术论坛(如Stack Overflow、知乎等)是解决使用中遇到问题的好去处。
  • 第三方服务:除了自建FRP环境,还有如“清欢公益frp”这样的第三方服务,提供免费或付费的FRP服务,简化部署和运维工作。

通过上述资料,您应该能够对FRP有一个全面的了解,并着手将其应用于自己的项目中。在实施过程中,务必关注安全配置,确保内外网通讯的安全性。

加速地址下载windows平台软件包

https://dgithub.xyz/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_windows_amd64.zip

中文文档地址

frp/README_zh.md at dev · fatedier/frp · GitHub

端口范围映射文档

端口范围映射 | frp

端口范围映射

Added in v0.56.0

我们可以利用 Go template 的 range 语法结合内置的 parseNumberRangePair 函数来实现端口范围映射。

下面的示例,应用运行后会创建 8 个代理,名称为 test-6000, test-6001 ... test-6007,分别将远端的端口映射到本地。

{{- range $_, $v := parseNumberRangePair "6000-6006,6007" "6000-6006,6007" }}
[[proxies]]
name = "tcp-{{ $v.First }}"
type = "tcp"
localPort = {{ $v.First }}
remotePort = {{ $v.Second }}
{{- end }}

本地测试的完整配置

serverAddr = "127.0.0.1"
serverPort = 7000

{{- range $_, $v := parseNumberRangePair "20000-20100" "30000-30100" }}
[[proxies]]
name = "tcp-{{ $v.First }}"
type = "tcp"
localPort = {{ $v.First }}
remotePort = {{ $v.Second }}
{{- end }}
 

提前打开两个cmd,分别启动服务器端、客户端

启动服务器

frps.exe

启动客户端(-c 参数指定配置文件)

frpc.exe -c frpc.toml

查看监听的端口(windows cmd没有linux bash的管道,不方便。。。)

netstat -ano

可以看到,frps.exe启动了多个端口来转发请求。

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

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

相关文章

光伏开发有没有难点?如何解决?

随着全球对可再生能源的日益重视,光伏技术作为其中的佼佼者,已成为实现能源转型的关键手段。然而,光伏开发并非一帆风顺,其过程中也面临着诸多难点和挑战。本文将对这些难点进行探讨,并提出相应的解决策略。 一、光伏开…

Linux内核开发-编写一个proc文件

0.前言 上一章(点击返回上一章)完成了一个内核模块的编写,实现了在内核运行时的动态加载和卸载。 在模块的开发调测过程中或者模块运行过程中,可能需要打印内核模块的变量的值或者想要动态开关模块的运行日志打印,那么…

[word] Word如何删除所有的空行? #职场发展#学习方法

Word如何删除所有的空行? 很多网友从网页复制文字粘贴到word文档后发现段落之间有空行,如果文字不多,手动删除这些空行也没有多少工作量,但是如果文字的字数达到成千上万,一个个手动删除这些空行还是很繁琐的。那么&a…

礼让,不是一昧地退让,而是表达我们的素养、品德

礼 / 让,发心是文明相处,互助互让,是君子之交

鸿蒙北向开发 ubuntu20.04 gn + ninja环境傻瓜式搭建闭坑指南

ninja跟gn都是比较时髦的东西,由歪果仁维护,如果走下载源码并编译这种流程的话需要走github跟google官网下载,国内的用网环境相信各位傻瓜都知道,github跟google这几年基本是属于连不上的状态,好在你看的鸿蒙项目跟国内的一些软件大厂已经帮你爬过梯子了,ninja工具跟gn工具已经…

【应用开发一】LED开发

文章目录 1应用层控制外设的两种方式2 sysfs和/sys关系3 LED控制方式3.1 基本情况3.2 LED属性文件介绍3.3 命令行属性测试3.4 led程序3.5 开发板上测试 1应用层控制外设的两种方式 使用设备文件控制 在Linux系统下,一切皆是文件。应用层控制底层硬件同样也是通过文…

堆的实现详解

目录 1. 堆的概念和特点2. 堆的实现2.1 堆向下调整算法2.2堆的创建2.3 建堆时间复杂度2.4 堆的插入2.5 堆的删除2.6 堆的代码实现2.6.1 结构体2.6.2 初始化2.6.3 销毁2.6.4 插入2.6.5 删除2.6.6 获取堆顶2.6.7 判空2.6.8 个数2.6.9 向上调整2.6.10 向下调整3. 堆的实现测试测试…

SQL连接与筛选:解析left join on和where的区别及典型案例分析

文章目录 前言一、left join on和where条件的定义和作用left join on条件where条件 二、left join on和where条件的区别原理不同left join原理:where原理: 应用场景不同执行顺序不同(作用阶段不同)结果集不同 三、实际案例理解lef…

深入JVM:详解JIT即时编译器

文章目录 深入JVM:详解JIT即时编译器一、序言二、基础概念1、何为JIT即时编译2、热点代码 三、HotSpot内置的即时编译器1、C1编译器2、C2编译器3、分层编译3.1 协作流程 四、常见JIT优化技术1、方法内联2、逃逸分析(1)同步锁消除(…

高考填报志愿,找准自己的真兴趣来选择专业

又是一年一度的高考填报志愿的时间了,毕业生们要根据自己的分数,在很短的时间内确定自己的专业。专业千万条,兴趣第一条。专业的选择很大程度上决定着大学的学习生活是否顺利,甚至决定着以后的职业生涯。在纷繁复杂的专业中&#…

全球首个数字人开源了

DUIX(Dialogue User Interface System)是硅基智能打造的AI数字人智能交互平台。通过将数字人交互能力开源,开发者可自行接入多方大模型、语音识别(ASR)、语音合成(TTS)能力,实现数字…

【AI落地应用实战】如何高效检索与阅读论文——302.AI学术论文工具评测

一、引言 作为一名学术领域的探索者,我们都知道,检索和阅读论文是我们获取知识、启发思考、验证假设的基石,也是日常学习中必不可少的基本功之一。然而在浩瀚的学术海洋中,如何快速、准确地找到我们需要的论文,就像是…

git提交新仓库代码,提示无权限,但用户名已修改

目录 1 用户名无权限 2 删除用户凭据 2.1 打开控制面板 2.2 找到“凭据管理器” 2.3 删除git历史 3 npm工具库添加git仓库指引 1 用户名无权限 之前因为时间的原因,js-tool-big-box工具库没有提交到github上去,今天想着往上提交一下,但…

python03——文件操作(new)

“变量”open(‘文件路径’,‘模式’) //注意加引号 “变量”.write( ) //write函数是写的是字符串,如果你写的东西不是字符串,要写成write(str(。。)) “变量”.read…

【Containerd】Containerd接入Harbor仓库

说明 在日常使用容器时,安全方便起见一般都会使用到私有仓库,一般都是采用 harbor 作为私有仓库,docker 对接 harbor 仓库非常简单,那么 containerd 如何对接 harbor 呢? 在内网使用 harbor 根据个人习惯&#xff0c…

快速上手golang(持续更新)

由于项目需要,我不得不快速掌握go语言来帮助我进行项目的开发。时间紧迫到我来不及去了解语言的特性就直接项目上手了。我决定就先熟悉一个主流的go框架和go语言的一些日常用法,之后就得滑着这只破船摇摇晃晃上路了。 1 基础命令 就说几个用的多的&…

QT拖放事件之八:通过全局剪切板中的接口QClipboard::mimeData()来获取MIME类型数据

1、演示效果 首先向剪切板写入数据,然后点击paste按钮进行从全局剪切板中 获取 MIME数据。。。 2、核心代码 void Widget::on_pasteBtn_clicked() {const QClipboard* clipBoard = QGuiApplication::clipboard()

理解和处理不同类型的上下文的新型的语言模型ReALM

在人类的日常交流中,模糊的代词如“他们”或“那个”常常出现,它们的意义通常依赖于上下文才能明确。这种上下文的理解对于对话助手来说至关重要,因为它们旨在提供一种自然的交流体验。然而,现有的对话助手在处理这类模糊引用时往…

Java HashMap 简介

HashMap 简介 HashMap 主要用来存放键值对,它基于哈希表的 Map 接口实现,是常用的 Java 集合之一,是线程不安全的。 HashMap;可以存储 null 的 key 和 value ,但 null 作为 key 只能有一个,null 作为值可以…

非强化学习的对齐方法

在文章《LLM对齐“3H原则”》和《深入理解RLHF技术》中,我们介绍了大语言模型与人类对齐的“3H原则”,以及基于人类反馈的强化学习方法(RLHF),本文将继续介绍另外一种非强化学习的对齐方法:直接偏好优化&am…