一种应用SNMP协议进行NAT穿越管理内网设备的方法与流程

文档序号:17923108发布日期:2019-06-15 00:14阅读:2102来源:国知局
一种应用SNMP协议进行NAT穿越管理内网设备的方法与流程

本发明涉及计算机技术领域,涉及一种应用snmp协议进行nat穿越管理内网设备的方法,尤其指对snmp协议实现nat穿越机制。



背景技术:

随着网络的飞速发展和各类网络设备的急速增加,网络的规模不断扩大,确保网络可靠、稳定运行的有效网络管理的必要性也大大增加。ipv4协议下43亿的地址空间早已耗尽,为了解决ipv4地址的消耗的情况,网络地址转换nat应用大大缓解了ipv4地址空间的紧缺。但是nat的应用使得公网的管理设备对私网设备的管理变得复杂,需要经过nat穿越才能实现对私网内设备的访问。nat的本质为一群服务器使用同一个公有ip内部,内部服务器各配有一个私有ip地址。在网路管理中应用广泛的snmp协议本身并不支持nat穿越,使得snmp网络管理系统的应用范围收到了限制,不能直接对私网设备进行管理。

nat的实现模式共有四种:fullcone(对外网设备的地址无限制)、restrictedcone(限制外网设备的ip)、portrestricted(限制外网设备的ip与端口)、symmetric(对不同的应用程序有不同的映射),以上的4种模式对外网设备的限制不同,虽然fullcone模式下的nat对外网设备的ip和端口没有限制,但在实际应用中,更多应用的是portrestricted和symmetric,所以外网设备使用非对称端口进行通信时,并不能穿越nat与内网设备进行通信。snmp协议中规定162端口用于接收trap,request的发送则采用任意端口,该机制使得snmp协议不能在nat模式为portrestricted和symmetric下nat穿越直接管理私网设备。

目前,在网络管理中使用的nat穿越,都是需要在内部主机、应用程序或者nat网关上增加额外的处理,借助“外部”的力量实现na图穿越对私网设备管理。在使用的nat穿越方法中主要有应用网关(alg)、探针技术stun和turn、交互式连接建立(ice),以上技术都并不完美,除了需要在内部主机、应用程序或者nat网关上增加额外的处理,其技术本身也具有一定的局限。

(1)alg大部分的功能集成在nat设备上,这导致了该方式的可扩展性不强,因为在进行应用升级时,需要对nat设备也进行升级,这对目前我们所处的网络来说,将会是一项非常艰巨的任务,在实际中很难实现。

(2)stun并不支持tcp连接的穿越,需要终端应用程序支持stun客户端的功能,更有stun方案不支持业务对防火墙的穿越以及对称nat(symmetricnat)的穿越。

(3)turn方式与stun在技术机制上是相同的,也用了服务器/客户端模式然而,而正是由于服务器的存在,当数据量变得非常大时,也会造成网络瓶颈,并且由于所有报文都必须经过turn服务器转发,增大了报文的延迟和丢包的可能性,会给qo5带来问题。

(4)ice虽然具有支持各种nat的穿越的优势,但是需要每一个终端都支持ice穿越方法,在开发上显著地增加了复杂性,而且网络还必须支持stun,turn等功能,实现起来较为复杂。

由以上分析可见,现在公网snmp网络管理系统对私网设备所是常用的nat穿越的方式,全都需要在设备上添加额外的nat穿越功能,并因这种额外功能的增加普遍实现复杂并且不能达到完美的功能的实现。

所以,最可靠的nat穿越不是利用额外的部署和设备,而是从协议本身出发使其具有nat穿越机制。



技术实现要素:

本发明主要解决了公网snmp网络管理设备对私网内设备管理时采用nat穿越方法需要额外设备或部署的复杂性以及局限性的技术问题,提出了一种应用snmp协议进行nat穿越管理内网设备的方法,该方法是一种对snmp协议进行修改优化的方法,使snmp协议具有nat穿越机制,实现在无其他额外设备或协议的支持下,snmp网络管理设备直接对私网设备的管理。

本发明提供了一种应用snmp协议进行nat穿越管理内网设备的方法,包括:

将snmp协议的消息处理端口修改为同一端口,实现snmp协议的nat穿越机制;所述消息处理端口包括request处理模块和snmp消息接收处理模块。

进一步的,所述request处理模块的修改包括:对request处理模块的报文方式和发送方式的修改。

进一步的,所述对request处理模块报文方式的修改包括:在报文中添加预设长度的字节,包括但不限于标志信息、地址信息和/或requestid等信息。

进一步的,所述对request处理模块发送方式的修改包括:

在request的发送中,通过被管设备的内网地址和外网地址是否一致判断被管设备处于公网还是内网;若被管设备处于内网,则将request先发送至snmp处理模块的端口,经过处理后再发送至网关设备(nat设备),然后转发至被管设备;若被管设备处于公网,则将request直接发送至被管设备。

进一步的,所述snmp消息接收处理模块,用于对内网设备消息的处理,内网设备消息包括内网中被管设备的trap消息和response消息以及内网设备转发至网关设备的request消息。

进一步的,所述snmp消息接收处理模块的修改包括:

接收内网发送的request报文,所述request报文为request处理模块中将pdu(packagedataunit,分组数据单元)中添加预设长度的字节信息的request报文;

通过报文中添加的标志信息判断request报文类型,提取添加字节中的消息并建立requestid与发送该request的源地址的映射;

删除request报文中添加的预设长度的字节信息,重新打包成正常的snmp报文,将正常的snmp报文转发至映射中对应的网关设备,再最终转发至内网被管设备。

进一步的,trap消息和response消息的报文没有被修改,通过snmp协议栈中的pdu.get_type()函数判断其类型,若为response消息则根据requestid与对应request的源地址的映射发送至对应端口。

进一步的,该系统包括snmp网络管理服务器,数据库服务器以及被管设备;

snmp网络管理服务器部署支持nat穿越机制的snmp网管设备,并与数据库服务器相连;

被管设备包括公网被管设备和私网被管设备;

snmp网络管理服务器设置snmp消息的统一处理端口,设置的参数均可通过提供的配置文件进行灵活配置。

进一步的,该系统的运行方法包括:

步骤一:被管设备向snmp网络管理系统发送心跳trap消息,snmp网络管理系统建立心跳trap消息与被管设备的映射关系,并将被管设备的心跳trap信息存储至数据库中;同时,被管设备定时发送心跳trap消息,snmp网络管理系统更新映射关系,实现被管设备的保活功能;

步骤二:snmp网络管理系统通过判断被管设备的内网地址和外网地址是否一致来决定是否需要nat穿越;若为外网设备则直接采集被管设备信息,若为内网设备则需利用snmp协议中的nat穿越机制将request先发送至snmp处理模块的端口,经过处理后再发送至网关设备,然后转发至被管设备,获得被管设备信息;snmp网络管理系统将采集到的被管设备信息存储至数据库中;

步骤三:网管设备每隔一定时间采集被管设备的mib信息;在对被管设备mib数据的采集中,snmp网络管理系统通过判断被管设备的内网地址和外网地址是否一致来决定是否需要nat穿越,若为外网设备则直接采集被管设备的mib信息,若为内网设备则需利用snmp协议中的nat穿越机制将request先发送至snmp消息处理模块的端口,经过处理后再发送至网关设备,然后转发至被管设备,采集被管设备的mib信息,snmp网络管理系统将采集到的mib信息存储至数据库中;

进一步的,所述心跳trap消息包括被管设备的uuid、内网ip、用户名和/或密码等基础信息;

设备信息包括uuid、环回地址和/或community名等设备信息。

本发明的有益效果是:

本发明提供的技术方案经过在两个模块的修改与优化,此时的snmp协议已具备nat穿越机制。使用该方法下snmp协议的网络管理设备不需要额外的在内部主机、应用程序或者nat网关上增加额外的处理,直接能通过nat穿越,实现对私网内设备的管理。

附图说明

图1所示为修改后的snmp报文格式示意图;

图2所示为解snmp消息接收处理流程示意图;

图3所示为可nat穿越的snmp网络管理系统示意图;

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

实施例一

在应用最多的nat穿越模式portrestricted和symmetric下,snmp网管设备无法直接nat穿越。所以,针对不同类型的nat模式,如果要保证snmp网络管理设备实现nat穿越,需要把snmp网管的消息处理端口都改成同一端口(即snmp消息trap、request、response的接收与发送使用同一端口)。

本发明实施例一提供了一种应用snmp协议进行nat穿越管理内网设备的方法,包括:

将snmp协议的消息处理端口修改为同一端口,实现snmp协议的nat穿越机制;所述消息处理端口包括request处理模块和snmp消息接收处理模块。

其中,在snmp开源协议栈snmp++上进行修改与优化,在对snmp协议栈的修改中包括了request处理模块、snmp消息接收处理模块。这两个模块协同运作,在与内网设备通信时使用统一的ip与端口,在不同的nat模式下都能实现snmp协议的nat穿越机制。

所述request处理模块的修改包括:对request处理模块的报文方式和发送方式的修改。

如图1所示,对request处理模块报文方式的修改包括:在报文pdu前、后或其它任意位置中添加目的地址、requestid等信息,不同信息添加位置任意,添加的总字符数任意,以添加标志、地址、requestid的顺序构成的十二个字节为例:

添加的前两个字节作为修改request后的标志,设置为0x0000或其他任意字符0xxxxx,以供snmp消息接收处理模块在接收到消息后判断报文的消息类型;

添加的第三至六字节用于存放发送request的被管设备外网ip;

添加的第七至八字节用于存放网管设备发送所述request对应的被管设备外网端口;

添加的第九至十二字节用于存放所述request对应的requestid,以便在收到request时建立requestid与发送该request源地址的相关映射,实现response的正确转发。

所述对request处理模块发送方式的修改包括:

在request的发送中,通过被管设备的内网地址和外网地址是否一致判断被管设备处于公网还是内网;若被管设备处于内网,则将request先发送至snmp处理模块的端口,经过处理后再发送至网关设备,然后转发至被管设备;若被管设备处于公网,则将request直接发送至被管设备。

所述snmp消息接收处理模块,用于对内网设备消息的处理,内网设备消息包括内网中被管设备的trap消息和response消息以及内网设备转发至网关设备的request消息。

为了能够统一端口,并在不同的nat模式下实现nat穿越,在上述request处理模块中的修改后的request报文将会发送到snmp消息接收处理模块,所述snmp消息接收处理模块的修改包括:

接收内网发送的request报文,所述request报文为request处理模块中将pdu(packagedataunit,分组数据单元)中添加多个字节信息的request报文;

通过报文中添加的标志或其它信息判断request报文类型,提取添加的剩余字节中的消息并建立requestid与发送该request的源地址的映射;

删除request报文中添加的多个字节信息,重新打包成正常的snmp报文,将正常的snmp报文转发至映射中对应的网关设备,再最终转发至内网被管设备。以上snmp消息接收处理模块的模式如图2所示。

进一步的,trap消息和response消息的报文没有被修改,通过snmp协议栈中的pdu.get_type()函数判断其类型,若为response消息则根据requestid与对应request的源地址的映射发送至对应端口。

经过上述在snmp++中两个模块的修改与优化,此时的snmp协议已具备nat穿越机制。使用该方法下snmp协议的网络管理设备不需要额外的在内部主机、应用程序或者nat网关上增加额外的处理,直接能通过nat穿越,实现对私网内设备的管理。

如图3所示,本发明还提供了一种应用snmp协议进行nat穿越管理内网设备的系统,该系统包括snmp网络管理服务器,数据库服务器以及被管设备;

snmp网络管理服务器部署支持nat穿越机制的snmp网管设备,并与数据库服务器相连;

被管设备包括公网被管设备和私网被管设备;

snmp网络管理服务器设置snmp消息的统一处理端口,设置的参数均可通过提供的配置文件进行灵活配置。

优选的,该系统中包括了支持可nat穿越的snmp网络管理服务器两台,数据库服务器两台以及公网、私网的被管设备若干台。

该系统的运行方法包括:

步骤一:被管设备向snmp网络管理系统发送心跳trap消息,心跳trap消息中包括了被管设备的uuid、内网ip、用户名、密码等基础信息,snmp网络管理系统建立心跳trap消息与被管设备的映射关系,如:网管系统将这些信息建立uuid与设备信息、外网地址与设备信息、uuid和内网地址的映射用于设备的信息以及对应关系,并将被管设备的心跳trap信息存储至数据库中;同时,被管设备定时发送心跳trap消息,snmp网络管理系统更新映射关系,实现被管设备的保活功能;

步骤二:snmp网络管理系统通过判断被管设备的内网地址和外网地址是否一致来决定是否需要nat穿越;若为外网设备则直接采集被管设备信息,若为内网设备则需利用snmp协议中的nat穿越机制将request先发送至snmp处理模块的端口,经过处理后再发送至网关设备,然后转发至被管设备,获得被管设备信息;snmp网络管理系统将采集到的被管设备信息存储至数据库中;

步骤三:网管设备每隔一定时间采集被管设备的mib信息;在对被管设备mib数据的采集中,snmp网络管理系统通过判断被管设备的内网地址和外网地址是否一致来决定是否需要nat穿越,若为外网设备则直接采集被管设备的mib信息,若为内网设备则需利用snmp协议中的nat穿越机制将request先发送至snmp消息处理模块的端口,经过处理后再发送至网关设备,然后转发至被管设备,采集被管设备的mib信息,snmp网络管理系统将采集到的mib信息存储至数据库中;

所述心跳trap消息包括被管设备的uuid、内网ip、用户名和/或密码等基础信息;

设备信息包括uuid、环回地址和/或community名等设备信息。

以上就是对本发明多提供的基于snmp协议可nat穿越方法的具体实施介绍,该实施例说明,在支持该方法修改后的课nat穿越的snmp协议的网络管理设备,并不需要在网关、网管等设备上进行额外的配置以实现网管系统的nat穿越,并且可以支持任一nat模式,系统配置简单,能够高效实现对私网设备的管理。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1