Open isayme opened 3 years ago
通过因特网(Internet)访问局域网(LAN)中的服务.
内网本身无因特网IP, 无法通过局域网路由器的端口转发功能转发请求.
方案为内网穿透, 目前有开源产品 frp. 本文实现的工具取名 xlan, 服务端, 客户端分别称为 xlans 和 xlanc
内网穿透
xlans
xlanc
完整通信链路由 4 部分组成: 用户(user), 内网穿透服务端(xlans), 内网穿透客户端(xlanc), 最终服务(service), 其中 xlans 有公网 IP 地址.
总体思路: user 无法直接访问 service, 但是可以访问 xlans, xlans 将用户的请求转交给 xlanc, 由 xlanc 代为访问 service.
总体思路
user
service
第1步: xlanc 启动时与 xlans 建立控制连接, 注册 service 信息, 接收来自 xlans 的指令; 第2步: user 向 xlans 发起请求, 建立连接 A; 第3步: xlans 向 xlanc 发起指令, 告知有 user 请求 service; 第4步: xlanc 向 xlans 建立数据连接 B; 第5步: xlanc 向 service 建立连接 C; 最后: xlans 将连接 A 和 B 的数据进行交换, xlanc 将连接 B 和 C 的数据进行交换, 达到 user 和 service 通信的目的.
控制连接
数据连接
目标
通过因特网(Internet)访问局域网(LAN)中的服务.
限制条件
内网本身无因特网IP, 无法通过局域网路由器的端口转发功能转发请求.
解决方案
方案为
内网穿透
, 目前有开源产品 frp. 本文实现的工具取名 xlan, 服务端, 客户端分别称为xlans
和xlanc
设计
完整通信链路由 4 部分组成: 用户(user), 内网穿透服务端(xlans), 内网穿透客户端(xlanc), 最终服务(service), 其中
xlans
有公网 IP 地址.总体思路
:user
无法直接访问service
, 但是可以访问xlans
,xlans
将用户的请求转交给xlanc
, 由xlanc
代为访问service
.关键链路
第1步: xlanc 启动时与 xlans 建立
控制连接
, 注册 service 信息, 接收来自 xlans 的指令; 第2步: user 向 xlans 发起请求, 建立连接 A; 第3步: xlans 向 xlanc 发起指令, 告知有 user 请求 service; 第4步: xlanc 向 xlans 建立数据连接
B; 第5步: xlanc 向 service 建立连接 C; 最后: xlans 将连接 A 和 B 的数据进行交换, xlanc 将连接 B 和 C 的数据进行交换, 达到 user 和 service 通信的目的.