首页 / 专利库 / 电信 / 跟踪 / 一种网络地址转换方法

一种网络地址转换方法

阅读:708发布:2023-06-09

专利汇可以提供一种网络地址转换方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种网络地址转换方法,包括接收 请求 数据包并根据请求数据包判断连接 跟踪 表中是否存在对应的双向链表 节点 ;若连接跟踪表中存在双向链表节点,则根据双向链表节点上发送方向的转换关系进行IP地址与端口转换;若连接跟踪表中不存在双向链表节点,则根据请求数据包创建双向链表节点,以在双向链表创建完成后根据双向链表节点上发送方向的转换关系进行IP地址与端口转换。该网络地址转换方法能够有效实现网络地址的动态转换,为Docker容器的网络需求提供全面的支持。本发明还公开了一种网络地址转换装置、设备以及计算机可读存储介质,均具有上述技术效果。,下面是一种网络地址转换方法专利的具体信息内容。

1.一种网络地址转换方法,其特征在于,包括:
接收请求数据包;
根据所述请求数据包判断连接跟踪表中是否存在对应的双向链表节点
若所述连接跟踪表中存在所述双向链表节点,则根据所述双向链表节点上发送方向的转换关系进行IP地址与端口转换;
若所述连接跟踪表中不存在所述双向链表节点,则根据所述请求数据包创建所述双向链表节点,以在所述双向链表创建完成后根据所述双向链表节点上所述发送方向的转换关系进行IP地址与端口转换。
2.根据权利要求1所述的网络地址转换方法,其特征在于,所述根据所述请求数据包判断连接跟踪表中是否存在对应的双向链表节点,包括:
根据所述请求数据包携带的成员信息进行哈希计算得到哈希值;
查找所述连接跟踪表中是否存在所述哈希值;
若所述连接跟踪表中存在所述哈希值,则所述连接跟踪表中存在对应的所述双向链表节点。
3.根据权利要求1所述的网络地址转换方法,其特征在于,所述根据所述请求数据包创建所述双向链表节点,包括:
将所述请求数据包中从Docker容器到目标地址的原始四成员以及经过NAT转换后的转换四成员存储于发送方向的链表节点的转换关系中;
将所述原始四成员与所述转换四成员对调后存储于应答方向的链表节点的转换关系中。
4.一种网络地址转换装置,其特征在于,包括:
判断模,用于接收请求数据包并根据所述请求数据包判断连接跟踪表中是否存在对应的双向链表节点;
转换模块,用于若所述连接跟踪表中存在所述双向链表节点,则根据所述双向链表节点上发送方向的转换关系进行IP地址与端口转换;
创建模块,用于若所述连接跟踪表中不存在所述双向链表节点,则根据所述请求数据包创建所述双向链表节点,以在所述双向链表创建完成后根据所述双向链表节点上所述发送方向的转换关系进行IP地址与端口转换。
5.根据权利要求4所述的网络地址转换装置,其特征在于,所述判断模块包括:
计算单元,用于根据所述请求数据包携带的成员信息进行哈希计算得到哈希值;
查找单元,用于查找所述连接跟踪表中是否存在所述哈希值;若所述连接跟踪表中存在所述哈希值,则所述连接跟踪表中存在对应的所述双向链表节点。
6.根据权利要求5所述的网络地址转换装置,其特征在于,所述创建模块包括:
第一创建单元,用于将所述请求数据包中从Docker容器到目标地址的原始四成员以及经过NAT转换后的转换四成员存储于发送方向的链表节点的转换关系中;
第二创建单元,用于将所述原始四成员与所述转换四成员对调后存储于应答方向的链表节点的转换关系中。
7.一种网络地址转换设备,其特征在于,包括:
存储器,用于存储计算机程序
处理器,用于执行所述计算机程序时实现如权利要求1至3任一项所述的网络地址转换方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3任一项所述的网络地址转换方法的步骤。

说明书全文

一种网络地址转换方法

技术领域

[0001] 本发明涉及计算机技术领域,特别涉及一种网络地址转换方法;还涉及一种网络地址转换装置、设备以及计算机可读存储介质。

背景技术

[0002] 当在宿主机上创建一个Docker容器时,Docker Daemon即守护进程会默认从一个私有网段中随机选取一个私有IP地址分配给此Docker容器。Docker容器若使用该私有IP地址跟外界通信,首先需经过NAT转换。NAT转换是一种将私有IP地址与公有IP地址相互转换的技术,以实现私有网络访问公共网络的功能。虽然,NAT转换有效节省了IP地址资源,加强了网络规划的灵活性,使内部主机对外部网络透明,但是,当Docker容器中运行需要动态改变IP地址与端口以降低被入侵检测系统发现的概率的应用时,如运行反识别爬虫系统时,NAT转换却无法对其提供支持,无法满足其动态改变IP地址的需求。
[0003] 有鉴于此,如何提供一种网络地址转换方案,实现网络地址的动态转换,为Docker容器的网络需求提供全面的支持是本领域技术人员亟待解决的技术问题。

发明内容

[0004] 本发明的目的是提供一种网络地址转换方法,能够实现网络地址的动态转换,为Docker容器的网络需求提供全面的支持;本发明的另一目的是提供一种网络地址转换装置、设备以及计算机可读存储介质,均具有上述技术效果。
[0005] 为解决上述技术问题,本发明提供了一种网络地址转换方法,包括:
[0006] 接收请求数据包并根据所述请求数据包判断连接跟踪表中是否存在对应的双向链表节点
[0007] 若所述连接跟踪表中存在所述双向链表节点,则根据所述双向链表节点上发送方向的转换关系进行IP地址与端口转换;
[0008] 若所述连接跟踪表中不存在所述双向链表节点,则根据所述请求数据包创建所述双向链表节点,以在所述双向链表创建完成后根据所述双向链表节点上所述发送方向的转换关系进行IP地址与端口转换。
[0009] 优选的,所述根据所述请求数据包判断连接跟踪表中是否存在对应的双向链表节点,包括:
[0010] 根据所述请求数据包携带的成员信息进行哈希计算得到哈希值;
[0011] 查找所述连接跟踪表中是否存在所述哈希值;
[0012] 若所述连接跟踪表中存在所述哈希值,则所述连接跟踪表中存在对应的所述双向链表节点。
[0013] 优选的,所述根据所述请求数据包创建所述双向链表节点,包括:
[0014] 将所述请求数据包中从Docker容器到目标地址的原始四成员以及经过NAT转换后的转换四成员存储于发送方向的链表节点的转换关系中;
[0015] 将所述原始四成员与所述转换四成员对调后存储于应答方向的链表节点的转换关系中。
[0016] 为解决上述技术问题,本发明还提供了一种网络地址转换装置,包括:
[0017] 判断模,用于接收请求数据包并根据所述请求数据包判断连接跟踪表中是否存在对应的双向链表节点;
[0018] 转换模块,用于若所述连接跟踪表中存在所述双向链表节点,则根据所述双向链表节点上发送方向的转换关系进行IP地址与端口转换;
[0019] 创建模块,用于若所述连接跟踪表中不存在所述双向链表节点,则根据所述请求数据包创建所述双向链表节点,以在所述双向链表创建完成后根据所述双向链表节点上所述发送方向的转换关系进行IP地址与端口转换。
[0020] 优选的,所述判断模块包括:
[0021] 计算单元,用于根据所述请求数据包携带的成员信息进行哈希计算得到哈希值;
[0022] 查找单元,用于查找所述连接跟踪表中是否存在所述哈希值;若所述连接跟踪表中存在所述哈希值,则所述连接跟踪表中存在对应的所述双向链表节点。
[0023] 优选的,所述创建模块包括:
[0024] 第一创建单元,用于将所述请求数据包中从Docker容器到目标地址的原始四成员以及经过NAT转换后的转换四成员存储于发送方向的链表节点的转换关系中;
[0025] 第二创建单元,用于将所述原始四成员与所述转换四成员对调后存储于应答方向的链表节点的转换关系中。
[0026] 为解决上述技术问题,本发明还提供了一种网络地址转换设备,包括:
[0027] 存储器,用于存储计算机程序
[0028] 处理器,用于执行所述计算机程序时实现如上述任一项所述的网络地址转换方法的步骤。
[0029] 为解决上述技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的网络地址转换方法的步骤。
[0030] 本发明所提供的网络地址转换方法,包括:接收请求数据包并根据所述请求数据包判断连接跟踪表中是否存在对应的双向链表节点;若所述连接跟踪表中存在所述双向链表节点,则根据所述双向链表节点上发送方向的转换关系进行IP地址与端口转换;若所述连接跟踪表中不存在所述双向链表节点,则根据所述请求数据包创建所述双向链表节点,以在所述双向链表创建完成后根据所述双向链表节点上所述发送方向的转换关系进行IP地址与端口转换。
[0031] 可见,本发明所提供的网络地址转换方法,当接收到请求数据包时首先根据请求数据包判断连接跟踪表中是否存在对应的双向链表节点,若存在则直接根据所述双向链表节点上发送方向的转换关系进行IP地址与端口转换;若不存在,则进行双向链表节点创建,以在双向链表节点创建完成后进行相关的转换操作;从而,对于需要动态进行网络地址转换的应用,当其需要改变IP地址与端口时,该网络地址转换方法可以为其动态的配置转换关系,进而根据此转换关系进行IP地址与端口的转换,为隐藏型应用提供动态NAT功能,避免对外暴露相同的IP地址,为Docker容器提供更加灵活的网络通信方式。
[0032] 本发明所提供的网络地址转换装置、设备以及计算机可读存储介质,均具有上述技术效果。附图说明
[0033] 为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0034] 图1为本发明实施例所提供的一种网络地址转换方法的流程示意图;
[0035] 图2为本发明实施例所提供的一种网络地址转换装置的示意图;
[0036] 图3为本发明实施例所提供的一种网络地址转换设备的示意图。

具体实施方式

[0037] 本发明的核心是提供一种网络地址转换方法,能够实现网络地址的动态转换,为Docker容器的网络需求提供全面支持;本发明的另一核心是提供一种网络地址转换装置、设备以及计算机可读存储介质,均具有上述技术效果。
[0038] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0039] 经过NAT转换处理后,Docker容器可实现使用私有IP地址与外部网络通信的目的。然而,目前Docker容器的网络地址转换方式为NAPT,即将不同内部主机映射到同一个外部IP地址上,并通过与此外部IP地址的不同端口进行映射而区分不同的内部主机。此方式无法支持需要动态改变IP地址与端口的隐藏型应用。故为满足隐藏型应用的网络地址动态转换需求,本发明提供了一种网络地址转换方法。
[0040] 请参考图1,图1为本发明实施例所提供的一种网络地址转换方法的流程示意图;参考图1,该网络地址转换方法包括:
[0041] S100:接收请求数据包;
[0042] S200:根据请求数据包判断连接跟踪表中是否存在对应的双向链表节点;
[0043] 具体的,Netfilter框架数据处理流程的关键位置定义有处理函数,且用户可通过自定义回调函数并将回调函数注册到一个或多个处理函数的方式实现当数据包经过对应处理函数时调用其中的回调函数,使其参与到数据包的处理过程。故为实现网络地址动态转换,本实施例在Netfilter的PREROUTING链中注册回调函数,并为此回调函数设置优先级。具体可将此回调函数的优先级设置为最高级,以获取数据包的最高处理权,从而当请求数据包到达此PREROUTING链时,即接收请求数据包时,调取注册于此PREROUTING链中的回调函数,进而通过此回调函数进行相应的网络地址动态转换处理。当然,对于上述回调函数的优先级的设置本发明不做唯一限定,可以根据实际应用需要进行差异性设置。
[0044] 当接收请求数据包后首先根据此请求数据包判断连接跟踪表中是否存在对应的双向链表节点,从而进一步根据判断结果执行对应的后续操作。其中,连接跟踪表即为组织有数据流的标识信息的哈希表,是以发送方与接收方的两对IP地址与端口组成的四成员进行哈希计算,并根据计算得到的哈希值进行排列的双向列表结构。其中,上述标识信息包括地址信息、端口信息、协议类型、连接状态、时间戳等。连接跟踪表中每一个链表节点均为一个数据结构,且数据结构的成员包括:双向链表指针、存在时间以及转换关系;其中,双向链表指针用于组织双向链表;存在时间用于记录双向链表节点的生存时间;转换关系用于记录NAT转换的两对IP地址与端口组成的四成员关系,其数据结构定义的成员包括源IP地址、源端口、目标IP地址以及目标端口。双向链表节点的转换关系设置有两组,分别记录原始四成员与经过NAT转换后的四成员。
[0045] 在一种具体的实施方式中,上述根据请求数据包判断连接跟踪表中是否存在对应的双向链表节点,包括:根据请求数据包携带的成员信息进行哈希计算得到哈希值;查找连接跟踪表中是否存在此哈希值,若连接跟踪表中存在与此哈希值,则连接跟踪表中存在对应的双向链表节点。
[0046] 具体的,本实施例中,判断连接跟踪表中是否存在对应的双向链表节点的方式具体为:当请求数据包到达上述回调函数时,根据该请求数据包所携带的成员信息进行哈希计算得到对应的哈希值,进而在连接跟踪表中查找是否存在此哈希值,若连接跟踪表中存在此哈希值,则表明连接跟踪表中存在此请求数据包对应的双向链表节点。相反,若连接跟踪表中不存在此哈希值,则表明连接跟踪表中不存在此请求数据包所对应的双向链表节点。
[0047] S300:若连接跟踪表中存在双向链表节点,则根据双向链表节点上发送方向的转换关系进行IP地址与端口转换;
[0048] 具体的,在判断连接跟踪表中存在当前请求数据包对应的双向链表节点的基础上,本步骤旨在进行IP地址与端口转换,以使Docker容器发出的请求数据包在按照双向链表节点中发送方向的转换关系进行IP地质与端口转换后从宿主机网卡发送至外部网络的目标地址。进而,外部网络的目标地址回传的响应数据包根据双向链表节点中接收方向的转换关系,从宿主机传网卡传回Docker容器,从而实现Docker容器的网络通信。
[0049] S400:若连接跟踪表中不存在双向链表节点,则根据请求数据包创建双向链表节点,以在双向链表创建完成后根据双向链表节点上发送方向的转换关系进行IP地址与端口转换。
[0050] 具体的,本步骤旨在实现转换关系的动态配置,即当连接跟踪表中不存在当前请求数据包所对应的双向链表节点时,创建此双向链表节点,以在双向链表创建完成后根据此双向链表节点中发送方向的转换关系进行IP地址与端口转换。
[0051] 在一种具体的实施方式中,上述根据请求数据包创建双向链表节点包括:将请求数据包中从Docker容器到目标地址的原始四成员以及经过NAT转换后的转换四成员存储于发送方向的链表节点的转换关系中;将原始四成员与转换四成员对调后存储于应答方向的链表节点的转换关系中。
[0052] 具体的,首先创建第一双向链表节点,将请求数据包中携带的从Docker容器到外部网络的目标地址的原始四成员以及经过NAT转换后的转换四成员分别存储于此第一双向链表节点的两组转换关系中,完成发送方向的链表节点的转换关系的配置。进一步,创建第二双向链表节点,并将第一双向链表节点中的原始四成员与转换四成员对调后作为第二双向链表节点的转换关系中的成员,完成应答方向的链表节点的转换关系的配置。即将第一双向链表节点中的原始四成员作为第二双向链表节点中的转换四成员,将第一双向链表节点中的转换四成员作为第二双向链表节点中的原始四成员。进一步,即可利用此第一双向链表节点与第二双向链表节点对整条数据流进行连接跟踪。使Docker容器发出的请求数据包可在按照双向链表节点中发送方向的转换关系进行IP地质与端口转换后从宿主机网卡发送至外部网络的目标地址。以及外部网络的目标地址回传的响应数据包可根据双向链表节点中接收方向的转换关系,从宿主机传网卡传回Docker容器,实现Docker容器的网络通信。
[0053] 综上所述,本发明所提供的网络地址转换方法,当接收到请求数据包时首先根据请求数据包判断连接跟踪表中是否存在对应的双向链表节点,若存在则直接根据所述双向链表节点上发送方向的转换关系进行IP地址与端口转换;若不存在,则进行双向链表节点创建,以在双向链表节点创建完成后进行相关的转换操作;从而,对于需要动态进行网络地址转换的应用,当其需要改变IP地址与端口时,该网络地址转换方法可以为其动态的配置转换关系,进而根据此转换关系进行IP地址与端口的转换,为隐藏型应用提供动态NAT功能,避免对外暴露相同的IP地址,为Docker容器提供更加灵活的网络通信方式。
[0054] 本发明还提供了一种网络地址转换装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图2,图2为本发明实施例所提供的一种网络地址转换装置的示意图;结合图2,该网络地址转换装置包括:
[0055] 判断模块10,用于接收请求数据包并根据请求数据包判断连接跟踪表中是否存在对应的双向链表节点;
[0056] 转换模块20,用于若连接跟踪表中存在双向链表节点,则根据双向链表节点上发送方向的转换关系进行IP地址与端口转换;
[0057] 创建模块30,用于若连接跟踪表中不存在双向链表节点,则根据请求数据包创建双向链表节点,以在双向链表创建完成后根据双向链表节点上发送方向的转换关系进行IP地址与端口转换。
[0058] 在上述实施例的基础上,判断模块10包括:
[0059] 计算单元,用于根据请求数据包携带的成员信息进行哈希计算得到哈希值;
[0060] 查找单元,用于查找连接跟踪表中是否存在哈希值;若连接跟踪表中存在哈希值,则连接跟踪表中存在对应的双向链表节点。
[0061] 在上述实施例的基础上,创建模块30包括:
[0062] 第一创建单元,用于将请求数据包中从Docker容器到目标地址的原始四成员以及经过NAT转换后的转换四成员存储于发送方向的链表节点的转换关系中;
[0063] 第二创建单元,用于将原始四成员与转换四成员对调后存储于应答方向的链表节点的转换关系中。
[0064] 本发明还提供了一种网络地址转换设备,请参考图3,图3为本发明实施例所提供的一种网络地址转换设备的示意图;参考图3,该网络地址转换设备包括:
[0065] 存储器1,用于存储计算机程序;
[0066] 处理器2,用于执行所述计算机程序时实现如下的步骤:
[0067] 接收请求数据包并根据请求数据包判断连接跟踪表中是否存在对应的双向链表节点;若连接跟踪表中存在双向链表节点,则根据双向链表节点上发送方向的转换关系进行IP地址与端口转换;若连接跟踪表中不存在双向链表节点,则根据请求数据包创建双向链表节点,以在双向链表创建完成后根据双向链表节点上发送方向的转换关系进行IP地址与端口转换。
[0068] 对于本发明所提供的设备的介绍请参照上述方法的实施例,本发明在此不做赘述。
[0069] 本发明还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现如下的步骤:
[0070] 接收请求数据包并根据请求数据包判断连接跟踪表中是否存在对应的双向链表节点;若连接跟踪表中存在双向链表节点,则根据双向链表节点上发送方向的转换关系进行IP地址与端口转换;若连接跟踪表中不存在双向链表节点,则根据请求数据包创建双向链表节点,以在双向链表创建完成后根据双向链表节点上发送方向的转换关系进行IP地址与端口转换。
[0071] 该计算机可读存储介质可以包括:U盘、移动硬盘只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0072] 对于本发明所提供的计算机可读存储介质的介绍请参照上述方法实施例,本发明在此不做赘述。
[0073] 说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0074] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0075] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦写可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0076] 以上对本发明所提供的网络地址转换方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈