本发明涉及信息处理领域,尤指一种虚拟机通信系统和虚拟机。
背景技术:
::随着云计算的日益成熟,越来越多的企业开始部署云计算管理平台,用云管平台管理自己的服务器,创建虚拟机,将公司业务迁移上云。云管理平台云海os集成了vmware、xenserver、incloudsphere等不同厂家的虚拟化产品,用统一的界面风格和操作为用户提供了一个大而全的云管理平台。用户在云海os创建了虚拟机,虚拟机的网卡进出数据是没有限制的,即可以随便进出,这样虚拟机是有安全风险的。iptables是linux内核集成的ip信息包过滤系统,每一条iptables规则都可以自定义内容,比如允许哪个协议的数据通过或丢弃,比如来自哪个ip的数据通过或丢弃。虚拟机向外发出数据时,数据到达网卡前,会经过linux内核的网络协议栈,协议栈会调用netfilter模块的各个钩子函数,钩子函数里面就会调用预先设置的iptables规则对数据进行处理,或丢弃、或放行、或修改。同样,虚拟机收到一条数据后,也会被预置的iptables规则处理一遍。这样,我们就可以通过自定义iptables规则,对虚拟机进出数据做控制,比如不允许某些数据进入虚拟机,这样就可以保护虚拟机的安全。ip/mac欺骗是一种常见的网络攻击手段,当有人入侵一台虚拟机,将虚拟机发出的数据包的ip地址或者mac地址修改了,便会造成一种欺骗,让数据接收者以为数据来源是其它的虚拟机,给潜在的危险数据带来可乘之机,让破坏者用ip/mac欺骗的原理对机器实施更大的危害。因此,如何提高虚拟机的安全是亟待解决的问题。技术实现要素:为了解决上述技术问题,本发明提供了一种虚拟机通信系统和虚拟机,能够提供虚拟机的安全。为了达到本发明目的,本发明提供了一种虚拟机通信系统,包括虚拟机环境中的第一路由器和云计算操作系统中的第二路由器以及虚拟机环境下的虚拟机;其中:所述第一路由器,与所述第一网络相连,且配置有第一网卡,其中第一网卡的ip地址为第一网络的网关地址;所述第二路由器,与所述第一网络和第二网络相连,且配置有第二网卡,其中所述第二网卡的ip地址为第二网络的网关地址;其中所述第一网络和所述第二网络属于不同网段;所述虚拟机,包括:获取模块,用于在使用所述第一路由器与所述第二路由器进行数据传输时,获取接收到的报文的ip地址和/或mac地址;识别模块,用于根据获取到的ip地址和/或mac地址以及预先获取的识别策略,识别是否为所述虚拟机传输的报文,得到识别结果;控制模块,用于根据所述识别结果,确定是否继续所述报文。其中,所述系统还具有如下特点:所述第一路由器为linux系统下的名称空间namespace模块。其中,所述系统还具有如下特点:所述第一路由器配置有所述第一网络的路由表;所述第一路由器还用于在接收到的从所述第二网络发送的数据后,根据所述第一网络的路由器,将接收的数据进行发送。其中,所述系统还具有如下特点:所述第二路由器配置有所述第一网络和所述第二网络的路由表;所述第二路由器还用于在接收到的从第二网络发送的数据后,根据所述第一网络的路由表,将接收的数据发送给所述第一路由器;和/或,在接收到从第一网络发送的数据后,根据所述第二网络的路由表,将数据发送给所述第一网络中对应的虚拟机。其中,所述系统还具有如下特点:所述虚拟机还包括:存储模块,用于将所述虚拟机的网卡配置信息写入到虚拟机的iptables表中,作为识别策略。其中,所述系统还具有如下特点:所述识别模块包括:获取单元,用于获取为所述虚拟机配置的网卡的地址信息;比较单元,用于将所述获取到的ip地址和/或mac地址与所述网卡的地址信息进行比较,得到比较结果。其中,所述系统还具有如下特点:所述虚拟机还包括:检测模块,用于检测所述虚拟机的网卡的数量和/或地址信息是否发生变化;更新模块,用于当检测到所述虚拟机的网卡的数量和/或地址信息发生变化后,根据变化后的信息,更新所述虚拟机的识别策略。为了达到本发明目的,本发明还提供了一种虚拟机,应用在上述的系统中,所述虚拟机包括;获取模块,用于在使用所述第一路由器与所述第二路由器进行数据传输时,获取接收到的报文的ip地址和/或mac地址;识别模块,用于根据获取到的ip地址和/或mac地址以及预先获取的识别策略,识别是否为所述虚拟机传输的报文,得到识别结果;控制模块,用于根据所述识别结果,确定是否继续所述报文。其中,所述虚拟机还具有如下特点:所述识别模块包括:获取单元,用于获取为所述虚拟机配置的网卡的地址信息;比较单元,用于将所述获取到的ip地址和/或mac地址与所述网卡的地址信息进行比较,得到比较结果。其中,所述虚拟机还具有如下特点:所述虚拟机还包括:检测模块,用于检测所述虚拟机的网卡的数量和/或地址信息是否发生变化;更新模块,用于当检测到所述虚拟机的网卡的数量和/或地址信息发生变化后,根据变化后的信息,更新所述虚拟机的识别策略。本发明提供的实施例,通过为第一网络的虚拟机配置专用的虚拟路由,通过该虚拟路由与第二路由器进行通信,实现将第一网络中的数据传输到不同网段的虚拟机,再对传输的报文的ip地址和/或mac地址进行识别,让数据接收者确认数据来源,让破坏者无法用ip/mac欺骗的原理对机器实施更大的危害,提高虚拟机的安全。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。图1为本发明提供的虚拟机通信系统的结构图;图2为本发明提供的虚拟机的结构图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。图1为本发明提供的虚拟机通信系统的结构图。图1所示系统包括虚拟机环境中的第一路由器和云计算操作系统中的第二路由器以及虚拟机环境下的虚拟机;其中:所述第一路由器,与所述第一网络相连,且配置有第一网卡,其中第一网卡的ip地址为第一网络的网关地址;所述第二路由器,与所述第一网络和第二网络相连,且配置有第二网卡,其中所述第二网卡的ip地址为第二网络的网关地址;其中所述第一网络和所述第二网络属于不同网段;所述虚拟机,包括:获取模块,用于在使用所述第一路由器与所述第二路由器进行数据传输时,获取接收到的报文的ip地址和/或mac地址;识别模块,用于根据获取到的ip地址和/或mac地址以及预先获取的识别策略,识别是否为所述虚拟机传输的报文,得到识别结果;控制模块,用于根据所述识别结果,确定是否继续所述报文。在上述系统中,在云海os创建两个网络net1和net2,net1的网段和网关分别是100.1.1.0/24及100.1.1.1,net2的网段和网关分别是100.2.2.0/24及100.2.2.1;其中,net1中包括虚拟机vm1,net2中包括虚拟机vm2,两个虚拟机均配置有对应的ip地址,但由于二者不属于相同的网段,二者是不通的;在vmware环境上,创建一个虚拟路由器,即第一路由器,为该第一路由器添加网卡1,其ip地址为net1的网关地址100.1.1.1;在云海os创建第二路由器,配置该第二路由器选择连接的网络为net1和net2;添加网卡2,其ip地址为net2的网关地址100.2.2.1;最后,为第一路由器和第二路由器添加两个网络对应的路由表。借助第一路由器和第二路由器便连通了net1和net2,作用和物理路由器一样。这时vm1和vm2就能够进行通信。在实现通信后,为减少net1中虚拟机传输的报文的安全性,对传输的报文的ip地址和/或mac地址进行识别,让数据接收者确认数据来源,让破坏者无法用ip/mac欺骗的原理对机器实施更大的危害,从而提高虚拟机的安全。本发明提供的系统实施例,通过为第一网络的虚拟机配置专用的虚拟路由,通过该虚拟路由与第二路由器进行通信,实现将第一网络中的数据传输到不同网段的虚拟机,再对传输的报文的ip地址和/或mac地址进行识别,让数据接收者确认数据来源,让破坏者无法用ip/mac欺骗的原理对机器实施更大的危害,提高虚拟机的安全。下面对本发明提供的方法作进一步说明:vmware里,二层网络的功能是通过虚拟交换机实现的。虚拟交换机和物理交换机类似,上面有很多端口(组),虚拟机通过连接端口组连到虚拟交换机上。一个虚拟交换机上的虚拟机可以进行二层通信。但这仅仅是二层通信,如果虚拟机网段不同,就无法直接通信,必须借助路由器。下面对如何建立通信作以说明:其中,所述第一路由器为linux系统下的名称空间namespace模块。具体的,linuxnetworknamespace是linux内核的一个功能。它具备物理路由器所具备的元素,能够实现路由器功能,因此在虚拟化中,可以将namespace作为虚拟路由器的载体。linuxnetworknamespace是一个独立的网络命名空间,它是linux内核的一个功能。linux下有很多全局系统资源,在一个主机中创建多个namespace,可隔离全局系统资源。从网络的视角来看,一个namespace提供了一份独立的网络协议栈(网络设备接口、iproute、iptables、sockets等)。一个路由器要完成路由转发功能,需要三个元素:可以增删网卡、可以保存路由表、可以转发ip报文。而namespace天然支持这三个功能,所以可以将namespace作为虚拟化网络里路由器的载体。vmware里,二层网络的功能是通过虚拟交换机实现的。虚拟交换机和物理交换机类似,上面有很多端口(组),虚拟机通过连接端口组连到虚拟交换机上。一个虚拟交换机上的虚拟机可以进行二层通信。但这仅仅是二层通信,如果虚拟机网段不同,就无法直接通信,必须借助路由器。为实现两个不同网段的虚拟机的正常通信,还需要路由器配置对应的路由表,借助路由表将数据发送给对应的虚拟机,具体说明如下:所述第一路由器,负责对第一网络的虚拟机进行数据传输;具体的,所述第一路由器配置有所述第一网络的路由表;所述第一路由器还用于在接收到的从所述第二网络发送的数据后,根据所述第一网络的路由器,将接收的数据进行发送。所述第二路由器,负责对第一网络中的第一路由器进行通信以及将与第二网络的虚拟机进行数据传输;具体的,所述第二路由器配置有所述第一网络和所述第二网络的路由表;所述第二路由器还用于在接收到的从第二网络发送的数据后,根据所述第一网络的路由表,将接收的数据发送给所述第一路由器;和/或,在接收到从第一网络发送的数据后,根据所述第二网络的路由表,将数据发送给所述第一网络中对应的虚拟机。由上可以看出,路由器间的传输方式,以及各路由器在传输过程中的角色,通过上述分工,能够有效保障数据的顺畅传输,实现不同网段间虚拟机的数据传输。进一步的,为节省硬件成本,提升系统的高集成性,采用linux系统内核的namespace作为虚拟化路由器的载体,将namespace模块集成与第二路由器上,在基于vmware的二层网络实现虚拟路由器的功能的前提下,将第一路由器的功能与第二路由器集成在一起,节省硬件成本,提升系统的高集成性,且,实现简单且传输效率高。在实现不同网段的虚拟机通信后,下面对说明如何灵活限制虚拟机进出流量的方法进行说明:本发明所使用的识别策略是通过使用虚拟机的linux系统中的iptables工具来实现的,在借用已有工具的前提下,实现限制报文进出的目的。在本发明提供的一个实施例中,所述虚拟机还包括:存储模块,用于将所述虚拟机的网卡配置信息写入到虚拟机的iptables表中,作为识别策略。具体的,云海os集成了vmware虚拟化平台,网络方面,vmware内只有由虚拟交换机构建起来的二层网络,虚拟机连接到虚拟交换机上,实现二层通信。本发明在虚拟机和交换机之间添加一个linuxbridge,该linuxbridge可以添加iptables规则,进出虚拟机的数据都需要经过该linuxbridge上的iptables规则,并被处理。默认情况下,虚拟机所对应的linuxbridge上没有iptables规则。虚拟机的数据随意进出。为了防止ip/mac欺骗,可以添加一条规则,只允许ip为本机ip,mac为本机mac的数据流出,这样就防止了ip/mac欺骗。但是完全限制了ip和mac又满足不了一些数据流通的特定需求,这时候就需要加可用地址对。其中,所述识别模块包括:获取单元,用于获取为所述虚拟机配置的网卡的地址信息;比较单元,用于将所述获取到的ip地址和/或mac地址与所述网卡的地址信息进行比较,得到比较结果。具体的,在识别过程中,主要是将报文的ip地址和/或mac地址与本地的网卡的配置信息进行比较,确认是否一致;其中,对于虚拟机接收到的报文,将该报文的目的地址的描述信息提取出来与虚拟机的ip地址/或mac地址进行比较,如果一致,则表示该报文是发送给自己的,还可以进一步判断是否允许该虚拟机发送给自己,即判断源地址是否符合对应的地址规则;如果该报文的源地址在该报文允许接收的虚拟机的地址中,则接收该报文,否则,丢弃该报文。其中,对于虚拟机要发送的报文,将将该报文的源地址的描述信息提取出来与虚拟机的ip地址/或mac地址进行比较,如果一致,则表示该报文是自己发送的,可直接发送,如果不是,还可以进一步判断是否允许该虚拟机转发其他虚拟机发送给自己的报文,即判断源地址是否符合对应的地址规则;如果该报文的源地址在该报文允许接收的虚拟机的地址中,则继续转发该报文,否则,丢弃该报文。在实际应用中,如果用户另有需求,比如添加了多块网卡,或者临时修改了虚拟机的ip,那仅有这一条规则就不够了,需要再创建一个“可用地址对”,其中,可用地址对,也是iptables规则。比如虚拟机新增了两个网卡,那就在云海os创建两个可用地址对,每个地址对对应一条规则:允许某个ip和mac的数据通过。这样就能灵活限制流出虚拟机的数据。为了更加精准的管理虚拟机的网卡的地址信息,所述虚拟机还包括:检测模块,用于检测所述虚拟机的网卡的数量和/或地址信息是否发生变化;更新模块,用于当检测到所述虚拟机的网卡的数量和/或地址信息发生变化后,根据变化后的信息,更新所述虚拟机的识别策略。具体的,在控制报文进出虚拟机时,识别策略的制定是依照虚拟机的网卡信息来实现的,因此,需要检测网卡的信息是否发生变化,并在发生变化时及时对识别策略进行更新,以保证报文控制的精确性。下面以本发明提供的应用实例对本发明提供的方法作进一步说明:本发明应用实例提供一种保护虚拟机网络安全的方法,其具体实施过程如下:(1)在云海os创建一个虚拟机;(2)创建完虚拟机时,在vmware底层创建一个linuxbridge,并将虚拟机的网卡连接到linuxbridge上,linuxbridge再连到交换机;(3)将ip/mac防欺骗作为虚拟机的默认配置。即创建完虚拟机,就在其对应的linuxbridge上添加一条规则:只允许本机的ip和mac地址通过虚拟机。这样就限制了流出虚拟机的数据,防止ip/mac欺骗。(4)如果用户另有需求,比如添加了多块网卡,或者临时修改了虚拟机的ip,那仅有这一条规则就不够了,需要再创建一个“可用地址对”。(5)可用地址对的本质,也是iptables规则。比如虚拟机新增了两个网卡,那就在云海os创建两个可用地址对,每个地址对对应一条规则:允许某个ip和mac的数据通过。这样就能灵活限制流出虚拟机的数据。本发明通过使用iptables工具,在基于vmware的云管理平台上,实现了防ip/mac欺骗和可用地址对的功能。具体说就是通过为虚拟机创建linuxbridge并自定义iptables规则,限制流出虚拟机的数据。本发明应用实例提供的方法,在vmware二层网络的基础上集成linuxbridge和iptables规则,为虚拟机默认配置防ip/mac欺骗的规则,并添加可用地址对功能,让数据接收者确认数据来源,让破坏者无法用ip/mac欺骗的原理对机器实施更大的危害,提高虚拟机的安全。图2为本发明提供的虚拟机的结构图。图2所示虚拟机应用在图1所示系统中,包括:获取模块201,用于在使用所述第一路由器与所述第二路由器进行数据传输时,获取接收到的报文的ip地址和/或mac地址;识别模块202,用于根据获取到的ip地址和/或mac地址以及预先获取的识别策略,识别是否为所述虚拟机传输的报文,得到识别结果;控制模块203,用于根据所述识别结果,确定是否继续所述报文。在本发明提供的一个虚拟机实施例中,所述识别模块202包括:获取单元,用于获取为所述虚拟机配置的网卡的地址信息;比较单元,用于将所述获取到的ip地址和/或mac地址与所述网卡的地址信息进行比较,得到比较结果。在本发明提供的一个虚拟机实施例中,所述虚拟机还包括:检测模块,用于检测所述虚拟机的网卡的数量和/或地址信息是否发生变化;更新模块,用于当检测到所述虚拟机的网卡的数量和/或地址信息发生变化后,根据变化后的信息,更新所述虚拟机的识别策略。本发明涉及云计算数据中心
技术领域:
:中一种保护虚拟机网络安全的方法。本发明提供的虚拟机实施例,在不同网段的虚拟机通信时,对传输的报文的ip地址和/或mac地址进行识别,让数据接收者确认数据来源,让破坏者无法用ip/mac欺骗的原理对机器实施更大的危害,提高虚拟机的安全。本领域普通技术人员可以理解上述实施例的全部或部分步骤可以使用计算机程序流程来实现,所述计算机程序可以存储于一计算机可读存储介质中,所述计算机程序在相应的硬件平台上(如系统、设备、装置、器件等)执行,在执行时,包括方法实施例的步骤之一或其组合。可选地,上述实施例的全部或部分步骤也可以使用集成电路来实现,这些步骤可以被分别制作成一个个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。上述实施例中的各装置/功能模块/功能单元可以采用通用的计算装置来实现,它们可以集中在单个的计算装置上,也可以分布在多个计算装置所组成的网络上。上述实施例中的各装置/功能模块/功能单元以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。上述提到的计算机可读取存储介质可以是只读存储器,磁盘或光盘等。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域:
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。当前第1页12当前第1页12