CN117857527A - 基于http协议的本地代理实现虚拟机访问元数据服务的方法 - Google Patents

基于http协议的本地代理实现虚拟机访问元数据服务的方法 Download PDF

Info

Publication number
CN117857527A
CN117857527A CN202311722372.0A CN202311722372A CN117857527A CN 117857527 A CN117857527 A CN 117857527A CN 202311722372 A CN202311722372 A CN 202311722372A CN 117857527 A CN117857527 A CN 117857527A
Authority
CN
China
Prior art keywords
request
metadata
http
virtual machine
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311722372.0A
Other languages
English (en)
Inventor
郭云铃
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianyi Cloud Technology Co Ltd
Original Assignee
Tianyi Cloud Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianyi Cloud Technology Co Ltd filed Critical Tianyi Cloud Technology Co Ltd
Priority to CN202311722372.0A priority Critical patent/CN117857527A/zh
Publication of CN117857527A publication Critical patent/CN117857527A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,属于IT与软件开发领域,其具体包括:确定元数据服务接口和数据格式,创建代理服务器并配置虚拟机,发送HTTP请求,将源地址设为虚拟实例网卡IP,OpenvSwich使用流表做NAT,将请求从tap_metadata端口发送到本地的HTTP代理服务器,本地HTTP代理服务器将获取的虚拟实例ID及数字签名算法加密后生成的端口信息设置到HTTP请求头,并根据代理规则将请求从本地发送给元数据服务器,元数据服务收到请求后,取出签名信息,按数字签名算法将签名内容解密成字符串,并与实例ID进行比较,可以区分虚拟实例请求的发送端和同宿主节点上的不同虚拟实例。

Description

基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法
技术领域
本发明属于IT与软件开发领域,具体的说是基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法。
背景技术
在公有云虚拟网络中,用户通常会有对云上虚拟实例访问区域内元数据服务的需求,获取自身绑定的EIP信息,其中云上虚拟实例包括虚拟机或docker容器。用户虚拟实例给元数据服务发送请求,然后元数据需要根据访问请求识别到该请求是由哪个虚拟实例发送的,再返回相应的响应,给虚拟实例提供元数据服务。openstack提供用户访问元数据服务信息的请求链比较长,请求先发送到用户租户网络能访问的一个qrouter开头的命名空间中,然后命名空间再转发到网络节点,网络节点转发到中子元数据代理,最后在发送到元数据服务,该方法请求调用链较长,故障域较多且故障定位点多。
如申请公开号为CN105446794A的中国专利公开了一种基于虚拟机的磁盘操作方法、装置及系统,其特征是,从元数据服务器获得虚拟磁盘对应的元数据信息;将所述元数据信息,存储在所述客户端服务器中;访问所述客户端服务器中的虚拟磁盘时,从所述客户端服务器存储的一个或多个元数据信息中,获得要访问的虚拟磁盘对应的第一元数据信息;根据所获得的第一元数据信息,向存储服务器发送文件操作指令,使得所述存储服务器执行所述文件操作指令对应的文件操作。应用本发明实施例提供的方案进行文件操作时,能够减小文件操作延迟,提高了用户体验。
如授权公告号为CN107770095B的中国专利公开了一种用于控制虚拟机元数据访问的方法与设备,本发明包括:本申请的虚拟机物理设备根据目标虚拟机对应的隧道标识信息对元数据访问请求进行隧道封装处理以获得对应的第一数据报文,元数据服务设备在获取对应虚拟机物理设备发送的第一数据报文后,对所述第一数据报文进行隧道解封装处理,以获得关于目标虚拟机的元数据访问请求及所述目标虚拟机对应的隧道标识信息,并根据所述目标虚拟机对应的隧道标识信息获取所述目标虚拟机的元数据信息;利用网络隧道技术对元数据访问请求及请求响应结果进行封装或解封装处理,实现身份识别,使得用户可以安全快捷地访问所需要的元数据信息。
以上现有技术均存在以下问题:1)访问元数据服务信息的请求链比较长;2)不包含自身的元数据信息;3)租户网络无法与数据中心基层网络进行通信。
发明内容
针对现有技术的不足,本发明提出了基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,其具体包括:确定元数据服务接口和数据格式,创建代理服务器并配置虚拟机,发送HTTP请求,将源地址设为虚拟实例网卡IP,OpenvSwich使用流表做NAT,将请求从tap_metadata端口发送到本地的HTTP代理服务器,本地HTTP代理服务器将获取的虚拟实例ID及数字签名算法加密后生成的端口信息设置到HTTP请求头,并根据代理规则将请求从本地发送给元数据服务器,元数据服务收到请求后,取出签名信息,按数字签名算法将签名内容解密成字符串,并与实例ID进行比较,可以区分虚拟实例请求的发送端和同宿主节点上的不同虚拟实例。
为实现上述目的,本发明提供如下技术方案:
基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,包括:
步骤S1:确定元数据服务的接口和数据格式,创建代理服务器并配置虚拟机;
步骤S2:用户在虚拟实例中发送HTTP请求,源地址为虚拟实例网卡IP;
步骤S3:OpenvSwich使用流表做NAT,将HTTP请求的源IP地址和目的IP地址以及端口转换为中间IP地址及端口,将请求从tap_metadata端口发送到本地的HTTP代理服务器;
步骤S4:本地HTTP代理服务器将获取的虚拟实例的ID及通过数字签名算法加密后生成的端口信息设置到HTTP请求头,并根据代理规则将请求从本地发送给元数据服务器;
步骤S5:在元数据服务器中,元数据服务接口收到HTTP请求头后,取出签名信息,按数字签名算法将签名内容解密成字符串,并与虚拟实例的ID进行比较,区分虚拟实例。
具体的,所述步骤S1中创建代理服务器规则的具体步骤包括:
步骤S101:确定代理服务器类型,打开代理服务器配置文件;
步骤S102:使用正则表达式匹配URL,并将虚拟机的HTTP请求转发到元数据服务;
步骤S103:配置请求头和响应处理;
步骤S104:保存配置文件并重启代理服务器以使配置生效,并进行测试和优化。
具体的,所述步骤S2的具体步骤包括:
步骤S201:用户在虚拟实例中运行HTTP客户端程序;
步骤S202:用户在HTTP客户端中输入目标URL和POST请求方法,并设置请求头和正文数据;
步骤S203:将源地址设置为虚拟实例的网卡IP地址,并指定目标端口。
具体的,所述步骤S3中OpenvSwich使用流表做NAT的具体步骤包括:
步骤S301:确定需要访问的元数据服务的接口和数据格式,以及虚拟机使用的操作系统和网络环境;
步骤S302:通过OpenvSwich配置虚拟机网络中的HTTP请求;
步骤S303:当数据包到达OpenvSwich时,OpenvSwich根据创建流表规则进行匹配,并根据匹配的规则对数据包进行NAT转换;
步骤S304:将虚拟机的HTTP请求转发到元数据服务,进行测试和调试,根据测试结果,对OpenvSwich进行优化和改进,并部署到生产环境。
具体的,所述步骤S302的具体步骤包括:
步骤S3021:确定虚拟机网络配置和HTTP代理端口;
步骤S3022:将默认的HTTP代理设置为OpenvSwich的IP地址和代理端口号;
步骤S3023:配置OpenvSwich流表规则以定义将虚拟机的HTTP请求转发到元数据服务的规则;
步骤S3024:配置完成,进行测试以确保OpenvSwich可以正常地将虚拟机的HTTP请求转发到元数据服务。
具体的,所述步骤S303中流表规则包括:源IP地址、目的IP地址、协议类型、源端口和目的端口的匹配条件。
具体的,所述步骤S4的具体步骤包括:
步骤S401:接收虚拟机请求,获取虚拟实例ID;
步骤S402:使用数字签名算法对虚拟实例ID和敏感信息进行加密处理,生成加密后的信息,数字签名算法加密的具体公式为:
y=gx modp,
其中,y表示公钥,x表示私钥,g和p为系统参数;
步骤S403:将加密后的数据设置到HTTP请求头的自定义字段;
步骤S404:根据代理规则的要求,解析请求的URL或其他相关字段,以确定目标元数据服务器的地址和端口;
步骤S405:将修改后的HTTP请求根据代理规则指定的目标地址和端口发送给元数据服务器;
步骤S406:接收并处理元数据服务器返回的HTTP响应,完成响应处理后,关闭与元数据服务器的连接。
具体的,所述步骤S5的具体步骤包括:
步骤S501:元数据服务通过监听指定的HTTP端口和URL路径,接收来自客户端的请求;
步骤S502:在接收到的HTTP请求中,提取签名信息;
步骤S503:元数据服务使用数字签名算法对签名内容进行解密;
步骤S504:元数据服务将解密后的字符串与虚拟实例的ID进行比较,以确定HTTP请求是否来自预期的虚拟机实例;
步骤S505:根据比较结果,若HTTP请求来自预期的虚拟机实例,则继续处理请求并返回相应的元数据;若请求来自非预期的虚拟机实例,则返回错误信息或拒绝访问;
步骤S506:元数据服务根据比较结果和处理逻辑对请求进行处理,并生成相应的响应返回给客户端,并记录与每个请求相关的日志。
具体的,所述步骤S504中判断是否来自预期的虚拟机实例的具体步骤包括:
步骤S5041:在OpenvSwich上创建内部端口;
步骤S50412:在计算节点OpenvSwich上分配一个cidr网段,将虚拟实例的源地址按等比例转换为cidr网段中的一个中间地址,并将中间地址作为源地址;
步骤S50413:元数据服务响应虚拟实例的请求,将目的地址为中间地址的数据包根据转换前的等比例关系转换为虚拟实例的fixed IP地址;
步骤S50414:将数据包准确的送到虚拟实例,在计算节点上区分不同虚拟实例的请求。
具体的,基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,包括:网络通信模块、请求解析模块、数字签名验证模块、元数据服务访问模块、响应生成模块、日志记录和监控模块,
所述网络通信模块,负责与虚拟机进行网络通信,包括接收HTTP请求、发送响应操作;
所述请求解析模块,用于对接收到的HTTP请求进行解析,提取出请求头和请求体中的信息;
所述数字签名验证模块,用于对签名信息进行验证,通过数字签名算法将签名内容解密成字符串,并与虚拟实例ID等进行比较,以确认请求的来源和完整性;
所述元数据服务访问模块,负责与元数据服务进行交互,根据请求中的参数和条件访问元数据服务,获取相应的元数据并返回给客户端;
所述响应生成模块,负责根据元数据服务返回的结果生成HTTP响应,包括设置响应头和响应体操作;
所述日志记录和监控模块,用于记录与每个请求相关的日志,包括请求来源、时间戳、请求内容等信息,并对整个过程进行监控,以便及时发现问题并进行处理。
与现有技术相比,本发明的有益效果是:
1.本发明提出基于HTTP协议的本地代理实现虚拟机访问元数据服务的系统,并进行了架构、运行步骤和流程上的优化改进,系统具备流程简单,投资运行费用低廉,生产工作成本低的优点。
2.本发明提出基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,实现了虚拟实例通过HTTP请求访问云平台内部元数据服务,同时将虚拟实例ID信息携带到内部服务,内部服务根据全局虚拟实例ID区分请求是从哪个虚拟实例发送过来的请求,并作出响应,同时虚拟实例ID支持加密。
3.本发明提出基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,虚拟实例访问内部元数据服务的请求从宿主计算节点直接访问内部服务,增强了访问内部服务性能,减少访问时延,同时无需通过网元打通租户网络与基层网络的数据交互访问,减少了云平台建设成本。
附图说明
图1为本发明基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法流程图;
图2为本发明基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法用户在虚拟实例中发送HTTP请求流程图;
图3为本发明基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法同计算节点下不同虚拟实例请求内部元数据服务的转换过程结构图;
图4为本发明基于HTTP协议的本地代理实现虚拟机访问元数据服务的系统架构图;
具体实施方式
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“一号”、“二号”、“三号”仅用于描述目的,而不能理解为指示或暗示相对重要性。下面结合具体实施方式,进一步阐述本发明。
实施例1
请参阅图1-图3,本发明提供的一种实施例:基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,包括以下步骤:
步骤S1:确定元数据服务的接口和数据格式,创建代理服务器并配置虚拟机;
创建代理服务器包括:设置服务器的监听地址、端口、处理传入和传出的HTTP请求和响应。
步骤S2:用户在虚拟实例中发送HTTP请求,源地址为虚拟实例网卡IP;
用户虚拟实例通常指的是在虚拟化技术中,由用户自行创建的虚拟机实例,可以在虚拟化平台上运行,并为用户提供特定的计算、存储和网络资源,用户虚拟实例可能包含一个特定的操作系统、应用程序和相关配置,为用户提供更多的灵活性和控制权,可以根据特定的需求进行定制和配置。本发明通过用户虚拟实例使得用户可以在同一台物理服务器上运行多个虚拟机,且每个虚拟机都可以承载不同的计算任务。
其中,用户在虚拟实例中发送的是可见IP地址的HTTP请求,本技术方案为了屏蔽用户虚拟实例对元数据服务的可见性,设定了用户虚拟实例访问元数据服务的可见IP地址为169.254.169.254,服务端口号为80。
步骤S3:OpenvSwich使用流表做NAT,将HTTP请求的源IP地址和目的IP地址以及端口转换为中间IP地址及端口,将请求从tap_metadata端口发送到本地的HTTP代理服务器;
OpenvSwitch使用流表实现网络地址转换(NetworkAddress Translation,NAT)的概念,NAT是将内部私有IP地址转换为外部公共IP地址的技术,使得内部网络中的主机可以通过NAT与外部网络进行通信。
在NAT应用场景中,OVS使用流表将源IP地址和目的IP地址进行转换,具体来说,OVS通过将源IP地址从内部私有地址转换为外部公共地址,并将目的IP地址从外部公共地址转换为内部私有地址,实现了NAT的功能,这种转换过程对于用户是透明的,用户只需要关注内部的网络通信,而且VS中的NAT转换通常需要与虚拟机管理软件配合使用。
步骤S4:本地HTTP代理服务器将获取的虚拟实例的ID及通过数字签名算法加密后生成的端口信息设置到HTTP请求头,并根据代理规则将请求从本地发送给元数据服务器;
常用的元数据加密和解密方法包括:对称加密算法和公钥密码算法。对于对称加密算法,由于加密和解密使用相同的密钥,因此解密算法也就是加密算法的反向操作,常见的对称加密算法包括高级加密标准(Advanced encryption standard,AES)、数据加密标准(Data Encryption Standard,DES)和三重数据加密算法,它们的解密算法也是对应的反向操作;对于公钥密码算法,由于加密和解密使用不同的密钥,因此需要使用正确的公钥或私钥来进行解密。常见的公钥密码算法包括RSA(Rivest-Shamir-Adleman)、数字签名算法(Digital Signature Algorithm,DSA)和椭圆曲线数字签名算法(Elliptic CurveDigital SignatureAlgorithm,ECDSA),解密算法也是对应的反向操作。
步骤S5:在元数据服务器中,元数据服务接口收到HTTP请求头后,取出签名信息,按数字签名算法将签名内容解密成字符串,并与虚拟实例的ID进行比较,区分虚拟实例。
所述步骤S1中创建代理服务器规则的具体步骤包括:
步骤S101:确定代理服务器类型,打开代理服务器配置文件;
步骤S102:使用正则表达式匹配URL,并将虚拟机的HTTP请求转发到元数据服务;
常见的代理规则定义方式:1)直接指定目标URL:对于RESTfulAPI和SOAP Web服务等具有固定URL的元数据服务,可以在代理规则中直接指定目标URL;2)使用自定义函数或脚本:一些代理服务器支持使用自定义函数或脚本来实现更复杂的代理规则,通过编写函数或脚本,可以实现对请求的自定义处理、认证、路由等操作,并将请求转发到相应的元数据服务;3)使用正则表达式匹配URL:正则表达式可以通过组合不同的元字符、字符类和限定符来匹配复杂的URL模式,从而能够灵活地处理各种不同的URL格式。本发明采用正则表达式匹配URL的方法,匹配速度通常非常快,可以在短时间内处理大量的HTTP请求,具有很好的扩展性,可以轻松地添加新的URL模式或修改现有的模式,还可以有效地防止恶意请求对元数据服务的攻击。
步骤S103:配置请求头和响应处理;
步骤S104:保存配置文件并重启代理服务器以使配置生效,并进行测试和优化。
所述步骤S2的具体步骤包括:
步骤S201:用户在虚拟实例中运行HTTP客户端程序;
步骤S202:用户在HTTP客户端中输入目标URL和POST请求方法,并设置请求头和正文数据;
在基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法中,向虚拟实例中发送HTTP请求时,通常使用GET或POST请求方法。GET请求方法用于向指定的URL发送一个请求,并获取响应的数据,通常用于从元数据服务获取数据,因为请求的结果是一个HTML页面,GET请求会将参数以查询字符串的形式附加在URL后面,并使用“?”符号进行分隔;POST请求方法用于向指定的URL发送一个请求,并提交要处理的数据,通常用于向元数据服务提交数据,因为请求的结果是服务器处理请求后的响应,POST请求将数据包含在请求体中,并使用Content-Type标头来指定数据的格式。
步骤S203:将源地址设置为虚拟实例的网卡IP地址,并指定目标端口。
所述步骤S3中OpenvSwich使用流表做NAT的具体步骤包括:
步骤S301:确定需要访问的元数据服务的接口和数据格式,以及虚拟机使用的操作系统和网络环境;
步骤S302:通过OpenvSwich配置虚拟机网络中的HTTP请求;
OpenvSwich配置虚拟机网络中的HTTP请求的具体过程和步骤如下:1)确定虚拟机的网络配置,包括IP地址、网关;2)配置OpenvSwich;3)配置代理规则;4)测试和调试。
步骤S303:当数据包到达OpenvSwich时,OpenvSwich根据创建流表规则进行匹配,并根据匹配的规则对数据包进行NAT转换;
NAT是一种网络协议,允许在内部网络中使用本地IP地址,当主机需要与外部网络进行通信时,通过NAT协议转换,将其本地地址转换成全局IP地址,以实现与因特网的通信。NAT的转换步骤如下:
(1)当内部网络中的主机需要访问外部网络时,首先会检查是否有需要的数据报要发送或接收;
(2)若需要发送数据报,NAT会在发送数据报之前,将源主机IP地址转换成全球IP地址,目的是让外部网络中的主机能够知道这个数据报是从哪里发来的;
(3)若需要接收数据报,NAT就会在接收数据报时,将目的主机IP地址转换成内部网络中主机的本地IP地址,目的是让内部网络中的主机能够知道这个数据报应该发送到哪里去;
(4)NAT还会同时修改数据报中的端口号,以便将数据报路由到正确的目标;
(5)NAT在完成地址转换后,将修改后的数据报发送到外部网络中。
步骤S304:将虚拟机的HTTP请求转发到元数据服务,进行测试和调试,根据测试结果,对OpenvSwich进行优化和改进,并部署到生产环境。
所述步骤S302的具体步骤包括:
步骤S3021:确定虚拟机网络配置和HTTP代理端口;
步骤S3022:将默认的HTTP代理设置为OpenvSwich的IP地址和代理端口号;
步骤S3023:配置OpenvSwich流表规则以定义将虚拟机的HTTP请求转发到元数据服务的规则;
步骤S3024:配置完成,进行测试以确保OpenvSwich可以正常地将虚拟机的HTTP请求转发到元数据服务。
所述步骤S303中流表规则包括:源IP地址、目的IP地址、协议类型、源端口和目的端口的匹配条件。
所述步骤S4的具体步骤包括:
步骤S401:接收虚拟机请求,获取虚拟实例ID;
步骤S402:使用数字签名算法对虚拟实例ID和敏感信息进行加密处理,生成加密后的信息,数字签名算法加密的具体公式为:
y=gx modp,
其中,y表示公钥,x表示私钥,g和p为系统参数,g为非本原元的做法,以降低其签名文件的长度,p表示素数;
数字签名算法使用公开密钥,为接受者验证数据的完整性和数据发送者的身份,主要包含两个部分:签名和验证,公式为:
S=f(x,H(m),y),
其中,S表示数字签名,H(m)表示哈希值,m表示消息。
步骤S403:将加密后的数据设置到HTTP请求头的自定义字段;
步骤S404:根据代理规则的要求,解析请求的URL或其他相关字段,以确定目标元数据服务器的地址和端口;
步骤S405:将修改后的HTTP请求根据代理规则指定的目标地址和端口发送给元数据服务器;
步骤S406:接收并处理元数据服务器返回的HTTP响应,完成响应处理后,关闭与元数据服务器的连接。
所述步骤S5的具体步骤包括:
步骤S501:元数据服务通过监听指定的HTTP端口和URL路径,接收来自客户端的请求;
步骤S502:在接收到的HTTP请求中,提取签名信息;
步骤S503:元数据服务使用数字签名算法对签名内容进行解密;
步骤S504:元数据服务将解密后的字符串与虚拟实例的ID进行比较,以确定HTTP请求是否来自预期的虚拟机实例;
元数据服务将解密后的字符串与虚拟实例的ID进行比较主要包括:
(1)元数据服务会接收到从代理服务器传来的解密后的字符串;
(2)从解密后的字符串中提取出虚拟实例的ID;
(3)将提取出的虚拟实例ID与元数据服务中存储的虚拟实例ID进行比较;
(4)根据比较结果,确定请求是否来自预期的虚拟机实例;
(5)如果请求来自预期的虚拟机实例,则根据请求中的参数和条件访问元数据服务,获取相应的元数据并返回给代理服务器;如果比较失败,则返回错误信息或拒绝访问;
(6)日志记录和监控。
步骤S505:根据比较结果,若HTTP请求来自预期的虚拟机实例,则继续处理请求并返回相应的元数据;若请求来自非预期的虚拟机实例,则返回错误信息或拒绝访问;
步骤S506:元数据服务根据比较结果和处理逻辑对请求进行处理,并生成相应的响应返回给客户端,并记录与每个请求相关的日志。
所述步骤S504中判断是否来自预期的虚拟机实例的具体步骤包括:
步骤S5041:在OpenvSwich上创建内部端口;
该端口连接了租户网络和计算节点的underlaynetwork的通信。
步骤S50412:在计算节点OpenvSwich上分配一个cidr网段,将虚拟实例的源地址按等比例转换为cidr网段中的一个中间地址,并将中间地址作为源地址;
设置cidr网段号为:128.0.0.0/16,中间地址为:128.0.21.211。中间地址的生成可以根据虚拟实例在OpenvSwich的ofport值转换为中间cidr的位值,因为ofport是在本计算节点能唯一区分虚拟实例,所以生成的中间地址也能够唯一区分虚拟实例。
步骤S50413:元数据服务响应虚拟实例的请求,将目的地址为中间地址的数据包根据转换前的等比例关系转换为虚拟实例的fixed IP地址;
步骤S50414:将数据包准确的送到虚拟实例,在计算节点上区分不同虚拟实例的请求。
实施例2
请参阅图4,本发明提供的另一种实施例:基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,包括:
网络通信模块、请求解析模块、数字签名验证模块、元数据服务访问模块、响应生成模块、日志记录和监控模块,
所述网络通信模块,负责与虚拟机进行网络通信,包括接收HTTP请求、发送响应操作;
所述请求解析模块,用于对接收到的HTTP请求进行解析,提取出请求头和请求体中的信息;
所述数字签名验证模块,用于对签名信息进行验证,通过数字签名算法将签名内容解密成字符串,并与虚拟实例ID等进行比较,以确认请求的来源和完整性;
所述元数据服务访问模块,负责与元数据服务进行交互,根据请求中的参数和条件访问元数据服务,获取相应的元数据并返回给客户端;
所述响应生成模块,负责根据元数据服务返回的结果生成HTTP响应,包括设置响应头和响应体操作;
所述日志记录和监控模块,用于记录与每个请求相关的日志,包括请求来源、时间戳、请求内容等信息,并对整个过程进行监控,以便及时发现问题并进行处理。
以上结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (10)

1.基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,其特征在于,包括:
步骤S1:确定元数据服务的接口和数据格式,创建代理服务器并配置虚拟机;
步骤S2:用户在虚拟实例中发送HTTP请求,源地址为虚拟实例网卡IP;
步骤S3:OpenvSwich使用流表做NAT,将HTTP请求的源IP地址和目的IP地址以及端口转换为中间IP地址及端口,将请求从tap_metadata端口发送到本地的HTTP代理服务器;
步骤S4:本地HTTP代理服务器将获取的虚拟实例的ID及通过数字签名算法加密后生成的端口信息设置到HTTP请求头,并根据代理规则将请求从本地发送给元数据服务器;
步骤S5:在元数据服务器中,元数据服务接口收到HTTP请求头后,取出签名信息,按数字签名算法将签名内容解密成字符串,并与虚拟实例的ID进行比较,区分虚拟实例。
2.如权利要求1所述的基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,其特征在于,所述步骤S1中创建代理服务器规则的具体步骤包括:
步骤S101:确定代理服务器类型,打开代理服务器配置文件;
步骤S102:使用正则表达式匹配URL,并将虚拟机的HTTP请求转发到元数据服务;
步骤S103:配置请求头和响应处理;
步骤S104:保存配置文件并重启代理服务器以使配置生效,并进行测试和优化。
3.如权利要求2所述的基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,其特征在于,所述步骤S2的具体步骤包括:
步骤S201:用户在虚拟实例中运行HTTP客户端程序;
步骤S202:用户在HTTP客户端中输入目标URL和POST请求方法,并设置请求头和正文数据;
步骤S203:将源地址设置为虚拟实例的网卡IP地址,并指定目标端口。
4.如权利要求3所述的基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,其特征在于,所述步骤S3中OpenvSwich使用流表做NAT的具体步骤包括:
步骤S301:确定需要访问的元数据服务的接口和数据格式,以及虚拟机使用的操作系统和网络环境;
步骤S302:通过OpenvSwich配置虚拟机网络中的HTTP请求;
步骤S303:当数据包到达OpenvSwich时,OpenvSwich根据创建流表规则进行匹配,并根据匹配的规则对数据包进行NAT转换;
步骤S304:将虚拟机的HTTP请求转发到元数据服务,进行测试和调试,根据测试结果,对OpenvSwich进行优化和改进,并部署到生产环境。
5.如权利要求4所述的基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,其特征在于,所述步骤S302的具体步骤包括:
步骤S3021:确定虚拟机网络配置和HTTP代理端口;
步骤S3022:将默认的HTTP代理设置为OpenvSwich的IP地址和代理端口号;
步骤S3023:配置OpenvSwich流表规则以定义将虚拟机的HTTP请求转发到元数据服务的规则;
步骤S3024:配置完成,进行测试以确保OpenvSwich可以正常地将虚拟机的HTTP请求转发到元数据服务。
6.如权利要求5所述的基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,其特征在于,所述步骤S303中流表规则包括:源IP地址、目的IP地址、协议类型、源端口和目的端口的匹配条件。
7.如权利要求6所述的基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,其特征在于,所述步骤S4的具体步骤包括:
步骤S401:接收虚拟机请求,获取虚拟实例ID;
步骤S402:使用数字签名算法对虚拟实例ID和敏感信息进行加密处理,生成加密后的信息,数字签名算法加密的具体公式为:
y=gx modp,
其中,y表示公钥,x表示私钥,g和p为系统参数;
步骤S403:将加密后的数据设置到HTTP请求头的自定义字段;
步骤S404:根据代理规则的要求,解析请求的URL或其他相关字段,以确定目标元数据服务器的地址和端口;
步骤S405:将修改后的HTTP请求根据代理规则指定的目标地址和端口发送给元数据服务器;
步骤S406:接收并处理元数据服务器返回的HTTP响应,完成响应处理后,关闭与元数据服务器的连接。
8.如权利要求7所述的基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,其特征在于,所述步骤S5的具体步骤包括:
步骤S501:元数据服务通过监听指定的HTTP端口和URL路径,接收来自客户端的请求;
步骤S502:在接收到的HTTP请求中,提取签名信息;
步骤S503:元数据服务使用数字签名算法对签名内容进行解密;
步骤S504:元数据服务将解密后的字符串与虚拟实例的ID进行比较,以确定HTTP请求是否来自预期的虚拟机实例;
步骤S505:根据比较结果,若HTTP请求来自预期的虚拟机实例,则继续处理请求并返回相应的元数据;若请求来自非预期的虚拟机实例,则返回错误信息或拒绝访问;
步骤S506:元数据服务根据比较结果和处理逻辑对请求进行处理,并生成相应的响应返回给客户端,并记录与每个请求相关的日志。
9.如权利要求8所述的基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,其特征在于,所述步骤S504中判断是否来自预期的虚拟机实例的具体步骤包括:
步骤S5041:在OpenvSwich上创建内部端口;
步骤S50412:在计算节点OpenvSwich上分配一个cidr网段,将虚拟实例的源地址按等比例转换为cidr网段中的一个中间地址,并将中间地址作为源地址;
步骤S50413:元数据服务响应虚拟实例的请求,将目的地址为中间地址的数据包根据转换前的等比例关系转换为虚拟实例的fixed IP地址;
步骤S50414:将数据包准确的送到虚拟实例,在计算节点上区分不同虚拟实例的请求。
10.如权利要求9所述的基于HTTP协议的本地代理实现虚拟机访问元数据服务的方法,其特征在于,包括:网络通信模块、请求解析模块、数字签名验证模块、元数据服务访问模块、响应生成模块、日志记录和监控模块,
所述网络通信模块,负责与虚拟机进行网络通信,包括接收HTTP请求、发送响应操作;
所述请求解析模块,用于对接收到的HTTP请求进行解析,提取出请求头和请求体中的信息;
所述数字签名验证模块,用于对签名信息进行验证,通过数字签名算法将签名内容解密成字符串,并与虚拟实例ID等进行比较,以确认请求的来源和完整性;
所述元数据服务访问模块,负责与元数据服务进行交互,根据请求中的参数和条件访问元数据服务,获取相应的元数据并返回给客户端;
所述响应生成模块,负责根据元数据服务返回的结果生成HTTP响应,包括设置响应头和响应体操作;
所述日志记录和监控模块,用于记录与每个请求相关的日志,包括请求来源、时间戳、请求内容等信息,并对整个过程进行监控,以便及时发现问题并进行处理。
CN202311722372.0A 2023-12-14 2023-12-14 基于http协议的本地代理实现虚拟机访问元数据服务的方法 Pending CN117857527A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311722372.0A CN117857527A (zh) 2023-12-14 2023-12-14 基于http协议的本地代理实现虚拟机访问元数据服务的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311722372.0A CN117857527A (zh) 2023-12-14 2023-12-14 基于http协议的本地代理实现虚拟机访问元数据服务的方法

Publications (1)

Publication Number Publication Date
CN117857527A true CN117857527A (zh) 2024-04-09

Family

ID=90539029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311722372.0A Pending CN117857527A (zh) 2023-12-14 2023-12-14 基于http协议的本地代理实现虚拟机访问元数据服务的方法

Country Status (1)

Country Link
CN (1) CN117857527A (zh)

Similar Documents

Publication Publication Date Title
US10862852B1 (en) Resolution of domain name requests in heterogeneous network environments
US10212173B2 (en) Deterministic reproduction of client/server computer state or output sent to one or more client computers
CN106713320B (zh) 终端数据传输的方法和装置
US9794215B2 (en) Private tunnel network
JP3992579B2 (ja) 鍵交換代理ネットワークシステム
US9237059B2 (en) Method and apparatus for dynamic mapping
US9225721B2 (en) Distributing overlay network ingress information
US20130205040A1 (en) Ensuring symmetric routing to private network
Skowyra et al. Have no phear: Networks without identifiers
CN108632221B (zh) 定位内网中的受控主机的方法、设备及系统
US20200228504A1 (en) Private Exchange of Encrypted Data Over A Computer Network
WO2023035819A1 (zh) 数据加速传输方法、装置、计算机设备和存储介质
CN109639705B (zh) 云平台安全检测方法
JPH11205388A (ja) パケットフィルタ装置、認証サーバ、パケットフィルタリング方法及び記憶媒体
US20200210584A1 (en) Deterministic Reproduction of Client/Server Computer State or Output Sent to One or More Client Computers
US10785147B2 (en) Device and method for controlling route of traffic flow
US9678772B2 (en) System, method, and computer-readable medium
JP4190521B2 (ja) マルチプロトコルアドレス登録方法、マルチプロトコルアドレス登録システム、マルチプロトコルアドレス登録サーバおよびマルチプロトコルアドレス通信端末
JP2019522416A (ja) Dnsリクエストの抑制のためのシステム及び方法
CN117857527A (zh) 基于http协议的本地代理实现虚拟机访问元数据服务的方法
WO2021185314A1 (zh) 数据处理方法及装置
CN113992734A (zh) 会话连接方法及装置、设备
US10637777B2 (en) Address converting device, information processing system, and method of providing service
CN113676540B (zh) 一种连接建立方法及装置
KR20220033195A (ko) 노드 간 암호화 통신을 지원하는 sdn 제어기 및 sdn 제어기의 동작 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination