主页 > 其他  > 

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

【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 -->云服务器的公网 IPserver_port = 7000 --> FRP 服务器端口local_ip = local_A_ip -->客户端 A 的内网 IPlocal_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 = 6000A的local_ip 和local_port 定位到A 发送给A

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

标签:

【Linux】【网络】frp如何准确将客户端B请求转发给服务器A的由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【Linux】【网络】frp如何准确将客户端B请求转发给服务器A的