一种分布式代理网络制造技术

技术编号:23609493 阅读:32 留言:0更新日期:2020-03-28 09:13
本发明专利技术公开了一种分布式代理网络,包括多个节点,每个节点的所有客户端同时扮演着服务器和中继的角色,网络中各个节点是对等的;当一个节点中的客户端需要访问目标节点中的内网服务时,所述节点需要通过libP2P及所在网络,发现较近的相临节点,然后通过相邻节点的引导发现其他节点,在所述节点与所述目标节点需要NAT穿透才能直接连接时,所述的其他节点和/或相邻节点可以引导所述节点与所述目标节点进行打洞;当所述节点与所述目标节点处于无法打洞的对称NAT中时,采用中间节点充当中继进行数据流转发。本发明专利技术利用现有公共资源建立P2P连接,通过标准代理协议将外网客户端请求代理到内网服务器中,使得访问内网服务变得简单。

A distributed agent network

【技术实现步骤摘要】
一种分布式代理网络
本专利技术涉及通信
,具体是指一种分布式代理网络。
技术介绍
随着接入Internet的计算机数量的不断猛增,IP地址资源也就愈加显得捉襟见肘。为了解决IP地址匮乏的问题,就产生了NAT技术。NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。同时,也对P2P这种端到端连接的应用造成了困扰。在不同局域网中的主机无法直接互联,虽然可以通过设置网关的端口映射和虚拟主机来向外网暴露一部分内网的服务,但并不是任何人都有对他所在局域网的网关配置的权限,并且向公网直接暴露内网的主机也存在一定的安全隐患。为了在不需要配置网关的情况下也能与内网的主机相连,产生了内网穿透技术。内网穿透主要有反向代理和NAT打洞两种方式。反向代理通过内网服务器事先连接外网服务器再通过外网服务器将其他主机的请求转发给内网服务器实现内网穿透。NAT打洞则需要外网服务器协调两端进行打洞。但是无论是反向代理还是NAT打洞都必须事先有一台外网服务器。正因为如此想在两个不同内网中的主机互联变得非常繁琐。特别是当你没有权限配置网关时,你还需要经过一台第三方的服务器才能建立与内网的连接,无形中又增加了安全隐患。
技术实现思路
本专利技术为解决上述技术问题,提供了一种一种分布式代理网络,其能够在不需要特定第三方服务器的情况下,利用现有公共资源建立P2P连接。为了实现上述目的,本专利技术采取的技术方案如下:一种分布式代理网络,包括多个节点,每个节点的所有客户端同时扮演着服务器和中继的角色,网络中各个节点是对等的;当一个节点中的客户端需要访问目标节点中的内网服务时,所述节点需要通过libP2P及所在网络,发现较近的相临节点,然后通过相邻节点的引导发现其他节点,在所述节点与所述目标节点需要NAT穿透才能直接连接时,所述的其他节点和/或相邻节点可以引导所述节点与所述目标节点进行打洞;当所述节点与所述目标节点处于无法打洞的对称NAT中时,采用中间节点充当中继进行数据流转发。进一步的,数据流转发时,节点与节点之间传递的数据流需要经过了加密,并通过公钥进行身份验证;各个节点通过公钥的hash值peerId作为每个节点的标识,通过peerId指定代理目标网络。更进一步的,peerId是libP2P的一部分,且全网唯一,代理节点使用peerId来明确指定代理的目标节点。更进一步的,当节点与节点之间传递的数据流经过加密,并通过公钥进行身份验证时,身份验证和数据数据加密通道的建立过程,如下:在任何2个节点连接时,2个节点交换公钥,所述节点是能知道对方的peerId的,peerId是通过节点的公钥hash值生成的,2个节点交换公钥后通过再次计算公钥的hash就可以初步确定peerId是否为伪造;在验证了peerId和公钥的关系后,还需要验证对方是否用于公钥对应的私钥,所述节点会随机生成一段数据,通过对方的公钥加密并发送给对方要求对方解密后再送回;用公钥加密的数据只能通过相应的私钥解密,所述节点通过对比解密后的数据是否正确来判断对方是否持有公钥对应的私钥,完成对公钥的验证;公钥被认证后,也就能确定节点的身份;如果两个节点的通讯需要经过中继节点,则只需要校验公钥的hash和peerId是否相同就可以判断公钥是否是伪造的;节点的公钥验证通过后,节点之间可以建立连接,通过对方公钥加密用于对称加密的AES密钥,用于后续数据流的加密。进一步的,所述节点发现相邻的节点是通过random-walk或bootstrap-list协议进行的。进一步的,引导所述节点与所述目标节点进行打洞的所述其他节点是基于libP2P框架的任何节点。进一步的,所述节点与所述目标节点进行打洞的具体过程为:所述节点首先通过random-walk或bootstrap-list协议发现相邻的libP2P节点,所述相邻的libP2P节点作为引导节点,通过所述相邻的libP2P节点的引导,代理网络节点之间能够知道对方的公网IP以及对方UDP报文经过NAT转换后的端口号,并由所述引导节点协调两端向对方公网地址发送目的端口为对方NAT转换后端口号的UDP报文,然后所述节点向所述引导节点反馈结果,即可。与现有技术相比,本专利技术所取得的有益效果如下:本专利技术通过设置基于libP2P框架的多个对等的节点,将每个节点的所有客户端同时扮演着服务器和中继的角色,在不需要特定第三方服务器的情况下利用现有公共资源建立P2P连接,在P2P连接的基础上通过标准代理协议将外网客户端请求代理到内网服务器中,使得访问内网中的服务变得简单。并且拥有身份鉴权机制,用户拥有完全的控制权限。附图说明图1为本专利技术一个实施例中分布式代理网络的网络拓扑图;图2为本专利技术另一个实施例中代理网络节点间打洞的过程图;图3为本专利技术另一个实施例中节点间身份验证和加密通道的建立过程图。具体实施方式如图1~3所示的一种分布式代理网络,包括多个节点,每个节点的所有客户端同时扮演着服务器和中继的角色,网络中各个节点是对等的;当一个节点中的客户端需要访问目标节点中的内网服务时,所述节点需要通过libP2P及其已经存在的网络,发现较近的相临节点,然后通过相邻节点的引导发现其他节点,在所述节点与所述目标节点需要NAT穿透才能直接连接时,所述的其他节点和/或相邻节点可以引导所述节点与所述目标节点进行打洞;当所述节点与所述目标节点处于无法打洞的对称NAT中时,采用中间节点充当中继进行数据流转发。进一步的,数据流转发时,节点与节点之间传递的数据流需要经过了加密,并通过公钥进行身份验证;各个节点通过公钥的hash值peerId作为每个节点的标识,通过peerId指定代理目标网络。更进一步的,peerId是libP2P的一部分,且全网唯一,代理节点使用peerId来明确指定代理的目标节点。更进一步的,当节点与节点之间传递的数据流经过加密,并通过公钥进行身份验证时,身份验证和数据数据加密通道的建立过程,如下:在任何2个节点连接时,2个节点交换公钥,所述节点是能知道对方的peerId的,peerId是通过节点的公钥hash值生成的,2个节点交换公钥后通过再次计算公钥的hash就可以初步确定peerId是否为伪造;在验证了peerId和公钥的关系后,还需要验证对方是否用于公钥对应的私钥,所述节点会随机生成一段数据,通过对方的公钥加密并发送给对方要求对方解密后再送回;用公钥加密的数据只能通过相应的私钥解密,所述节点通过对比解密后的数据是否正确来判断对方是否持有公钥对应的私钥,完成对公钥的验证;公钥被认证后,也就能确定节点的身份;如果两个节点的通讯需要经过中继节点,则只需要校验公钥的hash和peerId是否相同就可以判断公钥是否是伪造的;节点的公钥验证通过后,节点之间可以建立连接,通过对方公钥加密用于对称加密的AES密钥,用于后续数据流的加密。进一步的本文档来自技高网...

【技术保护点】
1.一种分布式代理网络,其特征在于,包括多个节点,每个节点的所有客户端同时扮演着服务器和中继的角色,网络中各个节点是对等的;/n当一个节点中的客户端需要访问目标节点中的内网服务时,所述节点需要通过libP2P及所在网络,发现较近的相临节点,然后通过相邻节点的引导发现其他节点,在所述节点与所述目标节点需要NAT穿透才能直接连接时,所述的其他节点和/或相邻节点可以引导所述节点与所述目标节点进行打洞;当所述节点与所述目标节点处于无法打洞的对称NAT中时,采用中间节点充当中继进行数据流转发。/n

【技术特征摘要】
1.一种分布式代理网络,其特征在于,包括多个节点,每个节点的所有客户端同时扮演着服务器和中继的角色,网络中各个节点是对等的;
当一个节点中的客户端需要访问目标节点中的内网服务时,所述节点需要通过libP2P及所在网络,发现较近的相临节点,然后通过相邻节点的引导发现其他节点,在所述节点与所述目标节点需要NAT穿透才能直接连接时,所述的其他节点和/或相邻节点可以引导所述节点与所述目标节点进行打洞;当所述节点与所述目标节点处于无法打洞的对称NAT中时,采用中间节点充当中继进行数据流转发。


2.根据权利要求1所述的一种分布式代理网络,其特征在于,数据流转发时,节点与节点之间传递的数据流需要经过了加密,并通过公钥进行身份验证;各个节点通过公钥的hash值peerId作为每个节点的标识,通过peerId指定代理目标网络。


3.根据权利要求2所述的一种分布式代理网络,其特征在于,peerId是libP2P的一部分,且全网唯一,代理节点使用...

【专利技术属性】
技术研发人员:朱翔
申请(专利权)人:太仓市同维电子有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1