本技术涉及通信,更具体地说,涉及一种应用代理方法、装置及一种电子设备和一种计算机可读存储介质。
背景技术:
1、在相关技术中,采用零信任网关进行应用代理的方案为:用户配置零信任网关也即代理网关设备的ip地址和路由,应用部署需要配置零信任网关的ip地址以及应用服务器的ip地址,也即零信任网关配置以自身ip为目标的前置应用代理地址,并配置反向代理到上游应用服务器的ip地址。在上述方案中,客户端只能访问前置应用代理地址,零信任网关的部署对整个现网是可见不透明的,它需要被网络拓扑其他节点感知,也需要感知网络拓扑其他节点。
2、因此,如何在代理网关设备进行应用代理的过程中实现代理网关的透明部署是本领域技术人员需要解决的技术问题。
技术实现思路
1、本技术的目的在于提供一种应用代理方法、装置及一种电子设备和一种计算机可读存储介质,在代理网关设备进行应用代理的过程中实现了代理网关的透明部署。
2、为实现上述目的,本技术提供了一种应用代理方法,应用于应用层代理网关设备,所述代理网关设备连接客户端,所述代理网关设备通过路由器或交换机连接应用服务器,所述方法包括:
3、接收所述客户端发送的请求数据包,并基于所述请求数据包的流量特征判断所述请求数据包是否为应用代理流量;
4、若是,则基于所述请求数据包中的链路层信息和网络层信息创建第一映射关系,剥离所述请求数据包中的所述链路层信息以构建链路层数据包;
5、基于tproxy机制将所述链路层数据包传输至应用层进行流量操作,并在所述应用层基于链路层数据包重新构造待发送数据包;
6、基于所述第一映射关系确定所述待发送数据包中的网络层信息对应的链路层信息,在所述待发送数据包中补充所述链路层信息以构造发送数据包;
7、将所述发送数据包发送至所述应用服务器。
8、其中,在所述应用层基于链路层数据包重新构造待发送数据包之后,还包括:
9、获取所述客户端的第一端口信息与所述代理网关设备的第二端口信息之间的第二映射关系;
10、基于所述第二映射关系将所述待发送数据包中的源端口信息替换为对应的第一端口信息。
11、其中,所述基于所述请求数据包的流量特征判断所述请求数据包是否为应用代理流量,包括:
12、基于所述请求数据包的ip头信息判断所述请求数据包是否为分片流量;
13、若所述请求数据包为分片流量,则基于所述请求数据包的ip信息判断所述请求数据包是否为应用代理流量;若所述请求数据包为非应用代理流量,则将所述请求数据包发送至网络协议栈,以便所述网络协议栈判断所述请求数据包是否为应用代理流量;
14、若所述请求数据包为非分片流量,则基于所述请求数据包的ip信息、端口信息和协议信息判断所述请求数据包是否为应用代理流量。
15、其中,所述基于所述请求数据包的流量特征判断所述请求数据包是否为应用代理流量,包括:
16、基于所述请求数据包的ip信息判断所述请求数据包是否为应用代理流量;
17、若是,则进入所述基于所述请求数据包中的链路层信息和网络层信息创建第一映射关系的步骤;
18、若否,则将所述请求数据包发送至网络协议栈,以便所述网络协议栈判断所述请求数据包是否为应用代理流量。
19、其中,所述网络协议栈判断所述请求数据包是否为应用代理流量,包括:
20、所述网络协议栈中的第一挂载点收集完整的ip分片数据包数组,并扫描所述ip分片数据包数组中的首个分片数据包,判断所述首个分片数据包是否为应用代理流量;
21、若所述首个分片数据包为应用代理流量,则所述ip分片数据包数组进行重组得到ip分片重组数据包,所述网络协议栈中的第二挂载点判断所述ip分片重组数据包是否为应用代理流量;
22、若所述ip分片重组数据包为应用代理流量,则进入所述基于所述请求数据包中的链路层信息和网络层信息创建第一映射关系的步骤;若所述ip分片重组数据包为非应用代理流量,则丢弃所述ip分片重组数据包;
23、若所述首个分片数据包为非应用代理流量,则基于本地网桥直接内核转发所述ip分片数据包数组。
24、其中,所述基于所述请求数据包的流量特征判断所述请求数据包为应用代理流量之后,还包括:
25、基于所述请求数据包的路由信息创建对应的邻居项;
26、相应的,在所述应用层基于链路层数据包重新构造待发送数据包之后,还包括:
27、根据所述待发送数据包对应的邻居项进行路径查找。
28、其中,所述基于所述请求数据包的流量特征判断所述请求数据包为应用代理流量之后,还包括:
29、基于所述请求数据包的路由信息在路由系统中创建路由项;
30、相应的,在所述应用层基于链路层数据包重新构造待发送数据包之后,还包括:
31、根据所述待发送数据包对应的路由项进行路径查找。
32、其中,所述接收所述客户端发送的请求数据包之前,还包括:
33、接收所述客户端发送的通信连接请求数据包;其中,所述通信连接请求数据包至少包括所述应用服务器的ip地址;
34、通过本地网桥的下游网口将所述通信连接请求数据包发送至所述本地网桥,以便所述本地网桥通过上游网口发送至所述应用服务器;
35、接收所述应用服务器回复的通信连接响应数据包;其中,所述通信连接响应数据包至少包括所述应用服务器的mac地址;
36、通过所述上游网口将所述通信连接响应数据包发送至所述本地网桥,以便所述本地网桥通过所述下游网口发送至所述客户端;
37、建立所述代理网关设备与所述客户端之间、所述代理网关设备与所述应用服务器之间的通信连接。
38、其中,所述接收所述客户端发送的通信连接请求数据包之后,还包括:
39、创建所述客户端的mac地址与所述下游网口之间的对应关系;
40、相应的,所述接收所述应用服务器回复的通信连接响应数据包之后,还包括:
41、创建所述应用服务器的mac地址与所述上游网口之间的对应关系;
42、相应的,所述通过反向代理将所述发送数据包发送至所述应用服务器,包括:
43、通过反向代理将所述发送数据包通过所述上游网口发送至所述应用服务器。
44、其中,所述基于所述请求数据包中的链路层信息和网络层信息创建第一映射关系,包括:
45、基于所述请求数据包中的链路层信息和网络层信息在共享内存中创建第一映射关系。
46、其中,所述基于所述请求数据包中的链路层信息和网络层信息在共享内存中创建第一映射关系,包括:
47、判断共享内存中是否存在所述请求数据包中的链路层信息和网络层信息之间的第一映射关系;
48、若否,则在所述共享内存中创建所述请求数据包中的链路层信息和网络层信息之间的第一映射关系,并创建所述第一映射关系的引用计数,并将所述引用计数设置为初始值;
49、若是,则增加所述第一映射关系的引用计数;
50、相应的,所述基于所述第一映射关系确定所述链路层数据包中的网络层信息对应的链路层信息之后,还包括:
51、减少所述第一映射关系的引用计数;
52、若所述引用计数减少为所述初始值,则销毁所述共享内存中的第一映射关系。
53、其中,所述构建链路层数据包之后,还包括:
54、在所述链路层数据包的预设位置插入所述第一映射关系;
55、相应的,所述基于所述第一映射关系确定所述链路层数据包中的网络层信息对应的链路层信息之前,还包括:
56、从所述链路层数据包的预设位置提取所述第一映射关系。
57、为实现上述目的,本技术提供了一种应用代理装置,应用于应用层代理网关设备,所述代理网关设备连接客户端,所述代理网关设备通过路由器或交换机连接应用服务器,所述装置包括:
58、判断模块,用于接收所述客户端发送的请求数据包,并基于所述请求数据包的流量特征判断所述请求数据包是否为应用代理流量;若是,则触发剥离模块的工作流程;
59、所述剥离模块,用于基于所述请求数据包中的链路层信息和网络层信息创建第一映射关系,剥离所述请求数据包中的所述链路层信息以构建链路层数据包;
60、构造模块,用于基于tproxy机制将所述链路层数据包传输至应用层进行流量操作,并在所述应用层基于链路层数据包重新构造待发送数据包;
61、补充模块,用于基于所述第一映射关系确定所述待发送数据包中的网络层信息对应的链路层信息,在所述待发送数据包中补充所述链路层信息以构造发送数据包;
62、第一发送模块,用于通过反向代理将所述发送数据包发送至所述应用服务器。
63、为实现上述目的,本技术提供了一种电子设备,包括:
64、存储器,用于存储计算机程序;
65、处理器,用于执行所述计算机程序时实现如上述应用代理方法的步骤。
66、为实现上述目的,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述应用代理方法的步骤。
67、通过以上方案可知,本技术提供的一种应用代理方法,应用于应用层代理网关设备,所述代理网关设备连接客户端,所述代理网关设备通过路由器或交换机连接应用服务器,该方法包括:接收所述客户端发送的请求数据包,并基于所述请求数据包的流量特征判断所述请求数据包是否为应用代理流量;若是,则基于所述请求数据包中的链路层信息和网络层信息创建第一映射关系,剥离所述请求数据包中的所述链路层信息以构建链路层数据包;基于tproxy机制将所述链路层数据包传输至应用层进行流量操作,并在所述应用层基于链路层数据包重新构造待发送数据包;基于所述第一映射关系确定所述待发送数据包中的网络层信息对应的链路层信息,在所述待发送数据包中补充所述链路层信息以构造发送数据包;将所述发送数据包发送至所述应用服务器。
68、本技术提供的应用代理方法,流量经过代理网关设备前后,链路层信息在流量进入网络协议栈网桥阶段被剥离丢失,并在反向代理输出经过网桥阶段被完整还原,其他网络层信息和传输层信息基于tproxy机制透明传输到应用层,应用层直接往网络协议栈输出,保持网络层信息和传输层信息没有丢失,在应用代理过程中流量具有完整透明性。代理网关设备以直插式网桥部署方式透明部署在应用流量的必经之处,整个代理网关设备对用户访问以及上下游网络拓扑都是透明的,在代理网关设备进行应用代理的过程中实现代理网关的透明部署。本技术还公开了一种应用代理装置及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。
69、应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本技术。