基于TCP长连接的远程运维系统和方法
文献发布时间:2023-06-19 19:33:46
技术领域
本发明涉及通信技术领域,特别涉及一种基于TCP长连接的远程运维系统和方法。
背景技术
IoT(Internet of things,物联网)设备在客户使用过程中,若出现故障问题,便需要售后技术支持在现场同局域网下搭建远程桌面环境,开发人员再通过远程桌面软件,连接现场的PC电脑来进入设备后台进行分析、修复,甚至是寄回厂家返修,导致售后十分不便捷。
当前大部分IoT设备为实现远程运维,会使用内网穿透方案,如P2P打洞、VPN等,但由于NAT网关类型多,穿透过程复杂,以致成功率低,并不可靠,经常会出现由于网络环境复杂,无法成功远程连接的情况。大部分IoT平台不支持复杂的远程运维操作,通常仅仅提供了重启、恢复出厂等简单的操作命令,当遇到需要远程分析日志、导入配置、批量处理等复杂运维操作时,无法提供控制台模式的运维手段。且大部分IoT平台远程运维缺少对数据传输的安全性考虑,导致远程运维时一些敏感信息容易泄露,引起IoT设备后续被攻击的风险。
发明内容
本发明要解决的技术问题是为了克服现有技术中IoT设备远程运维时效性低、难度高、成本高、解决问题单一以及安全低的缺陷,提供一种基于TCP长连接的远程运维系统和方法。
本发明是通过下述技术方案来解决上述技术问题:
第一方面,本发明提供了一种基于TCP长连接的远程运维系统,包括访问端、服务端和设备端;
所述访问端,包括命令控制台模块,用于主动向所述服务端发起第一TCP连接请求,建立与所述服务端之间的第一TCP长连接通道,以及用于根据实际运维需求输入初始数据包,并基于所述第一TCP长连接通道将所述初始数据包发送至所述服务端;
所述设备端,包括TCP长连接模块,用于主动向所述服务端发起第二TCP连接请求,建立与所述服务端之间的第二TCP长连接通道;
所述服务端,包括逻辑转发模块,用于接收所述初始数据包,从所述初始数据包解析出第一类控制命令,并基于所述第二TCP长连接通道将所述第一类控制命令转发至所述设备端;
所述设备端,还包括远程运维模块,用于接收所述第一类控制命令,并执行所述第一类命令对应的第一类操作;其中,所述第一类操作包括查询日志、设备抓包、设备升级、远程配置和批量处理中的至少一种,所述设备端包括IoT设备。
优选地,所述服务端还包括数据库模块;
所述逻辑转发模块还用于在接收到所述第一TCP长连接请求时,调取所述数据库模块中的访问白名单对所述访问端的物理地址进行访问权限判断,并在判断为是的情况下响应所述第一TCP长连接请求,以及在判断为否的情况下拦截所述第一TCP长连接请求。
优选地,所述逻辑转发模块还用于根据所述初始数据包解析出待运维设备名单,调取所述数据库模块中的设备白名单与所述待运维设备名单进行身份验证,并在验证通过的情况下将所述第一类控制命令转发至对应的所述设备端,以及在验证不通过的情况下断开所述第一TCP长连接通道。
优选地,所述逻辑转发模块还用于对所述第一类控制命令的权限等级与预设权限等级进行权限等级判断,并将符合所述预设权限等级的所述第一类控制命令转发至所述设备端,以及对不符合预设权限等级的所述第一类控制命令进行拦截。
优选地,所述设备端还包括数据反馈模块;
所述数据反馈模块用于根据所述第一类操作生成对应的第一类数据,并将所述第一类数据基于所述第二TCP长连接通道发送至所述逻辑转发模块;
所述逻辑转发模块还用于接收所述第一类数据,并基于所述第一TCP长连接通道将所述第一类数据转发至所述访问端。
优选地,所述命令控制台模块具体用于根据AES加密算法对所述初始数据包进行加密并发送至所述逻辑转发模块;
所述逻辑转发模块具体用于根据AES解密算法对所述初始数据包进行解密,从所述初始数据包解析出所述第一类控制命令,并将所述第一类控制命令根据所述AES加密算法进行加密并发送至所述远程运维模块;
所述远程运维模块具体用于根据AES解密算法对所述第一类控制命令进行解密并执行所述第一类命令对应的所述第一类操作。
优选地,所述数据反馈模块具体用于根据所述AES加密算法对所述第一类数据进行加密,并将所述第一类数据基于所述第二TCP长连接通道发送至所述逻辑转发模块;
所述逻辑转发模块具体用于将经过加密的所述第一类数据基于所述第一TCP长连接通道转发至所述命令控制台模块;
所述命令控制台模块具体用于根据所述AES解密算法对所述第一类数据进行解密。
第二方面,本发明提供了一种基于TCP长连接的远程运维方法,包括以下步骤:
步骤S1、访问端通过命令控制台模块主动向服务端发起第一TCP连接请求,建立与所述服务端之间的第一TCP长连接通道;
步骤S2、所述访问端根据实际运维需求在所述命令控制台模块输入初始数据包,并基于所述第一TCP长连接通道将所述初始数据包发送至所述服务端;
步骤S3、设备端用于通过TCP长连接模块主动向所述服务端发起第二TCP连接请求,建立与所述服务端之间的第二TCP长连接通道;
步骤S4、所述服务端用于通过逻辑转发模块接收所述初始数据包,从所述初始数据包解析出第一类控制命令,并基于所述第二TCP长连接通道将所述第一类控制命令转发至所述设备端;
步骤S5、所述设备端用于通过远程运维模块接收所述第一类控制命令,并执行所述第一类命令对应的第一类操作;
其中,所述第一类操作包括查询日志、设备抓包、设备升级、远程配置和批量处理中的至少一种,所述设备端包括IoT设备。
优选地,所述步骤S1具体包括:
步骤S11、所述服务端在接收到所述第一TCP长连接请求时,调取所述服务端中的数据库模块中的访问白名单对所述访问端的物理地址进行访问权限判断,并在判断为是的情况下执行步骤S121,以及在判断为否的情况下执行步骤S122;
步骤S121,所述服务端响应所述第一TCP长连接请求,建立起所述访问端和所述服务端之间的第一TCP长连接通道;
步骤S122, 所述服务端拦截所述第一TCP长连接请求。
优选地,所述步骤S4具体包括:
步骤S41、所述逻辑转发模块根据所述初始数据包解析出待运维设备名单,调取所述数据库模块中的设备白名单与所述待运维设备名单进行身份验证,并在验证通过的情况下执行步骤S421,以及在验证不通过的情况下执行步骤S422;
步骤S421、所述逻辑转发模块将所述第一类控制命令转发至对应的所述设备端;
步骤S422、所述逻辑转发模块断开所述第一TCP长连接通道。
在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实施例。
本发明的积极进步效果在于:本发明提供了一种基于TCP长连接的远程运维系统和方法,通过在服务端与访问端和设备端之间的建立TCP长连接,实现点对点的命令传输,从而实现对IoT设备的远程运维。该方案无需在IoT设备搭建其余环境和不必依赖外部网关,有效节省了经济成本和硬件成本,同时支持根据实际运维需求输入控制命令,有效提高解决问题的全面性和时效性,以及对每一端之间严格遵循AES加解密,避免数据泄露风险,有效提高安全性。
附图说明
图1为本发明实施例提供的基于TCP长连接的远程运维系统的结构示意图。
图2为本发明实施例提供的基于TCP长连接的远程运维系统的另一种结构示意图。
图3为本发明实施例提供的基于TCP长连接的远程运维系统的另一种示意图。
图4为本发明实施例提供的基于TCP长连接的远程运维方法的流程示意图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但不因此将本发明限制在所述的实施例范围之中。
本实施例提供了一种基于TCP长连接的远程运维系统,图1为本发明实施例提供的基于TCP长连接的远程运维系统的结构示意图,如图1所示,该远程运维系统包括访问端11、服务端12和设备端13。
访问端11,包括命令控制台模块,用于主动向服务端12发起第一TCP连接请求,建立与服务端12之间的第一TCP长连接通道,以及用于根据实际运维需求输入初始数据包,并基于第一TCP长连接通道将初始数据包发送至服务端12。
设备端13,包括TCP长连接模块,用于主动向服务端12发起第二TCP连接请求,建立与服务端12之间的第二TCP长连接通道。
服务端12,包括逻辑转发模块,用于接收初始数据包,从初始数据包解析出第一类控制命令,并基于第二TCP长连接通道将第一类控制命令转发至设备端13。
设备端13,还包括远程运维模块,用于接收第一类控制命令,并执行第一类命令对应的第一类操作。
其中,第一类操作包括查询日志、设备抓包、设备升级、远程配置和批量处理中的至少一种;设备端13包括IoT设备。
具体地,在远程运维系统中,图2为本发明实施例提供的基于TCP长连接的远程运维系统的另一种示意图,如图2所示,设备端13中的IoT设备通过集成自研的TCP长连接客户端SDK(以下简称dclient),在启动时主动向服务端12中的云平台服务器(以下简称csmain)发起一个第二TCP长连接请求,建立起IoT设备与云平台之间的第二TCP长连接通道,此时云平台可以通过此条第二TCP长连接通道与内网中的IoT设备进行信息和命令交互;在访问端11,开发运维人员通过基于TCP长连接的命令控制台模块(以下简称csmain_cli),将需要远程运维执行的命令输入至csmain_cli终端,通过csmain_cli ->csmain ->dclient的TCP转发链路,实现点对点的命令传输,从而实现对IoT设备的远程运维。
该系统中设备端13中的IoT设备通过集成自研的TCP长连接客户端SDK,无需在IoT设备外围搭建其余环境,极大减少了人工成本;同时不必依赖外部网关,集成轻量的SDK即可,极大地减少了硬件成本。此外,设备端13中的设备类型包括智能汽车、医疗设备、智能摄像头、环境监测、智能工厂、智能家居以及共享交通等物联网设备,本实施例不做具体限制。对于不同的设备终端,该系统可以演化为不同的产品,如智能家居控制台、PC远程桌面软件和本地服务器升级工具等。
需要说明的是,远程运维系统还可应用于复杂多变的AIoT(ArtificialIntelligence of Things,人工智能物联网)场景下的远程运维;该系统的各个部件均需安装在Linux环境下,如将dclient安装至IoT设备端、csmain安装在IoT服务端,以及将csmain_cli安装在linux系统的计算机上。
需要说明的是,本实施例的服务端12采用分布式架构进行开发设计,可在全球各地区进行集群化部署,一个服务端12设置多个服务器,有效避免系统宕机、系统瘫痪、系统故障以及系统臃肿的问题。图3为本发明实施例提供的基于TCP长连接的远程运维系统的另一种结构示意图,如图3所示,服务端12包括:边缘服务器121、边缘服务器122以及路由服务器123。在实际应用时,设备端13会就近连接边缘服务器122,访问端11也会就近连接边缘服务器121,而服务端12之间会对接收到的连接请求进行智能路由,准确投递到对应设备的对应节点上。
服务端采用分布式架构进行设计可避免弱网或者部分国家存在网络限制情况下,导致的网络连接不稳定或者无法正常连接的情况,通过两朵边缘云之间可以进行网络加速,且不存在部分国家运营商网络限制问题,从而让系统在面临诸多不确定因素时有多种容错方式,从整体上提高系统的稳定性,使得整体远程运维方案适用性更强。
在一种可选的实施方式中,该系统还可将访问端11的命令控制台模块集成到web网站中,可更加便捷地在任意PC上进行远程访问控制。
在一种可选的实施方式中,服务端12还包括数据库模块;逻辑转发模块还用于在接收到第一TCP长连接请求时,调取数据库模块中的访问白名单对访问端11的物理地址进行访问权限判断,并在判断为是的情况下响应第一TCP长连接请求,以及在判断为否的情况下拦截第一TCP长连接请求。
在具体实施时,服务端12还用于对访问端11的访问权限进行鉴权,在服务端12做了授权要求,即服务端12对访问端11存在白名单控制,服务端12通过调取数据库模块中的访问白名单,将其与访问端11的物理地址进行判断,并在通过判断的情况下才允许通过该访问端11的访问权限,否则断开与访问端11之前的第一TCP长连接通道。
该功能通过对访问端11的操作权限进行授权管控,防止未经授权的访问端可以随意进行IoT设备后台进行任意操作的问题,有效提高了远程运维的安全性和隐私性。
需要说明的是,逻辑转发模块通常只有在访问端11首次对服务端12发起第一TCP长连接请求时,才会对该访问端11的访问权限进行判断,确定其为白名单内的IP才对其接下来的命令进行转发,否则断开与访问端11之间的TCP连接通道。
在一种可选的实施方式中,逻辑转发模块还用于根据初始数据包解析出待运维设备名单,调取数据库模块中的设备白名单与待运维设备名单进行身份验证,并在验证通过的情况下将第一类控制命令转发至对应的设备端,以及在验证不通过的情况下断开所述第一TCP长连接通道。
在具体实施时,服务端12还用于对设备端13的远程功能进行用户开关控制,访问端11可输入指定设备MAC的命令向逻辑转发模块要求建立对应的转发通道,逻辑转发模块只有在确认该待运维设备名单为数据库模块中的设备白名单中的授权设备,才将命令进行转发至对应的设备端13中。
在一种可选的实施方式中,逻辑转发模块还用于对第一类控制命令的权限等级与预设权限等级进行权限等级判断,并将符合预设权限等级的第一类控制命令转发至设备端13,以及对不符合预设权限等级的第一类控制命令进行拦截。
通常情况下,访问端11通过常规的shell命令向对应的设备进行远程运维,包括一般常用的检测、修改、升级等预先设定的命令,以及一些自定义封装的常用命令、批量命令等,既能避免误操作带来的影响,又能避免频繁的操作,有效提升远程运维的易用性,接近于直接在内网中访问设备后台的使用体验。
具体地,访问端11支持自定义的类终端命令输入,支持使用设备Linux终端的大部分命令,即允许大部分安全的设备后台指令,包括远程查询日志、设备抓包、设备升级、远程配置等复杂运维操作,且支持自定义批量处理操作,针对不同的设备终端也可以由运维人员自行输入丰富的shell命令,而不是一一去适配每个设备命令,让分析问题和解决问题的手段多样化和全面性。同时,服务端12对于部分权限过大的shell命令进行了识别拦截,也进一步体现了安全性。
在一种可选的实施方式中,设备端13还包括数据反馈模块;数据反馈模块用于根据第一类操作生成对应的第一类数据,并将第一类数据基于第二TCP长连接通道发送至逻辑转发模块;逻辑转发模块还用于接收第一类数据,并基于第一TCP长连接通道将第一类数据转发至访问端11。在具体使用时,数据反馈模块在将第一类数据反馈至逻辑转发模块中还携带着设备端13的位置信息,逻辑转发模块将接收到的第一类数据和位置信息同步转发至访问端11,访问端11即可根据该位置信息和第一类数据进行快速定位以及远程运维。
该功能通过服务端12将设备端13反馈的第一类数据转发至访问端11,提供给访问端11和设备端13之间安全可靠的双向数据流转传输能力,该数据流同TCP的数据流一样,可确保数据是顺序到达的,服务端12将输入在访问端11的命令精准转发投递给对应的设备端13,从而构造出一条完整的远程运维通道链路。
在一种可选的实施方式中,命令控制台模块具体用于根据AES加密算法对初始数据包进行加密并发送至逻辑转发模块;逻辑转发模块具体用于根据AES解密算法对初始数据包进行解密,从初始数据包解析出第一类控制命令,并将第一类控制命令根据AES加密算法进行加密并发送至远程运维模块;远程运维模块具体用于根据AES解密算法对第一类控制命令进行解密并执行第一类命令对应的第一类操作。
在一种可选的实施方式中,数据反馈模块具体用于根据AES加密算法对第一类数据进行加密,并将第一类数据基于第二TCP长连接通道发送至逻辑转发模块;逻辑转发模块具体用于将经过加密的第一类数据基于第一TCP长连接通道转发至命令控制台模块;命令控制台模块具体用于根据所述AES解密算法对第一类数据进行解密。
具体地,该远程运维系统对所有通道中的传输的命令和数据都进行了严格AES加解密,即每一端都按照特定的规则,含随机因子的密钥进行加解密,避免了数据泄漏风险,有效提高了该系统的安全性和隐私性。
在一种可选的实施方式中,设备端13还包括业务执行模块,用于执行一些访问端11下达的常规业务命令,该业务执行模块与远程运维模块共用一条TCP通道,即第二TCP长连接通道,不用再另外创建一条TCP通道,有效避免了资源的浪费和设备端13的软件系统臃肿,适用于小内存的嵌入式设备,达到通道复用、网络资源复用以及设备轻量化的目的。
具体地,访问端11将业务命令基于第一TCP长连接通道下发至服务端12中,服务端12的逻辑转发模块将其通过第二TCP长连接通道转发至设备端13的业务执行模块中,业务执行模块根据业务命令执行对应的操作,根据执行的操作生成对应的第二类数据,并按照传输的通道将第二类数据反馈至访问端11。
在一种可选的实施方式中,访问端11还包括阈值报警模块,用于对反馈至访问端11的第一类数据和第二类数据与预设阈值标准进行分析判断,在反馈的数据不符合其所对应的阈值标准时进行自动报警,以提示访问端11的运维人员能够更好地进行远程运维。
本实施例的远程运维系统通过TCP长连接的方式提供了内网穿透的能力,打破用户在远程运维时的网络限制,通过设备端13主动向服务端12发起TCP长连接请求,建立起TCP长连接通道,提供安全可靠的远程运维IoT设备的能力。
本实施例还提供了一种基于TCP长连接的远程运维方法,可应用于上述实施例中的基于TCP长连接的远程运维系统,图4为本实施例提供的基于TCP长连接的远程运维方法的流程示意图,如图4所示,该方法包括以下步骤:
步骤S1、访问端通过命令控制台模块主动向服务端发起第一TCP连接请求,建立与服务端之间的第一TCP长连接通道。
步骤S2、访问端根据实际运维需求在命令控制台模块输入初始数据包,并基于第一TCP长连接通道将初始数据包发送至服务端。
步骤S3、设备端用于通过TCP长连接模块主动向服务端发起第二TCP连接请求,建立与服务端之间的第二TCP长连接通道。
步骤S4、服务端用于通过逻辑转发模块接收初始数据包,从初始数据包解析出第一类控制命令,并基于第二TCP长连接通道将第一类控制命令转发至设备端。
步骤S5、设备端用于通过远程运维模块接收第一类控制命令,并执行第一类命令对应的第一类操作。
其中,第一类操作包括查询日志、设备抓包、设备升级、远程配置和批量处理中的至少一种,设备端包括IoT设备。
在一种可选的实施方式中,步骤S1具体包括:
步骤S11、服务端在接收到第一TCP长连接请求时,调取服务端中的数据库模块中的访问白名单对访问端的物理地址进行访问权限判断,并在判断为是的情况下执行步骤S121,以及在判断为否的情况下执行步骤S122。
步骤S121,服务端响应所述第一TCP长连接请求,建立起访问端和服务端之间的第一TCP长连接通道。
步骤S122,服务端拦截第一TCP长连接请求。
在一种可选的实施方式中,步骤S4具体包括:
步骤S41、逻辑转发模块根据初始数据包解析出待运维设备名单,调取数据库模块中的设备白名单与待运维设备名单进行身份验证,并在验证通过的情况下执行步骤S421,以及在验证不通过的情况下执行步骤S422。
步骤S421、逻辑转发模块将第一类控制命令转发至对应的设备端。
步骤S422、逻辑转发模块断开第一TCP长连接通道。
在一种可选的实施方式中,步骤S4具体包括:
步骤S43、逻辑转发模块对第一类控制命令的权限等级与预设权限等级进行权限等级判断,并在判断为是的情况下执行步骤S441,以及在判断为否的情况下执行步骤S442。
步骤S441、逻辑转发模块将符合预设权限等级的第一类控制命令转发至设备端。
步骤S442、逻辑转发模块对不符合预设权限等级的第一类控制命令进行拦截。
在一种可选的实施方式中,该方法还包括:
步骤S6、设备端根据所述第一类操作生成对应的第一类数据,并将第一类数据基于第二TCP长连接通道发送至逻辑转发模块。
步骤S7、逻辑转发模块还用于接收第一类数据,并基于第一TCP长连接通道将第一类数据转发至访问端。
在一种可选的实施方式中,步骤S2具体包括:
步骤S21、命令控制台模块根据AES加密算法对初始数据包进行加密,并发送至逻辑转发模块。
在一种可选的实施方式中,步骤S4具体包括:
步骤S45、逻辑转发模块根据AES解密算法对初始数据包进行解密,从初始数据包解析出第一类控制命令,并将第一类控制命令根据AES加密算法进行加密并发送至远程运维模块。
在一种可选的实施方式中,步骤S5具体包括:
步骤S51、远程运维模块根据AES解密算法对第一类控制命令进行解密,并执行第一类命令对应的第一类操作。
在一种可选的实施方式中,步骤S6具体包括:
步骤S61、访问端根据AES加密算法对第一类数据进行加密,并将第一类数据基于第二TCP长连接通道发送至逻辑转发模块。
在一种可选的实施方式中,步骤S7具体包括:
步骤S71、逻辑转发模块将经过加密的第一类数据基于第一TCP长连接通道转发至命令控制台模块。
在一种可选的实施方式中,步骤S1具体包括:
步骤S13、命令控制台模块根据所述AES解密算法对第一类数据进行解密。
本实施例的远程运维方法通过TCP长连接的方式提供了内网穿透的能力,打破用户在远程运维时的网络限制,通过设备端主动向服务端发起TCP长连接请求,建立起TCP长连接通道,提供安全可靠的远程运维IoT设备的能力。
本实施例的远程运维方法通过对访问端的物理地址进行鉴权以及对访问端携带的待运维名单进行身份验证,只有在验证通过时才允许访问端的访问权限以及对设备端的远程运维,有效提高了远程运维的安全性和隐私性。
本实施例的远程运维方法支持自定义的类终端命令输入,支持使用设备Linux终端的大部分命令,即允许大部分安全的设备后台指令,包括远程查询日志、设备抓包、设备升级、远程配置等复杂运维操作,有效提高了分析问题和解决问题的手段多样化和全面性;同时,对部分权限过大的shell命令进行了识别拦截,也进一步体现了安全性。
本实施例的远程运维方法对所有通道中的传输的命令和数据都进行了严格AES加解密,即每一端都按照特定的规则,含随机因子的密钥进行加解密,避免了数据泄漏风险,有效提高了远程运维的安全性和隐私性。
上述仅为本发明的具体实施方式,但本发明的设计构思并不局限于此,凡利用此构思对本发明进行非实质性的改动,均应属于侵犯本发明保护范围的行为。
- 基于电力通信网运维的多点远程协同交互方法
- 基于工业互联网标识解析产品远程运维系统及运维方法
- 基于AR眼镜的远程运维指导控制系统及方法