CN113835911A - 内网穿透代理方法、系统、主机及计算机可读存储介质 - Google Patents
内网穿透代理方法、系统、主机及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113835911A CN113835911A CN202111389543.3A CN202111389543A CN113835911A CN 113835911 A CN113835911 A CN 113835911A CN 202111389543 A CN202111389543 A CN 202111389543A CN 113835911 A CN113835911 A CN 113835911A
- Authority
- CN
- China
- Prior art keywords
- event
- data packet
- client
- server
- return
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种内网穿透代理方法,包括步骤:通过预设的第一服务端口接收与所述服务端连接的调用端输入的请求信息,解析所述请求信息以生成事件数据包;根据所述事件数据包创建对应的事件协程,根据所述事件协程并通过第二服务端口将所述事件数据包发送至与所述服务端连接的客户端;通过所述第一服务端口接收所述客户端基于所述事件数据包反馈的返回数据包,并解析所述返回数据包以得到返回结果,将所述返回结果发送至所述调用端。本发明还公开了一种内网穿透代理系统、主机及计算机可读存储介质。通过本发明,能够内网穿透代理管理k8s集群。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种内网穿透代理方法、系统、主机及计算机可读存储介质。
背景技术
目前,随着容器技术和云原生越来越普及,kubernetes(以下简称k8s)作为最大的容器管理、自动部署和扩展的开源系统和容器编排的事实标准,已经越来越广泛地被各大企业使用。在房地产以及其他领域,许多大公司的各个系统都是使用k8s部署的,这些系统供企业内部使用。出于对网络安全的考虑,有些企业的k8s集群是私有化部署的,也就是不暴露端口到公网上。此时对集群中各个应用的部署、升级、管理的指令,需要通过一款安全、高效的内网穿透工具进行下发。而传统的内网穿透技术不具有与k8s的关联性,无法代理k8s的api(Application Programming Interface,应用程序接口),也无法同时代理多个私有化k8s集群以及无法保证服务端与客户端之间通信的安全性。
发明内容
本发明提出的一种内网穿透代理方法、系统、主机及计算机可读存储介质,旨在解决如何实现内网穿透安全地代理管理k8s集群的技术问题。
为实现上述目的,本发明提供一种内网穿透代理方法,包括以下步骤:
通过预设的第一服务端口接收与所述服务端连接的调用端输入的请求信息,解析所述请求信息以生成事件数据包;
根据所述事件数据包创建对应的事件协程,根据所述事件协程并通过预设的第二服务端口将所述事件数据包发送至与所述服务端连接的客户端;
通过所述第一服务端口接收所述客户端基于所述事件数据包反馈的返回数据包,并解析所述返回数据包以得到返回结果,将所述返回结果发送至所述调用端。
可选地,所述解析所述请求信息以生成事件数据包的步骤,包括:
解析所述请求信息以确认所述请求信息中的原始数据和命令字符串;
将所述原始数据封装为事件内容,并将所述命令字符串封装为事件指令;
根据所述事件内容和所述事件指令,创建对应的事件编码,将所述事件内容、所述事件指令以及所述事件编码封装为事件数据包。
可选地,所述解析所述请求信息以生成事件数据包的步骤之后,还包括:
获取所述请求信息中的请求上下文和所述请求信息对应的回调通道;
将所述请求上下文、所述回调通道和所述事件编码关联保存至预设数据结构,以得到目标数据结构。
可选地,所述将所述返回结果发送至所述调用端的步骤,包括:
根据所述事件编码,获取所述目标数据结构中与所述事件编码对应的所述请求上下文和所述回调通道;
将所述返回结果发送至所述回调通道,并通过所述请求上下文将所述回调通道中的返回结果转发至所述调用端。
可选地,所述根据所述事件数据包创建对应的事件协程的步骤之前,包括:
获取与所述事件数据包对应的客户端信息,判断所述客户端信息与所述事件数据包是否匹配;
若匹配,则执行根据所述事件数据包创建对应的事件协程的步骤。
此外,为实现上述目的,本发明还提供一种内网穿透代理方法,其特征在于,所述内网穿透代理方法应用于客户端,包括以下步骤:
接收与所述客户端连接的服务端发送的事件数据包,并判断所述事件数据包对应的事件类型;
根据所述事件类型,调用与所述事件类型对应的执行函数,通过所述执行函数执行对应的操作,并将所述操作的结果封装为返回数据包;
通过预设的第一服务端口将所述返回数据包发送至所述服务端。
可选地,所述接收与所述客户端连接的服务端发送的事件数据包的步骤之前,包括:
获取所述客户端对应的集群编码,将所述集群编码发送至服务端;
获取所述服务端基于所述集群编码反馈的鉴权令牌,所述鉴权令牌包括信道;
通过预设的第二服务端口发送连接请求和所述鉴权令牌至所述服务端,通过所述信道建立所述客户端与所述服务端之间的连接。
此外,为实现上述目的,本发明还提供一种内网穿透代理系统,其特征在于,所述内网穿透代理系统包括:
服务端,用于通过预设的第一服务端口接收与所述服务端连接的调用端输入的请求信息,解析所述请求信息以生成事件数据包;根据所述事件数据包创建对应的事件协程,根据所述事件协程并通过预设的第二服务端口将所述事件数据包发送至与所述服务端连接的客户端;通过所述第一服务端口接收所述客户端基于所述事件数据包反馈的返回数据包,并解析所述返回数据包以得到返回结果,将所述返回结果发送至所述调用端;
所述客户端,用于接收与所述客户端连接的服务端发送的事件数据包,并判断所述事件数据包对应的事件类型;根据所述事件类型,调用与所述事件类型对应的执行函数,通过所述执行函数执行对应的操作,并将所述操作的结果封装为返回数据包;通过预设的第一服务端口将所述返回数据包发送至所述服务端。
此外,为实现上述目的,本发明还提供一种主机,所述主机包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的内网穿透代理程序,其中:所述内网穿透代理程序被所述处理器执行时实现如上所述的内网穿透代理方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有内网穿透代理程序,所述内网穿透代理程序被处理器执行时实现如上所述的内网穿透代理方法的步骤。
本发明中的内网穿透代理方法先通过通过预设的第一服务端口接收与所述服务端连接的调用端输入的请求信息,解析所述请求信息以生成事件数据包的步骤,能够自动将调用端繁杂的请求参数、数据等信息进行分类和封装,减少了调用方的人工封装数据的任务量,同时提高了处理请求信息的效率。再通过根据所述事件数据包创建对应的事件协程,根据所述事件协程并通过第二服务端口将所述事件数据包发送至与所述服务端连接的客户端的步骤,能够保证每一事件数据包都处于唯一的事件协程,彼此不冲突,提高了推送事件的效率,同时使得事件准确推送到对应的客户端,并且该第二服务端口只能由服务端向客户端进行推送,满足了客户k8s私有化集群以及内网穿透安全性的需要。最后通过所述第一服务端口接收所述客户端基于所述事件数据包反馈的返回数据包,并解析所述返回数据包以得到返回结果,将所述返回结果发送至所述调用端的步骤,能够通过公网端口将客户端执行后的相关数据返回到服务端,不需要在用到像第二服务端口那样的私网端口,节省了成本,并能使返回结果及时反馈给调用端,以便调用端据此及时收悉或进行调整,使客户利益得到及时的维护。通过本发明,最终能够安全高效地代理k8s私有化集群,实现部署、升级各个k8s资源、服务和应用的功能,且服务端能够与多个客户端进行连接,并能够做到事件的精准推送和正确接收。
附图说明
图1为本发明实施例方案涉及的主机的硬件运行环境的终端结构示意图;
图2为本发明内网穿透代理方法第一实施例的流程示意图;
图3为本发明内网穿透代理方法第三实施例的流程示意图;
图4为本发明内网穿透代理方法涉及的一种三端交互示意图;
图5为本发明内网穿透代理方法涉及的另一种三端交互流程图;
图6为本发明内网穿透代理方法涉及内网穿透代理系统示意图。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的主机的硬件运行环境的终端结构示意图。
如图1所示,该终端可以包括:处理器1001,例如CPU,网络端口1004,用户端口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户端口1003可以包括显示器(Display)、输入单元比如控制面板,可选用户端口1003还可以包括标准的有线端口、无线端口。网络端口1004可选的可以包括标准的有线端口、无线端口(如5G端口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。作为一种计算机存储介质的存储器1005中可以包括内网穿透代理程序。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图2所示,图2是本发明内网穿透代理方法第一实施例的流程示意图,在本实施例中,所述方法包括:
步骤S10,通过预设的第一服务端口接收与所述服务端连接的调用端输入的请求信息,解析所述请求信息以生成事件数据包;
步骤S20,根据所述事件数据包创建对应的事件协程,根据所述事件协程并通过预设的第二服务端口将所述事件数据包发送至与所述服务端连接的客户端;
步骤S30,通过所述第一服务端口接收所述客户端基于所述事件数据包反馈的返回数据包,并解析所述返回数据包以得到返回结果,将所述返回结果发送至所述调用端。
在本实施例中,为了能够实现内网穿透,需要HUB(中心)服务端和Agent客户端两部分,其中的Agent客户端通过容器的方式安装在客户的k8s私有化集群,并通过SSE(Server-sent Events ,服务器发送事件)协议与HUB服务端保持连接。每个Agent客户端连接HUB服务端需要提供唯一的Topic和鉴权Token,其中的Topic是数据推送的信道,鉴权Token保证了连接的安全性。
Agent客户端在收到HUB服务端通过第二服务端口输出的推送时,主动解析HUB服务端推送的数据包,即事件数据包,每个数据包都是一个事件。在HUB服务端向Agent客户端推送事件的过程中会为每一事件创建对应的事件协程,并且通过HUB服务端可以实现同时间为成千上万的事件创建成千上万的事件协程,不受限于HUB服务端硬件的线程限制。
其中的HUB服务端部署在集群外,并可提供公网端口供外部调用。其中的公网端口包括第一服务端口和第二服务端口,其中的第一服务端口提供一个HTTP服务,此服务的功能如下:
a.给调用方提供执行命令的接口。调用方调用此接口可以代理在私有化k8s集群执行命令。比如执行:kubectl get deployments -n xxx,来获取集群中某个命名空间下的工作负载信息。
b.给调用方提供访问k8s api的接口,调用方通过调用HUB服务端的此接口,可以做到如同直接访问客户集群k8s api相同的效果。
c.给调用方提供代理http请求的接口,调用方通过访问此接口,能够访问私有化k8s集群内部的http服务,并获取到正确的返回结果。
d.给Agent客户端提供回调接口,该接口接收Agent客户端在执行完指令之后的回调数据,并解析返回数据包,数据包中包含派发给Agent客户端的事件id,即通过事件id,从map中找到请求上下文和channel,并将Agent返回数据经HUB服务端解析后的返回结果发送到对应的channel中。请求等待中的协程在接收到channel中的数据后,将相关数据通过请求上下文发回给调用方。
其中的第二服务接口提供实现了SSE协议的推送服务,即通过HUB服务端向Agent客户端单向推送事件,但首先要Agent客户端通过访问该服务向HUB服务端发起SSE连接并保持这个连接。具体地,HUB服务端通过这个连接向对应的Topic的Agent客户端程序推送事件。
推送的事件类型包括但不限于执行命令、代理k8s api、代理http请求,其中通过推送执行命令的事件,可以实现Agent客户端自升级功能。Agent客户端是通过helm chart部署在客户私有化k8s集群的,HUB服务端可以通过推送一个helm chart 更新包和Agent更新命令,能够让Agent客户端通过helm upgrade 命令自动升级到新版本。
简单来说,HUB服务端的功能主要是:接收调用方的请求,并将请求信息封装成事件派发到对应Topic的Agent,并创建一个协程等待Agent回调的执行结果。当接收到Agent客户端的返回数据时,解析返回数据,将事件执行结果返回给调用方。
事件的派发是异步并发执行的,但对于调用方而言是同步的,调用请求的程序会等待异步执行的Agent客户端回调返回结果,并最终返回给调用方。
HUB服务端通过心跳维持和Agent客户端的连接,Agent客户端在SSE连接异常断开时,主动检测并重新发起连接。
另外HUB服务端查询连接个数和连接状态,为了避免相同的事件被推送到两个不同的k8s集群,能避免两个相同Topic名称的Agent客户端同时连接,具体地,Agent客户端在启动时,会首先启动一个init容器,该init容器启动后会询问HUB服务端是否有与其相同名称的topic已经存在,如果HUB服务端返回已经存在,则Agent就会不启动,需要人工干预,如果HUB服务端返回不存在,Agent客户端就会正常启动并发起SSE连接。
在一实施例中,所述根据所述事件数据包创建对应的事件协程的步骤之前,包括:
获取与所述事件数据包对应的客户端信息,判断所述客户端信息与所述事件数据包是否匹配;
若匹配,则执行根据所述事件数据包创建对应的事件协程的步骤。
该客户端信息是通过客户端经第一服务端口发送到服务端中进行保存的,从服务端获取当前最新的客户端信息,将当前的客户端信息与事件数据包进行比较,也即将当前的客户端信息与请求信息进行比较,判断请求信息是否对应的客户端信息来确保请求信息是否得当,虽然请求信息在调用方已经被人工简单核实过一遍,但难免出现疏漏,所以可以在HUB服务端进一步进行校验,具体地,将事件数据包与当前的客户端信息中的节点信息等、Agent客户端的helm chart版本信息、Agent客户端的所在的命名空间信息(namespace)、Agent客户端的版本信息等信息进行比较,只有当需要核对的信息都一致的情况下,才继续执行接下来的步骤。这样就避免了因推送错误事件而给客户造成不必要的损失和麻烦,同时减轻了人工核验的工作量,提高了调用方和客户方双方的效率。
本发明中的内网穿透代理方法先通过通过预设的第一服务端口接收与所述服务端连接的调用端输入的请求信息,解析所述请求信息以生成事件数据包的步骤,能够自动将调用端繁杂的请求参数、数据等信息进行分类和封装,减少了调用方的人工封装数据的任务量,同时提高了处理请求信息的效率。再通过根据所述事件数据包创建对应的事件协程,根据所述事件协程并通过第二服务端口将所述事件数据包发送至与所述服务端连接的客户端的步骤,能够保证每一事件数据包都处于唯一的事件协程,彼此不冲突,提高了推送事件的效率,同时使得事件准确推送到对应的客户端,并且该第二服务端口只能由服务端向客户端进行推送,满足了客户k8s私有化集群以及内网穿透安全性的需要。最后通过所述第一服务端口接收所述客户端基于所述事件数据包反馈的返回数据包,并解析所述返回数据包以得到返回结果,将所述返回结果发送至所述调用端的步骤,能够通过公网端口将客户端执行后的相关数据返回到服务端,不需要在用到像第二服务端口那样的私网端口,节省了成本,并能使返回结果及时反馈给调用端,以便调用端据此及时收悉或进行调整,使客户利益得到及时的维护。通过本发明,最终能够安全高效地代理k8s私有化集群,实现部署、升级各个k8s资源、服务和应用的功能,且服务端能够与多个客户端进行连接,并能够做到事件的精准推送和正确接收。
进一步地,基于本发明内网穿透代理方法的第一实施例提出本发明内网穿透代理方法的第二实施例,在本实施例中,所述解析所述请求信息以生成事件数据包的步骤,包括:
步骤a,解析所述请求信息以确认所述请求信息中的原始数据和命令字符串;
步骤b,将所述原始数据封装为事件内容,并将所述命令字符串封装为事件指令;
步骤c,根据所述事件内容和所述事件指令,创建对应的事件编码,将所述事件内容、所述事件指令以及所述事件编码封装为事件数据包。
调用方通过第一服务端口向HUB服务端输出的原始数据包和命令字符串和其他参数,将相关联的原始数据包、命令字符串和其他参数作为同一请求信息提供给HUB服务端,在HUB服务端接收到请求信息之后,解析请求信息,从而确认出请求信息中的内容哪些是原始数据包和其他参数,哪些是命令字符串,进而再将原始数据包和其他参数封装为事件内容,将命令字符串封装为事件指令,最后再根据事件内容和事件指令创建对应的事件id,将事件内容、事件指令和事件id共同封装为事件数据包,其中事件id可以作为事件数据包的名称。通过这种分类打包的方式,减少了调用方的工作量,同时要比人工进行手动打包更准确高效,也提高了事件推送的效率。
在一实施例中,所述解析所述请求信息以生成事件数据包的步骤之后,还包括:
步骤d,获取所述请求信息中的请求上下文和所述请求信息对应的回调通道;
步骤e,将所述请求上下文、所述回调通道和所述事件编码关联保存至预设数据结构,以得到目标数据结构。
HUB服务端的内存中维护一个map数据结构,每次接收到调用方请求,则事件id作为key,调用方请求上下文(context)和接收回调数据的通道(channel)作为Value,保存在map中。在派发事件时,先判断Agent客户端连接是否正常,如果正常,则通过SSE将事件中的数据包发送给Topic对应的Agent客户端,不正常则直接给调用方返回“Agent未连接”的结果。Value中的Channel能保证高并发通信的安全性,请求上下文context能保证最终异步回调的数据会发给请求调用方。
也即在另一实施例中,所述将所述返回结果发送至所述调用端的步骤,包括:
步骤f,根据所述事件编码,获取所述目标数据结构中与所述事件编码对应的所述请求上下文和所述回调通道;
步骤g,将所述返回结果发送至所述回调通道,并通过所述请求上下文将所述回调通道中的返回结果转发至所述调用端。
如图3所示,图3是本发明内网穿透代理方法第三实施例涉及的流程图,进一步地,提出本发明内网穿透代理方法的第三实施例,在本实施例中,所述内网穿透代理方法应用于客户端,包括以下步骤:
步骤S40,接收与所述客户端连接的服务端发送的事件数据包,并判断所述事件数据包对应的事件类型;
步骤S50,根据所述事件类型,调用与所述事件类型对应的执行函数,通过所述执行函数执行对应的操作,并将所述操作的结果封装为返回数据包;
步骤S60,通过预设的第一服务端口将所述返回数据包发送至所述服务端。
Agent客户端接收到HUB服务端推送的事件之后,首先解析事件数据包,判断事件类型,并做不同的处理:
a.如果事件类型是执行命令,则获取数据包中的命令字符串,提供给执行命令的函数执行,并获取执行结果和错误等信息,解析为返回数据包。
b.如果事件类型是代理k8s api,则获取数据包中的请求url、参数等信息,调用对应的k8s api,提供给执行k8s api的函数执行,并将本集群k8s返回的响应解析为返回数据包。
c.如果事件类型是代理http请求,则获取数据包中的http请求地址、请求头、请求body等信息提供给代理http请求的函数执行,该函数会根据这些信息,调用一个http客户端,来代理执行事件数据包中的http请求。最后将响应头、响应体、响应状态码等信息解析为返回数据包。
d.Agent客户端在执行完一次事件之后,会将响应数据包通过调用HUB服务端回调接口返回给HUB服务端。
对于本实施例不仅可以实现代理k8s私有化集群的多种操作,而且通过将事件进行识别分类,能够提高Agent客户端的执行效率,即使是存在多条协程的命令或其他任务也能够稳定地执行和反馈,保证了Agent客户端的高效稳定。
对于Agent客户端和HUB服务端以及调用方之间的通信交互可以参照图4,图4为本发明内网穿透代理方法涉及的一种三端交互示意图。如图所示,首先HUB服务端接收调用方的各种请求,通过与Agent客户端的SSE连接向Agent客户端进行事件推送,图中有两种K8s私有化集群:K8s私有化集群A,K8s私有化集群B,其中K8s私有化集群A与HUB服务端交互的信道为topic:A,K8s私有化集群B与HUB服务端交互的信道为topic:B,以K8s私有化集群A为例,在接收到HUB服务端推送的事件之后,根据不同的事件类型,在Agent客户端执行不同的操作,像执行命令,可以对Agent客户端的进行应用的升级、删除、增加等操作,还可以响应代理k8s api的操作,还可以是响应代理http请求的操作,例如,可以将本企业的k8s私有化集群A中的相关数据通过代理http请求的操作,将k8s私有化集群A相关数据通过HTTP协议的回调(返回数据)发送给HUB服务端,再由HUB服务端通过事件推送的方式将相关数据转发到另一k8s私有化集群中。在Agent客户端执行完推送的事件之后,通过HTTP协议连接的方式返回执行后的数据包至HUB服务端,再由HUB服务端对返回数据包的内容进行解析,得到解析后的结果后将该结果反馈给调用方。
为了进一步理解Agent客户端和HUB服务端以及调用方之间的交互流程,可以参照图5,图5为本发明内网穿透代理方法涉及的另一种三端交互流程图。如图所示,调用方调用Hub服务端接口,即上文中第一服务端口,Hub服务端解析调用方的请求,,在向Agent客户端推送之前,先判断像Agent客户端是否已经连接,如果未连接,就直接返回Agent客户端未连接的结果给调用方,结束流程。如果已连接,就将请求信息封装生成对应的事件并派发该事件,同时为该事件创建一项子协程,事实上在Hub服务端可以同时创造这样的子协程可以达到上万个,确保了多事件的同步高效推送,在该子协程创建完成并派发事件完成之后,接下来就需要子协程去等待Agent客户端执行后的回调数据,如果子协程等待超过预设时间,Hub服务端返回Agent客户端未连接的结果给调用方,结束流程。如果子协程等待没有超过预设时间,Hub服务端接收到回调数据并对数据进行解析得到返回结果,最后返回结果至调用方,结束流程。
在一实施例中,所述接收与所述客户端连接的服务端发送的事件数据包的步骤之前,包括:
步骤h,获取所述客户端对应的集群编码,将所述集群编码发送至服务端;
步骤i,获取所述服务端基于所述集群编码反馈的鉴权令牌,所述鉴权令牌包括信道;
步骤j,通过预设的第二服务端口发送连接请求和所述鉴权令牌至服务端,通过所述信道建立所述客户端与所述服务端之间的连接。
运维人员需要为某个集群安装新的Agent时,则需要访问该接口,输入唯一的集群Code,HUB会根据集群Code生成唯一的Agent的Topic,并将Topic写入到访问Token(鉴权令牌)中,提供给运维人员,这样就避免了同一事件推送给了信道相同的不同k8s私有化集群情况的发生,造成不必要的麻烦和损失。
Agent客户端启动前需要将连接的HUB服务器的网络地址(对应上文的HUB的第二服务端口),和执行成功后HUB服务器的回调地址(对应上文HUB服务端的第一服务端口),以及访问Token通过参数的形式提供给Agent客户端。再由Agent客户端发起与HUB服务端的SSE连接,连接成功之后,HUB服务端就通过唯一的Topic信道向Agent客户端进行推送。另外无论是HUB服务端推送事件时还是Agent客户端回调数据时都需要Token鉴权,保证了HUB服务端与Agent客户端之间通信的安全性。
再一实施例中,所述内网穿透代理方法,还包括:
获取所述客户端对应的客户端信息,通过所述第一服务端口将所述客户端信息发送至所述服务端。
Agent客户端提供信息上报功能,每隔预设时间间隔,其中预设时间间隔可以根据实际需要设置,优选地,为60秒,例如每隔60秒就会采集客户集群的基本信息,即客户端信息,比如节点信息等、当前Agent客户端的helm chart版本、当前Agent的所在的命名空间(namespace)、当前Agent客户端的版本、连接时间等信息,通过HUB服务端提供的第一服务端口上报给HUB服务端,方便运维人员及时了解Agent客户端和Agent客户端所在集群的健康状态。如果Agent客户端断开,则可方便知道断开连接的时间点。
此外,参照图6,本发明还提出一种内网穿透代理系统,所述内网穿透代理系统包括:
服务端A10,用于通过预设的第一服务端口接收与所述服务端连接的调用端输入的请求信息,解析所述请求信息以生成事件数据包;根据所述事件数据包创建对应的事件协程,根据所述事件协程并通过预设的第二服务端口将所述事件数据包发送至与所述服务端连接的客户端;通过所述第一服务端口接收所述客户端基于所述事件数据包反馈的返回数据包,并解析所述返回数据包以得到返回结果,将所述返回结果发送至所述调用端。
所述客户端A20,用于接收与所述客户端连接的服务端发送的事件数据包,并判断所述事件数据包对应的事件类型;根据所述事件类型,调用与所述事件类型对应的执行函数,通过所述执行函数执行对应的操作,并将所述操作的结果封装为返回数据包;通过预设的第一服务端口将所述返回数据包发送至所述服务端。
本发明内网穿透代理系统具体实施方式与上述内网穿透代理方法各实施例基本相同,在此不再赘述。
此外,本发明还提出一种主机,所述主机包括存储器、处理器及存储在存储器上并可在处理器上运行的内网穿透代理程序,所述处理器执行所述内网穿透代理程序时实现如以上实施例所述的内网穿透代理方法的步骤。
本发明主机具体实施方式与上述内网穿透代理方法各实施例基本相同,在此不再赘述。
此外,本发明还提出一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括内网穿透代理程序,所述内网穿透代理程序被处理器执行时实现如以上实施例所述的内网穿透代理方法的步骤。
本发明计算机可读存储介质具体实施方式与上述内网穿透代理方法各实施例基本相同,在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是电视机,手机,计算机,服务器,车机,或者网络设备等)执行本发明各个实施例所述的方法。
在本发明中,术语“第一”“第二”“第三”“第四”“第五”仅用于描述的目的,而不能理解为指示或暗示相对重要性,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,本发明保护的范围并不局限于此,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改和替换,这些变化、修改和替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种内网穿透代理方法,其特征在于,所述内网穿透代理方法应用于服务端,包括以下步骤:
通过预设的第一服务端口接收与所述服务端连接的调用端输入的请求信息,解析所述请求信息以生成事件数据包;
根据所述事件数据包创建对应的事件协程,根据所述事件协程并通过预设的第二服务端口将所述事件数据包发送至与所述服务端连接的客户端;
通过所述第一服务端口接收所述客户端基于所述事件数据包反馈的返回数据包,并解析所述返回数据包以得到返回结果,将所述返回结果发送至所述调用端。
2.如权利要求1所述的内网穿透代理方法,其特征在于,所述解析所述请求信息以生成事件数据包的步骤,包括:
解析所述请求信息以确认所述请求信息中的原始数据和命令字符串;
将所述原始数据封装为事件内容,并将所述命令字符串封装为事件指令;
根据所述事件内容和所述事件指令,创建对应的事件编码,将所述事件内容、所述事件指令以及所述事件编码封装为事件数据包。
3.如权利要求2所述的内网穿透代理方法,其特征在于,所述解析所述请求信息以生成事件数据包的步骤之后,还包括:
获取所述请求信息中的请求上下文和所述请求信息对应的回调通道;
将所述请求上下文、所述回调通道和所述事件编码关联保存至预设数据结构,以得到目标数据结构。
4.如权利要求3所述的内网穿透代理方法,其特征在于,所述将所述返回结果发送至所述调用端的步骤,包括:
根据所述事件编码,获取所述目标数据结构中与所述事件编码对应的所述请求上下文和所述回调通道;
将所述返回结果发送至所述回调通道,并通过所述请求上下文将所述回调通道中的返回结果转发至所述调用端。
5.如权利要求1所述的内网穿透代理方法,其特征在于,所述根据所述事件数据包创建对应的事件协程的步骤之前,包括:
获取与所述事件数据包对应的客户端信息,判断所述客户端信息与所述事件数据包是否匹配;
若匹配,则执行根据所述事件数据包创建对应的事件协程的步骤。
6.一种内网穿透代理方法,其特征在于,所述内网穿透代理方法应用于客户端,包括以下步骤:
接收与所述客户端连接的服务端发送的事件数据包,并判断所述事件数据包对应的事件类型;
根据所述事件类型,调用与所述事件类型对应的执行函数,通过所述执行函数执行对应的操作,并将所述操作的结果封装为返回数据包;
通过预设的第一服务端口将所述返回数据包发送至所述服务端。
7.如权利要求6所述的内网穿透代理方法,其特征在于,所述接收与所述客户端连接的服务端发送的事件数据包的步骤之前,包括:
获取所述客户端对应的集群编码,将所述集群编码发送至服务端;
获取所述服务端基于所述集群编码反馈的鉴权令牌,所述鉴权令牌包括信道;
通过预设的第二服务端口发送连接请求和所述鉴权令牌至所述服务端,通过所述信道建立所述客户端与所述服务端之间的连接。
8.一种内网穿透代理系统,其特征在于,所述内网穿透代理系统包括:
服务端,用于通过预设的第一服务端口接收与所述服务端连接的调用端输入的请求信息,解析所述请求信息以生成事件数据包;根据所述事件数据包创建对应的事件协程,根据所述事件协程并通过预设的第二服务端口将所述事件数据包发送至与所述服务端连接的客户端;通过所述第一服务端口接收所述客户端基于所述事件数据包反馈的返回数据包,并解析所述返回数据包以得到返回结果,将所述返回结果发送至所述调用端;
所述客户端,用于接收与所述客户端连接的服务端发送的事件数据包,并判断所述事件数据包对应的事件类型;根据所述事件类型,调用与所述事件类型对应的执行函数,通过所述执行函数执行对应的操作,并将所述操作的结果封装为返回数据包;通过预设的第一服务端口将所述返回数据包发送至所述服务端。
9.一种主机,其特征在于,所述主机包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的内网穿透代理程序,其中:所述内网穿透代理程序被所述处理器执行时实现如权利要求1-5、6-7中任一项所述的内网穿透代理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有内网穿透代理程序,所述内网穿透代理程序被处理器执行时实现如权利要求1-5、6-7中任一项所述的内网穿透代理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111389543.3A CN113835911B (zh) | 2021-11-23 | 2021-11-23 | 内网穿透代理方法、系统、主机及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111389543.3A CN113835911B (zh) | 2021-11-23 | 2021-11-23 | 内网穿透代理方法、系统、主机及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113835911A true CN113835911A (zh) | 2021-12-24 |
CN113835911B CN113835911B (zh) | 2022-03-01 |
Family
ID=78971452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111389543.3A Active CN113835911B (zh) | 2021-11-23 | 2021-11-23 | 内网穿透代理方法、系统、主机及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113835911B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114785761A (zh) * | 2022-03-22 | 2022-07-22 | 杭州指令集智能科技有限公司 | 物联网操作系统中一种先进的k8s集群互相通信方法 |
CN114915545A (zh) * | 2022-05-20 | 2022-08-16 | 深圳市证通电子股份有限公司 | 基于dhcp网络高可用集群的应用调度部署管理方法 |
CN115865886A (zh) * | 2022-11-28 | 2023-03-28 | 灵犀科技有限公司 | 一种基于http的跨网络数据交互方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154306A1 (en) * | 2002-02-11 | 2003-08-14 | Perry Stephen Hastings | System and method to proxy inbound connections to privately addressed hosts |
CN102420774A (zh) * | 2012-01-06 | 2012-04-18 | 深圳市共进电子股份有限公司 | 使用igmp实现内网穿透的方法和内网穿透系统 |
CN109451051A (zh) * | 2018-12-18 | 2019-03-08 | 百度在线网络技术(北京)有限公司 | 服务请求处理方法、装置、电子设备及存储介质 |
US20190104035A1 (en) * | 2017-10-02 | 2019-04-04 | Nicira, Inc. | Three tiers of saas providers for deploying compute and network infrastructure in the public cloud |
CN110365741A (zh) * | 2019-06-13 | 2019-10-22 | 网宿科技股份有限公司 | 一种连接建立方法及中转服务器 |
CN110611724A (zh) * | 2018-06-15 | 2019-12-24 | 上海仪电(集团)有限公司中央研究院 | 一种基于反向代理的物联网网关内网穿透方法 |
CN110891185A (zh) * | 2019-11-21 | 2020-03-17 | 深圳警翼软件技术有限公司 | 一种无需公网ip地址实现互联网场景下采集工作站分布式存储的方法 |
CN112054998A (zh) * | 2020-08-10 | 2020-12-08 | 中粮招商局(深圳)粮食电子交易中心有限公司 | 代理服务方法、装置、设备和计算机可读存储介质 |
CN112448856A (zh) * | 2021-01-28 | 2021-03-05 | 杭州朗澈科技有限公司 | 一种内网kubernetes对外提供公网访问的方法和系统 |
-
2021
- 2021-11-23 CN CN202111389543.3A patent/CN113835911B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154306A1 (en) * | 2002-02-11 | 2003-08-14 | Perry Stephen Hastings | System and method to proxy inbound connections to privately addressed hosts |
CN102420774A (zh) * | 2012-01-06 | 2012-04-18 | 深圳市共进电子股份有限公司 | 使用igmp实现内网穿透的方法和内网穿透系统 |
US20190104035A1 (en) * | 2017-10-02 | 2019-04-04 | Nicira, Inc. | Three tiers of saas providers for deploying compute and network infrastructure in the public cloud |
CN110611724A (zh) * | 2018-06-15 | 2019-12-24 | 上海仪电(集团)有限公司中央研究院 | 一种基于反向代理的物联网网关内网穿透方法 |
CN109451051A (zh) * | 2018-12-18 | 2019-03-08 | 百度在线网络技术(北京)有限公司 | 服务请求处理方法、装置、电子设备及存储介质 |
CN110365741A (zh) * | 2019-06-13 | 2019-10-22 | 网宿科技股份有限公司 | 一种连接建立方法及中转服务器 |
CN110891185A (zh) * | 2019-11-21 | 2020-03-17 | 深圳警翼软件技术有限公司 | 一种无需公网ip地址实现互联网场景下采集工作站分布式存储的方法 |
CN112054998A (zh) * | 2020-08-10 | 2020-12-08 | 中粮招商局(深圳)粮食电子交易中心有限公司 | 代理服务方法、装置、设备和计算机可读存储介质 |
CN112448856A (zh) * | 2021-01-28 | 2021-03-05 | 杭州朗澈科技有限公司 | 一种内网kubernetes对外提供公网访问的方法和系统 |
Non-Patent Citations (1)
Title |
---|
石磊等: "基于内网节点的防火墙穿透方法", 《现代电子技术》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114785761A (zh) * | 2022-03-22 | 2022-07-22 | 杭州指令集智能科技有限公司 | 物联网操作系统中一种先进的k8s集群互相通信方法 |
CN114915545A (zh) * | 2022-05-20 | 2022-08-16 | 深圳市证通电子股份有限公司 | 基于dhcp网络高可用集群的应用调度部署管理方法 |
CN114915545B (zh) * | 2022-05-20 | 2024-01-26 | 深圳市证通电子股份有限公司 | 基于dhcp网络集群的应用调度部署管理方法 |
CN115865886A (zh) * | 2022-11-28 | 2023-03-28 | 灵犀科技有限公司 | 一种基于http的跨网络数据交互方法和装置 |
CN115865886B (zh) * | 2022-11-28 | 2023-07-18 | 灵犀科技有限公司 | 一种基于http的跨网络数据交互方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113835911B (zh) | 2022-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113835911B (zh) | 内网穿透代理方法、系统、主机及计算机可读存储介质 | |
CN110535831B (zh) | 基于Kubernetes和网络域的集群安全管理方法、装置及存储介质 | |
US8443347B2 (en) | Translating declarative models | |
US8849892B2 (en) | Method and system for brokering messages in a distributed system | |
CN110377438B (zh) | 跨进程通信接口的路由方法、装置和系统 | |
JP3853592B2 (ja) | 分散ウェブアプリケーションサーバ | |
KR100453824B1 (ko) | 이기종 네트워크 장비의 구성 관리를 위한 엑스엠엘 기반망 관리 시스템 및 방법 | |
CN112632566B (zh) | 漏洞扫描方法和装置、存储介质及电子设备 | |
US10303463B2 (en) | Terminal management framework and terminal management method | |
CN111708550A (zh) | 应用部署方法、装置、计算机设备及存储介质 | |
US20030055862A1 (en) | Methods, systems, and articles of manufacture for managing systems using operation objects | |
CN112363845A (zh) | 系统集成中台的数据同步方法及集成中台系统 | |
US8924947B2 (en) | Direct deployment of static content | |
US8738742B2 (en) | Tiered XML services in a content management system | |
CN113179269B (zh) | 基于物联网的协议数据解析方法、系统、介质 | |
CN109683916A (zh) | 一种自主创建包含应用软件的云主机镜像的方法 | |
CN111008064B (zh) | 虚机资源调度方法和装置、集群部署方法和装置 | |
CN112685102B (zh) | 一种网关插件热加载方法、装置、设备及介质 | |
WO2002039257A2 (en) | Automated provisioning framework for internet site servers | |
CN112287265B (zh) | 一种基于异步事件驱动的文件转换方法及系统 | |
CN114064054A (zh) | 一种微服务发布方法、装置、设备及存储介质 | |
WO2011118048A1 (ja) | プログラム実行方法、計算機システム及びプログラム実行制御プログラム | |
CN115913824B (zh) | 跨vpc的虚拟服务器通信方法及系统 | |
CN111125149B (zh) | 基于Hive的数据获取方法、装置及存储介质 | |
US7529837B2 (en) | Device and method for changing instruction description, and storage medium storing program for changing instruction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |