当前位置: 首页 > news >正文

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

【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.dtcms.com/a/29502.html

相关文章:

  • 高性能内存对象缓存Memcached详细实验操作
  • 搭建Kubernetes (K8s) 集群----Centos系统
  • RK3588配置成为路由器
  • 京东广告基于 Apache Doris 的冷热数据分层实践
  • 如何清理cache-loader生成的缓存目录?
  • 命令执行漏洞 Command Execute
  • 数据结构——字符串匹配KMP
  • Linux(ubuntu) GPU CUDA 构建Docker镜像
  • 【PyQt5】python可视化开发:PyQt5介绍,开发环境搭建快速入门
  • Linux-C/C++《C/8、系统信息与系统资源》
  • 抓包工具是什么?
  • 深入解析浏览器渲染全流程:从URL输入到页面渲染的底层原理与性能优化(附实战代码)
  • Memcached和redis对比了解
  • Python—requests模块
  • excel导入Mysql中时间格式异常
  • 深度学习笔记—— GRU(Gated Recurrent Unit)
  • 【设计模式精讲】创建型模式之单例模式(饿汉式、懒汉式、双重校验、静态内部类、枚举)
  • Node IO操作
  • 【阮一峰】2.数组
  • vue3 input type=“file” 修改样式
  • 深入理解Zookeeper:分布式系统的协调者
  • 三、Three.js模型对象、材质
  • 网络运维学习笔记 012网工初级(HCIA-Datacom与CCNA-EI)某机构新增:GRE隧道与EBGP实施
  • 16Linux运维网络基础(02网络层次结构)
  • spring注解开发(纯注解开发模式)(2)
  • MobaXterm通过ssh远程连接Ubuntu的方法
  • 【重磅发布】OmniParser V2-开启GUI自动化新时代
  • 【Python爬虫(26)】Python爬虫进阶:数据清洗与预处理的魔法秘籍
  • LeetCode 热题 100_搜索插入位置(63_35_简单_C++)(二分查找)(”>>“ 与 “/” 对比)
  • 3、Kubernetes 集群部署 Prometheus 和 Grafana