发明内容
本公开的目的是提供一种用于提供VPN服务的方法及装置、区块链网络及节点设备,以解决上述的技术问题。
为了实现上述目的,本公开的第一方面,提供一种用于提供虚拟专用网络VPN服务的区块链网络,包括多个节点,所述多个节点为区块链网络中的节点,所述多个节点包括服务节点和中继节点;所述区块链网络的智能合约中记录有所述多个节点的转发顺序信息;其中,每一所述节点用于,在接收到客户端的VPN连接请求时,根据所述转发顺序信息确定该节点是否存在后序节点,若该节点存在后序节点,则将所述VPN连接请求转发给后序节点;所述服务节点还用于,在接收到所述VPN连接请求时,对所述客户端提供VPN服务。
可选地,所述区块链网络的智能合约用于,在接收到所述客户端发送的VPN连接请求时,对所述多个节点进行排序,并将排序结果作为所述转发顺序信息写入到所述智能合约中。
可选地,所述智能合约中针对每一所述节点还记录有该节点的下一跳节点的接入信息,任一节点的下一跳节点的接入信息是通过该节点的公钥对该节点的下一跳节点的IP地址和/或端口进行加密得到的;任一所述节点在向下一跳节点转发所述VPN连接请求之前,通过自身的私钥对所述下一跳节点的接入信息进行解密;在得到解密后的接入信息后,根据该接入信息向所述下一跳节点转发所述VPN连接请求。
可选地,每一所述节点具体用于,根据所述转发顺序信息,确定该节点的上一跳节点,并通过所述上一跳节点的公钥对该节点的IP地址和/或端口进行加密,并写入至所述智能合约中。
可选地,所述VPN连接请求包括源地址信息以及目的地址信息;每一所述节点具体用于,在接收到VPN连接请求时,通过将所述VPN连接请求的源地址信息更换为该节点的地址信息,并将所述VPN连接请求的目的地址信息更换为该节点的下一跳节点的地址信息后进行发送。
可选地,所述服务节点还用于,在接收到所述VPN连接请求时,对所述客户端提供VPN服务,并通过将所述VPN连接请求的源地址信息更换为该节点的地址信息,并将所述VPN连接请求的目的地址信息更换为该节点的下一跳节点的地址信息后进行发送。
可选地,所述区块链网络还用于,在接收到所述客户端发送的VPN连接请求时,将所述VPN连接请求发送至所述转发顺序信息中的第一个节点。
本公开的第二方面,提供一种用于提供VPN服务的方法,所述方法应用于区块链网络中的节点,所述方法包括:接收客户端的VPN连接请求;根据所述区块链网络的智能合约中记录的多个节点的转发顺序信息,确定所述节点的后序节点,所述多个节点包括用于提供VPN服务的服务节点;将接收到的所述VPN连接请求转发给所述后序节点。
可选地,所述节点为提供VPN服务的服务节点,所述方法还包括,在接收到客户端的VPN连接请求后,为所述客户端提供VPN服务。
可选地,所述智能合约中针对每一所述节点还记录有该节点的下一跳节点的接入信息,任一节点的下一跳节点的接入信息是通过该节点的公钥对该节点的下一跳节点的IP地址和/或端口进行加密得到的;所述将接收到的所述VPN连接请求转发给所述后序节点,包括:所述节点在向下一跳节点转发所述VPN连接请求之前,通过自身的私钥对所述下一跳节点的接入信息进行解密;在得到解密后的接入信息后,根据该接入信息向所述下一跳节点转发所述VPN连接请求。
可选地,所述方法还包括,根据所述转发顺序信息,确定该节点的上一跳节点,并通过所述上一跳节点的公钥对该节点的IP地址和/或端口进行加密,并写入至所述智能合约中。
可选地,所述VPN连接请求包括源地址信息以及目的地址信息;所述将接收到的所述VPN连接请求转发给所述后序节点,包括:在接收到VPN连接请求时,通过将所述VPN连接请求的源地址信息更换为该节点的地址信息,并将所述VPN连接请求的目的地址信息更换为该节点的下一跳节点的地址信息后进行发送。
本公开的第三方面,提供一种用于提供VPN服务的装置,所述装置应用于区块链网络中的节点,所述节点包括服务节点和中继节点,所述装置包括:接收模块,用于接收客户端的VPN连接请求;确定模块,用于根据所述区块链网络的智能合约中记录的多个节点的转发顺序信息,确定所述节点的后序节点;转发模块,用于将接收到的所述VPN连接请求转发给所述后序节点。
可选地,当所述装置应用于所述服务节点时,所述装置还包括服务模块,用于对所述客户端提供VPN服务。
可选地,所述智能合约中针对每一所述节点还记录有该节点的下一跳节点的接入信息,任一节点的下一跳节点的接入信息是通过该节点的公钥对该节点的下一跳节点的IP地址和/或端口进行加密得到的;所述装置还包括解密模块,用于通过自身的私钥对所述下一跳节点的接入信息进行解密,所述转发模块用于在得到解密后的接入信息后,根据该接入信息向所述下一跳节点转发所述VPN连接请求。
可选地,所述装置还包括,加密模块,用于根据所述转发顺序信息,确定该节点的上一跳节点,并通过所述上一跳节点的公钥对该节点的IP地址和/或端口进行加密,并写入至所述智能合约中。
可选地,所述VPN连接请求包括源地址信息以及目的地址信息;所述转发模块,用于在接收到VPN连接请求时,通过将所述VPN连接请求的源地址信息更换为该节点的地址信息,并将所述VPN连接请求的目的地址信息更换为该节点的下一跳节点的地址信息后进行发送。
本公开第四方面,提供一种节点设备,所述节点设备被配置为如本公开第一方面中任一项所述的区块链网络中的中继节点。
本公开第五方面,提供一种节点设备,所述节点设备被配置为如本公开第一方面中任一项所述的区块链网络中的服务节点。
通过上述技术方案,当外部发起VPN连接请求时,连接请求会通过区块链网络中的多个节点进行转发,并由区块链网络中的服务节点提供VPN服务,这样,可以将VPN服务器(亦即服务节点)隐藏于区块链网络中,外部连接者难以得知真正的VPN服务器是区块链网络中的哪一个节点,从而难以对VPN服务器发起攻击,这样,可以在保证VPN服务器可以收到来自互联网中的任何位置的接入请求的基础上,有效地隐藏了VPN服务器的地址,从而可以保护VPN服务器的信息安全。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
首先对本公开的实施场景进行说明。本公开应用于为客户端提供VPN服务的场景下。如果外部用户想要连接内网,需要通过客户端向VPN服务器发送连接请求,在VPN服务器确认了客户端身份后为客户端提供VPN服务,使用户可以通过客户端访问内网中的资源。但是,由于内网与客户端之间需要有VPN服务器作为沟通的桥梁,VPN服务器的地址需要公开于互联网中,以使外部用户可以在任何地方通过互联网的任何接口访问到VPN服务器,这样的地址信息暴露为VPN服务器的信息安全带来了极大的隐患。
在本公开中,VPN服务器隐藏于区块链网络之中,外部用户并不直接访问VPN服务器所在的地址,而是由区块链网络中的节点将外部用户的VPN连接请求进行层层转发到达VPN服务器,进而可以在达到外部用户可以从任何位置通过互联网的任何接口访问VPN服务器的效果的同时,将VPN服务器的真正地址隐藏起来,以使其的信息安全得到保障。
图1是根据一示例性公开实施例示出的一种区块链网络的示意图。如图1所示,所述区块链网络包括多个节点,所述多个节点包括服务节点和中继节点。为了方便说明,在图1中共有1个服务节点和5个中继节点,并不作为对服务节点及中继节点的数量限定。
区块链网络的智能合约可视为是约束区块链网络在满足了某种条件时执行某项操作的规则。智能合约中记录有多个节点(包括了服务节点和中继节点)的转发顺序信息。在图1中,节点间的转发顺序为“中继节点1”至“中继节点3”至“服务节点”至“中继节点5”至“中继节点2”至“中继节点4”。该转发顺序信息可以是由管理员预设的不变顺序。区块链网络也可以在间隔一定时间后自动对节点进行重新随机排序,该间隔时间可以是一小时、一天、一周或一个月等。
在一种可能的实施方式中,该转发顺序信息是区块链网络的智能合约在区块链网络接收到客户端发送的VPN连接请求时对节点进行排序所生成的,也就是说,在每接到一次VPN连接请求时,区块链网络的智能合约都会对区块链网络中的节点进行一次随机排序,这样,使得转发顺序信息在每次接收到VPN连接请求时都会发生变化,更增加了区块链网络中的VPN服务器(即服务节点)的安全性。
VPN连接请求在区块链网络中根据转发顺序信息中的排序进行转发。区块链网络中的节点在接收到VPN连接请求时,可以根据转发顺序信息确定自己是否存在后序节点,如果存在,则将VPN连接请求转发至后序节点,如果不存在(即自身为链尾)则可以丢弃该VPN连接请求或不做处理。VPN连接请求在区块链网络中会经过所有的中继节点和服务节点。
为了进一步提升区块链网络中的服务节点的安全性,可以设定区块链网络中的节点只能接受其前序节点发送的数据。也就是说,每个节点的地址信息(IP地址和/或端口)都可以通过前一跳节点的公钥进行加密得到接入信息,并同步至智能合约中,这样,前一跳节点在转发前,可以对自己的下一跳节点的接入信息进行解密,并根据解密后的接入信息向下一跳节点进行转发。
在一种可能的实现方式中,可以在确定了转发顺序信息后,每一个节点可以确定自己的上一跳节点(如果存在)的公钥,并利用该公钥对自身的IP地址和/或端口进行加密,并写入到智能合约中。
在区块链网络接收到VPN连接请求后,将该VPN连接请求转发至转发顺序中的第一个节点,第一个节点将其转发至自己的下一跳节点,VPN连接请求在区块链中沿转发顺序依次转发经过所有的节点,直至链尾的最后的一个节点将其丢弃;VPN连接请求在途中经过服务节点时,服务节点会响应该VPN连接请求提供VPN连接服务,并将其进行转发。
在节点接收到VPN连接请求时,可以将接收到的VPN连接请求中的源地址信息替换为自身的地址信息,将目的地址信息替换为下一跳节点的地址信息,以实现对VPN连接请求的转发。
对服务节点而言,除了将VPN连接请求中的源地址信息和目的地址信息进行替换以外,还需要对VPN连接请求进行响应,提供响应的VPN服务。
图2是根据一示例性公开实施例示出的一种区块链网络提供VPN服务的过程的示意图。所述区块链网络提供VPN服务的过程包括以下的步骤:
S21、在区块链网络接收到客户端的VPN连接请求时,智能合约对区块链网络中的节点进行排序并将排序结果记录为转发顺序信息。S22、区块链网络中的所有节点根据排序结果获取上一跳节点(如果有)的公钥将自己的地址信息进行加密得到接入信息,并将加密后的该接入信息上传至智能合约或发送至其他节点。S23、区块链网络将VPN连接请求发送至转发顺序信息中的第一个节点。S24、第一个节点将VPN连接请求中的源地址信息替换为自身的地址信息,将目的地址信息替换为下一跳的地址信息,并将其进行转发。S25、区块链网络中的中继节点与第一个节点相同地对VPN连接请求中的地址信息进行替换并依次转发,服务节点既要转发VPN连接请求还需要响应VPN连接请求提供VPN服务,直至VPN连接请求被转发至链尾的节点(转发顺序信息中的最后一个节点)。S26、链尾的节点丢弃该VPN连接请求。值得说明的是,当服务节点为链尾的节点时,服务节点直接基于该VPN连接请求提供VPN服务,可以不对该VPN连接请求做丢弃处理。
通过上述技术方案,当外部发起VPN连接请求时,连接请求会通过区块链网络中的多个节点进行转发,并由区块链网络中的服务节点提供VPN服务,这样,可以将VPN服务器(亦即服务节点)隐藏于区块链网络中,外部连接者难以得知真正的VPN服务器是区块链网络中的哪一个节点,从而难以对VPN服务器发起攻击,这样,可以在保证VPN服务器可以收到来自互联网中的任何位置的接入请求的基础上,有效地隐藏了VPN服务器的地址,从而可以保护VPN服务器的信息安全。
图3是根据一示例性公开实施例示出的一种用于提供VPN服务的方法的流程图。所述方法应用于区块链网络中的节点,所述节点可以是服务节点,也可以是中继节点,所述方法包括:接收客户端的VPN连接请求;根据所述区块链网络的智能合约中记录的多个节点的转发顺序信息,确定所述节点的后序节点,所述多个节点包括用于提供VPN服务的服务节点;将接收到的所述VPN连接请求转发给所述后序节点。当所述节点为服务节点时,所述方法还包括:在接收到客户端的VPN连接请求后,为所述客户端提供VPN服务。如图3所示,所述方法包括以下步骤:
S31、接收客户端的VPN连接请求。
对于转发顺序信息中的第一个节点而言,该VPN连接请求是由区块链网络发送的;对其他节点而言,该VPN连接请求是由前序节点发送的。
S32、根据所述区块链网络的智能合约中记录的多个节点的转发顺序信息,确定所述节点是否存在后序节点。
若存在后序节点,则执行步骤S33;若不存在后序节点,则丢弃该VPN连接请求。
该转发顺序信息可以是由管理员预设的不变顺序。区块链网络也可以在间隔一定时间后自动对节点进行重新随机排序,该间隔时间可以是一小时、一天、一周或一个月等。
在一种可能的实施方式中,该转发顺序信息是区块链网络的智能合约在区块链网络接收到客户端发送的VPN连接请求时对节点进行排序所生成的,也就是说,在每接到一次VPN连接请求时,区块链网络的智能合约都会对区块链网络中的节点进行一次随机排序,这样,使得转发顺序信息在每次接收到VPN连接请求时都会发生变化,更增加了区块链网络中的VPN服务器(即服务节点)的安全性。
区块链网络中的节点在接收到VPN连接请求时,可以根据转发顺序信息确定自己是否存在后序节点,如果存在,则将VPN连接请求转发至后序节点,如果不存在(即自身为链尾)则可以丢弃该VPN连接请求或不做处理。VPN连接请求在区块链网络中会经过所有的中继节点和服务节点。
S33、判断该节点为中继节点还是服务节点。
若该节点为中继节点,执行步骤S34,若该节点为服务节点,执行步骤S35。
S34、将接收到的所述VPN连接请求转发给所述后序节点。
S35、对所述客户端提供VPN服务,并将接收到的所述VPN连接请求转发给所述后序节点。
当服务节点接收到VPN连接请求时,服务节点可以对VPN连接请求中的验证信息进行验证,在验证通过后,服务节点可以为客户端提供VPN服务(如通过区块链网络向客户端反馈信息等)。服务节点在接收到VPN连接请求后,不仅要向客户端提供VPN服务,还需要将VPN连接请求转发至后序节点(如果存在后序节点),以使VPN连接请求会通过所有的中继节点的转发,使他人难以根据转发记录的中断位置来定位服务节点的具体地址,从而更能保证服务节点的信息安全性。
可选地,所述智能合约中针对每一所述节点还记录有该节点的下一跳节点的接入信息,任一节点的下一跳节点的接入信息是通过该节点的公钥对该节点的下一跳节点的IP地址和/或端口进行加密得到的;所述将接收到的所述VPN连接请求转发给所述后序节点,包括:所述节点在向下一跳节点转发所述VPN连接请求之前,通过自身的私钥对所述下一跳节点的接入信息进行解密;在得到解密后的接入信息后,根据该接入信息向所述下一跳节点转发所述VPN连接请求。
可选地,所述方法还包括,根据所述转发顺序信息,确定该节点的上一跳节点,并通过所述上一跳节点的公钥对该节点的IP地址和/或端口进行加密,并写入至所述智能合约中。
可选地,所述VPN连接请求包括源地址信息以及目的地址信息;所述将接收到的所述VPN连接请求转发给所述后序节点,包括:在接收到VPN连接请求时,通过将所述VPN连接请求的源地址信息更换为该节点的地址信息,并将所述VPN连接请求的目的地址信息更换为该节点的下一跳节点的地址信息后进行发送。
关于上述实施例中的方法,其中各个步骤的具体实施方式已经在有关该区块链网络的实施例中进行了详细描述,此处将不做详细阐述说明。
通过上述技术方案,当外部发起VPN连接请求时,连接请求会通过区块链网络中的多个节点进行转发,并由区块链网络中的服务节点提供VPN服务,这样,可以将VPN服务器(亦即服务节点)隐藏于区块链网络中,外部连接者难以得知真正的VPN服务器是区块链网络中的哪一个节点,从而难以对VPN服务器发起攻击,这样,可以在保证VPN服务器可以收到来自互联网中的任何位置的接入请求的基础上,有效地隐藏了VPN服务器的地址,从而可以保护VPN服务器的信息安全。
图4是根据一示例性公开实施例示出的一种用于提供VPN服务的装置的流程图。所述装置400应用于区块链网络中的节点,所述节点可以是服务节点,也可以是中继节点,所述装置400包括:
接收模块410,用于接收客户端的VPN连接请求。
确定模块420,用于根据所述区块链网络的智能合约中记录的多个节点的转发顺序信息,确定所述节点的后序节点。
转发模块430,用于将接收到的所述VPN连接请求转发给所述后序节点。
当所述装置400应用于所述服务节点时,所述装置400还包括服务模块,用于对所述客户端提供VPN服务。
可选地,所述智能合约中针对每一所述节点还记录有该节点的下一跳节点的接入信息,任一节点的下一跳节点的接入信息是通过该节点的公钥对该节点的下一跳节点的IP地址和/或端口进行加密得到的;所述装置还包括解密模块,用于通过自身的私钥对所述下一跳节点的接入信息进行解密,所述转发模块用于在得到解密后的接入信息后,根据该接入信息向所述下一跳节点转发所述VPN连接请求。
可选地,所述装置还包括,加密模块,用于根据所述转发顺序信息,确定该节点的上一跳节点,并通过所述上一跳节点的公钥对该节点的IP地址和/或端口进行加密,并写入至所述智能合约中。
可选地,所述VPN连接请求包括源地址信息以及目的地址信息;所述转发模块,用于在接收到VPN连接请求时,通过将所述VPN连接请求的源地址信息更换为该节点的地址信息,并将所述VPN连接请求的目的地址信息更换为该节点的下一跳节点的地址信息后进行发送。
关于上述实施例中的装置,其中各个模块的具体实施方式已经在有关该区块链网络的实施例中进行了详细描述,此处将不做详细阐述说明。
通过上述技术方案,当外部发起VPN连接请求时,连接请求会通过区块链网络中的多个节点进行转发,并由区块链网络中的服务节点提供VPN服务,这样,可以将VPN服务器(亦即服务节点)隐藏于区块链网络中,外部连接者难以得知真正的VPN服务器是区块链网络中的哪一个节点,从而难以对VPN服务器发起攻击,这样,可以在保证VPN服务器可以收到来自互联网中的任何位置的接入请求的基础上,有效地隐藏了VPN服务器的地址,从而可以保护VPN服务器的信息安全。
图5是根据一示例性公开实施例示出的一种节点设备的示意图。该节点设备可以被提供为上述区块链网络中的中继节点或服务节点。参照图5,电子设备500包括处理器522,其数量可以为一个或多个,以及存储器532,用于存储可由处理器522执行的计算机程序。存储器532中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器522可以被配置为执行该计算机程序,以执行上述的用于提供VPN服务的方法。
另外,电子设备500还可以包括电源组件526和通信组件550,该电源组件526可以被配置为执行电子设备500的电源管理,该通信组件550可以被配置为实现电子设备500的通信,例如,有线或无线通信。此外,该电子设备500还可以包括输入/输出(I/O)接口558。电子设备500可以操作基于存储在存储器532的操作系统,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的用于提供VPN服务的方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器532,上述程序指令可由电子设备500的处理器522执行以完成上述的用于提供VPN服务的方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的用于提供VPN服务的方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。