通过 FRP 实现 P2P 通信:控制端与被控制端配置指南

本文介绍了如何通过 FRP 实现 P2P 通信。FRP(Fast Reverse Proxy)是一款高效的内网穿透工具,能够帮助用户突破 NAT 和防火墙的限制,将内网服务暴露到公网。通过 P2P 通信方式,FRP 提供了更加高效、低延迟的网络传输方式,适合需要高带宽和低延迟的场景。

一、前言

FRP(Fast Reverse Proxy)是一个高性能的内网穿透工具,广泛用于解决 NAT 穿透和防火墙限制等问题。FRP 提供了服务端 frps 和客户端 frpc,其中 frps 一般部署在公网服务器上,而 frpc 部署在需要进行内网穿透的设备上。

在本文中,我们将介绍如何使用 FRP 通过阿里云的 FRP 服务端来实现 P2P 通信。P2P(Peer-to-Peer)通信通过直接的对等网络连接,避免了传统客户端与服务端之间的中转,使数据传输更加高效、低延迟。

二、FRP 架构概述

  • frps:FRP 的服务端,部署在阿里云服务器上,负责转发来自客户端的连接。
  • frpc:FRP 的客户端,部署被控制端和控制端。

三、P2P 通信模式

P2P(Peer-to-Peer)通信是一种去中心化的网络通信模式,客户端之间可以直接建立连接,数据不通过中间服务器。通过 P2P,FRP 实现了更低延迟和更高带宽的传输能力。对于需要实时传输数据或者高带宽应用(如远程桌面 RDP),P2P 通信方式提供了明显的性能优势。

四、控制端与被控制端配置

在 FRP 配置中,控制端和被控制端分别部署在不同的机器上,控制端可以访问被控制端的内网服务。通过配置 frpc.toml 文件,可以实现 P2P 通信和其他服务的暴露。以下是控制端和被控制端配置的相关说明。

1. 被控制端配置

被控制端的 frpc.toml 配置文件中包括了对本地服务(如 RDP 和 Gitblit)的暴露,同时还配置了 P2P 通信的隧道。P2P 隧道使用 xtcp 类型,确保数据传输的低延迟和高带宽。

# frpc 服务端配置
serverAddr = "your_frps_server_ip"        # 阿里云上的 FRP 服务端公网 IP
serverPort = 7000                         # FRP 服务端端口# 身份验证
auth.method = "token"
auth.token = "your_token_here"            # 与服务端的 token 配置相匹配# 传输配置
[transport]
tcpMux = true                             # 启用 TCP 多路复用# TLS 配置
[transport.tls]
disableCustomTLSFirstByte = true          # 禁用自定义 TLS 第一字节
enable = true                             # 启用 TLS 加密# 配置 RDP 服务的 TCP 转发
[[proxies]]
name = "rdp"                              # 隧道名称
type = "tcp"                              # 使用 TCP 转发
localIP = "127.0.0.1"                     # 本地服务 IP
localPort = 3389                          # 本地服务端口
remotePort = 3389                         # 远程暴露端口# 配置 Gitblit 服务的 TCP 转发
[[proxies]]
name = "gitblit"                          # 隧道名称
type = "tcp"                              # 使用 TCP 转发
localIP = "127.0.0.1"                     # 本地服务 IP
localPort = 6888                          # 本地服务端口
remotePort = 6888                         # 远程暴露端口# P2P 通信配置(使用 xtcp 类型)
[[proxies]]
name = "p2p_rdp"                          # 隧道名称
type = "xtcp"                             # 使用 xtcp 类型进行 P2P 通信
localIP = "127.0.0.1"                     # 本地服务 IP
localPort = 3389                          # 本地服务端口
secretKey = "your_secret_key_here"        # 与服务端配置相匹配的 secretKey

2. 控制端配置

控制端的配置文件也采用类似的设置,主要包括与被控制端的连接、P2P 隧道的设置和其他服务的转发。控制端配置需要确保与服务端 frps 端口匹配。

# FRP 控制端配置
serverAddr = "your_frps_server_ip"      # 阿里云上的 FRP 服务端公网 IP
serverPort = 7000                       # FRP 服务端端口# 身份验证
auth.method = "token"
auth.token = "your_token_here"          # 与服务端的 token 配置相匹配# 传输配置
[transport]
tcpMux = true                           # 启用 TCP 多路复用# TLS 配置
[transport.tls]
disableCustomTLSFirstByte = true        # 禁用自定义 TLS 第一字节
enable = true                           # 启用 TLS 加密# P2P RDP 配置
[[visitors]]
name = "p2p_rdp"                        # 隧道名称
type = "xtcp"                           # 使用 xtcp 类型进行 P2P 通信
secretKey = "your_secret_key_here"      # 与被控制端配置相匹配的 secretKey
serverName = "p2p_rdp"                  # 对应的被控制端名称
bindAddr = "127.0.0.1"                  # 本地绑定地址
bindPort = 3333                         # 本地绑定端口

五、总结

FRP 是一个强大的内网穿透工具,通过配置 frpc.toml 文件,可以轻松实现内网服务的暴露,并通过 P2P 通信优化传输效率。P2P 通信模式通过直接的对等连接,避免了中转服务器的延迟,适用于高带宽和低延迟的应用场景。在本文中,我们介绍了如何配置 FRP 控制端与被控制端,实现对内网服务的远程访问,同时利用 P2P 技术提高数据传输的效率。

通过这种配置,用户可以安全、稳定地将 RDP 和 Gitblit 服务暴露到公网,并在控制端与被控制端之间实现高效的 P2P 通信。

扩展

1. FRP GUI 客户端

Windows 平台的 FRP GUI 客户端 / A user-friendly desktop GUI client for FRP on Windows.

1.1 被控制端

可以导入被控制端的 frpc.toml 配置文件,也可以手动设置。

选择手动设置。输入名称、ip 和端口号。

如果 frps 设置了 Token,那么认证方式需要选择 Token,并输入令牌。

设置日志文件,方便查找问题。

TLS 配置。启用 TLS 加密,并禁用自定义 TLS 第一字节。

传输配置。启用 TCP 多路复用。

1.2 控制端

前面几步的设置与被控制端配置相同,主要区别在于代理配置。控制端需要编辑代理部分,类型选择 xtcp,角色选择“访问者”。在配置过程中,确保服务名称秘钥与被控制端的配置保持一致。绑定的端口可以根据需要设置,只要不与其他端口冲突即可。绑定的 IP 地址使用本地回环地址。

1.3 无密码远程登录(可选)

如果希望远程桌面连接能够在没有密码的情况下访问,请按照以下步骤配置:

  1. Win + R 键,弹出运行框。
  2. 输入 secpol.msc 并按回车,打开本地安全策略管理器。
  3. 在左侧导航栏中,选择“本地策略” -> “安全选项”。
  4. 找到并双击“帐户: 使用空密码的本地帐户只允许进行控制台登录”选项。
  5. 将其设置为“禁用”,然后点击“确定”。

这样配置后,就可以通过远程桌面进行无密码登录。

1.4 远程访问

在控制端打开远程桌面连接,并且输入绑定的 ip 、端口和用户名

2. 阿里云配置 frps

FRP 实现内网穿透_使用frp进行内网穿透

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

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

相关文章

游戏发布AppStore平台

首先,要注册一个开发者账号。这里不多说了,下载官方app“Developer”,然后买个能发布的账号,个人💲99的就行。(其实还有点麻烦,我的好像是人脸识别后出问题了,反正遇到问题找苹果官方…

【Linux系列】AWK 使用指南

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【算法】模拟

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:替换所有的问号 二:提莫攻击 三:z字形变换 四:外观…

Ubuntu环境安装RabbitMQ

1.安装Erlang RabbitMq需要Erlang语⾔的⽀持,在安装rabbitMq之前需要安装erlang # 更新软件包 sudo apt-get update # 安装 erlang sudo apt-get install erlang 查看erlang版本 : erl 退出命令:halt(). 2. 安装RabbitMQ # 更新软件包 sudo apt-get update # 安装 …

【STM32】定时器 —— 输出比较PWM

使用的单片机机型为STM32F103C8T6 文章目录 PWM输出比较编程实例输出比较呼吸灯舵机转向PWM控制直流电机 PWM 对于5V电路来说,输出只有高电平5V和低电平0V,控制LED灯就是点亮和熄灭,但如果想要控制其亮度呢?这就需要PWM PWM PWM…

Anaconda 下安装OpenCV 4.10.0

大家也可以使用pip安装。 pip install opencv-python4.10.0 这里使用conda安装 conda install opencv4.10.0 import cv2 print(cv2.__version__)

深入探索 C++ 类型转换的奥秘

目录 1. C语言中的类型转换 2.C的类型转换 (1)static_cast (2) dynamic_cast 😊😊static_cast和dynamic_cast在面对继承和多态的父子类强转的区别: 1.static_cast 和 继承关系中的强转 …

量产小妙招---KdTreeFLANN的使用

1 概念 KDTreeFLANN是一种结合了k-d树(k-dimensional tree)数据结构和FLANN(Fast Library for Approximate Nearest Neighbors)算法库的技术,主要用于高效地进行最近邻搜索等操作。 KdTreeFLANN是Point Cloud Library …

62 基于单片机的智能饮水机

所有仿真详情导航: PROTEUS专栏说明-CSDN博客 目录 一、主要功能 二、硬件资源 三、主程序编程 四、资源下载 一、主要功能 基于51单片机,采用DS1302时钟模块读取时间,DS18B20温度传感器检测时间,超声波检测,如果…

制造业数据集成案例分享:3小时内实现MySQL到MySQL数据对接

ZZ刷新生产用料清单四化库存-制造一处-3小时:MySQL到MySQL数据集成案例分享 在现代制造业中,实时、准确的数据流动是确保生产效率和资源优化的关键。本文将分享一个实际运行的系统对接集成案例——“ZZ刷新生产用料清单四化库存-制造一处-3小时”&#…

大数据新视界 -- 大数据大厂之 Hive 临时表与视图:灵活数据处理的技巧(上)(29 / 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

QT入门看这一篇就够了——超详细讲解(40000多字详细讲解,涵盖qt大量知识)

目录 一、Qt概述 1.1 什么是Qt 1.2 Qt的发展史 1.3 Qt的优势 1.4 Qt版本 1.5 成功案例 二、创建Qt项目 2.1 使用向导创建 2.2 一个最简单的Qt应用程序 2.2.1 main函数中 2.2.2 类头文件 2.3 .pro文件 2.4 命名规范 2.5 QtCreator常用快捷键 三、Qt按钮小程序 …

【k8s】创建基于sa的token的kubeconfig

需求 创建一个基于sa的token的kubeconfig文件,并用这个文件来访问集群。 具体创建sa 和sa的token请参考文章: 【k8s】给ServiceAccount 创建关联的 Secrets-CSDN博客 创建sa apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata:namespace: jtkjdevnam…

STM32F103单片机使用STM32CubeMX新建IAR工程步骤

打开STM32CubeMX软件,选择File 选择新建工程 在打开的窗口输入单片机型号 在右下角选择单片机型号,然后点右上角 start project,开始新建工程。 接下来设置调试接口,在左边System Core中选择 SYS,然后在右右边debu…

MATLAB 最小二乘平面拟合(90)

MATLAB 最小二乘平面拟合(90) 一、算法介绍二、算法实现1.代码2.结果:一、算法介绍 平面方程: ax+by+cz+d = 0 执行任务:读取一组点云(这里用自定义生成的平面模拟点云代替,在其中添加了噪声来模拟真实的数据),使用最小二乘拟合平面,来输出平面参数,并可视化显示拟…

Redis面试专题-持久化

目录 前言 持久化相关知识 1.三种持久化机制 2.RDB持久化 3.深入剖析一下RDB持久化过程 4.AOF持久化 5.RDB和AOF对比​编辑 面试题 1.redis持久化机制有哪些? 2.那仔细讲讲你对他们的理解 3.你刚刚说AOF的文件很大,那AOF文件会越来越大&#xf…

Java --- JVM编译运行过程

目录 一.Java编译与执行流程: 二.编译过程: 1.编译器(javac): 2.字节码文件(.class): 三.执行过程: 1.启动JVM(Java虚拟机): 2…

sheng的学习笔记-AI-序列模型(Sequence Models),RNN,GRU,LSTM

Ai目录:sheng的学习笔记-AI目录-CSDN博客 基础知识 定义: 序列模型是输入输出均为序列数据的模型,它能够将输入序列数据转换为目标序列数据。常见的序列模型类型包括一对一、一对多、多对一、部分多对多和完全多对多。 重要的是需要有顺序…

Excel技巧:如何批量调整excel表格中的图片?

插入到excel表格中的图片大小不一,如何做到每张图片都完美的与单元格大小相同?并且能够根据单元格来改变大小?今天分享,excel表格里的图片如何批量调整大小。 方法如下: 点击表格中的一个图片,然后按住Ct…

16-02、JVM系列之:内存与垃圾回收篇(二)

JVM系列之:内存与垃圾回收篇(二) ##本篇内容概述: 1、堆Heap Area 2、方法区Method Area 3、运行时数据区总结 4、对象的实例化内存布局和访问定位一、堆 Heap Area 1、堆的核心概念 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心…