【Linux】【网络】frp 如何准确将 客户端B 请求转发给 服务器A 的

embedded/2025/2/22 1:41:22/

【Linux】【网络】frp 如何准确将 客户端B 请求转发给 服务器A 的

先来看一下上个文章的配置

1配置部分

1.1frp 配置

frp一直在监听7000这个端口上是否有请求到达

[common]
bind_port = 7000  # 云服务器监听的端口

1.2 服务器A配置

[common]
server_addr = frp_ip;  # 云服务器的公网 IP
server_port = 7000     # FRP 服务器端口[ssh1]
type = tcp
local_ip = local_A_ip    # 客户端 A 的内网 IP
local_port = 23              # 客户端 A 的 Telnet 服务端口
remote_port = 6001           # 云服务器上暴露的端口

大概解释一下这几个数据代表什么 :

  • server_addr = frp_ip -->云服务器的公网 IP
  • server_port = 7000 --> FRP 服务器端口
  • local_ip = local_A_ip -->客户端 A 的内网 IP
  • local_port = 23 -->frp代理能够访问的A的端口
  • remote_port = 6001–>A在云服务器上暴露的端口

local_ip 和local_port 能够定位A以及对应的程序
remote_port,这个相当于A通过frp公开的端口 在外部连接时连接到这个端口 frp能够识别这是转发给 A再通过local_ip 和local_port 发送给A

1.3客户端B配置

[common]
server_addr = frp_ip  # 云服务器的公网 IP
server_port = 7000           # FRP 服务器端口[ssh]
type = tcp
local_ip = local_B_ip      # 客户端 B 的内网 IP
local_port = 22              # 客户端 B 的 SSH 服务端口
remote_port = 6000           # 云服务器上暴露的端口

B也是同理

下面来看一下测试代码

2测试代码

2.1服务器A

const char* host_ip = local_A_ip;  // A 局域网服务器的内网 IP 地址
int host_port = 23;  // 局域网服务端口

2.2客户端B

const char* server_ip = frp_ip;  // 云服务器的公网 IP
int server_port = 6001;  // FRP 映射的端口

因此在连接的时候

  • 客户端B–>云服务器公网 IP (frp_ip)+配置文件中**FRP 服务器端口(7000)**连接
  • frp服务器收到连接后 知道客户端B 要连接的FRP映射端口(6001)
  • 此时根据服务器A 在云服务器暴露的端口(6001)–>知道要转发给A了 //remote_port = 6000
  • A的local_ip 和local_port 定位到A 发送给A

注意 在FRP 服务器端口(7000)确定时,remote_port 是唯一的(连接FRP不同客户端/服务器) 用来标识彼此
这也就解释了我之前认为remote_port可以一样的问题 实际上必须不一致


http://www.ppmy.cn/embedded/164207.html

相关文章

java基础语知识(8)

类之间的关系 在类之间,最常见的关系有: 依赖(“uses-a”);聚合(“has-a”);继承(“is-a”)。 依赖:一种使用关系,即一个类的实现需要另一个类的协助&#x…

Weboffice在线Word权限控制:限制编辑,只读、修订、禁止复制等

在现代企业办公中,文档编辑是一项常见且重要的任务。尤其是在线办公环境中,员工需要在网页中打开和编辑文档,但如何确保这些文档只能进行预览而无法被编辑或复制,成为许多企业面临的一个痛点。尤其是在处理涉密文档时,…

vue3 在element-plus表格使用render-header

在vue2中 element表格render-header 源码是有返回h()函数的 在vue3 element-plus 表格源码 render-header函数没有返回h函数了 所以需要用render-header方法中创建虚拟DOM节点的话需要引用h方法 <el-table-column header-align"right" align"right" …

嵌入式音视频开发(二)ffmpeg音视频同步

系列文章目录 嵌入式音视频开发&#xff08;零&#xff09;移植ffmpeg及推流测试 嵌入式音视频开发&#xff08;一&#xff09;ffmpeg框架及内核解析 嵌入式音视频开发&#xff08;二&#xff09;ffmpeg音视频同步 嵌入式音视频开发&#xff08;三&#xff09;直播协议及编码器…

linux网络信号强度检测速度优化建议

参考文档-RedHat文档 一. 确定当前正在使用的网卡 通过默认路由查询&#xff1a;ip route show default输出示例&#xff1a;default via 192.168.1.1 dev wlp3s0 proto dhcp metric 600这里的wlps30或者是eth0 就是当前使用的网络接口&#xff08;可能是无线网卡或有线网卡&…

Spring Boot 自动装配原理深度剖析

一、引言 在 Java 开发领域&#xff0c;Spring 框架无疑是中流砥柱。而 Spring Boot 的出现&#xff0c;更是极大地简化了 Spring 应用的搭建和开发过程。其中&#xff0c;自动装配原理是 Spring Boot 的核心亮点之一&#xff0c;它让开发者无需手动编写大量繁琐的配置代码&am…

标量化rknn的输入输出向量转换处理

这是一篇技术探索。yolo11模型生成后&#xff0c;我发现它无法在rknn环境正确识别出目标对象。而在宿主机上&#xff0c;或者直接调用.pt转换过的.onnx模型是可以得到正确结果的。这篇文章对应近乎一天的工作。最终的结论就是。这是一个模型量化的问题&#xff0c;与yolo的版本…

【Arxiv 大模型最新进展】LEARNING HOW HARD TO THINK: 精准思考,智能分配算力(★AI最前线★)

【Arxiv 大模型最新进展】LEARNING HOW HARD TO THINK: 精准思考&#xff0c;智能分配算力&#xff08;★AI最前线★&#xff09; &#x1f31f; 嗨&#xff0c;你好&#xff0c;我是 青松 &#xff01; &#x1f308; 自小刺头深草里&#xff0c;而今渐觉出蓬蒿。 NLP Github…