CN116527494B - 基于虚拟网卡克隆的靶场虚拟机网络初始化方法与系统 - Google Patents
基于虚拟网卡克隆的靶场虚拟机网络初始化方法与系统 Download PDFInfo
- Publication number
- CN116527494B CN116527494B CN202310813659.8A CN202310813659A CN116527494B CN 116527494 B CN116527494 B CN 116527494B CN 202310813659 A CN202310813659 A CN 202310813659A CN 116527494 B CN116527494 B CN 116527494B
- Authority
- CN
- China
- Prior art keywords
- mac address
- virtual machine
- container
- network card
- 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.)
- Active
Links
- 238000010367 cloning Methods 0.000 title claims abstract description 15
- 238000011423 initialization method Methods 0.000 title claims abstract description 10
- 238000006243 chemical reaction Methods 0.000 claims abstract description 21
- 238000000034 method Methods 0.000 claims description 13
- 230000002159 abnormal effect Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 101000652292 Homo sapiens Serotonin N-acetyltransferase Proteins 0.000 description 1
- 102100030547 Serotonin N-acetyltransferase Human genes 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0806—Configuration setting for initial configuration or provisioning, e.g. plug-and-play
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/084—Configuration by using pre-existing information, e.g. using templates or copying from other elements
- H04L41/0846—Configuration by using pre-existing information, e.g. using templates or copying from other elements based on copy from other elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2596—Translation of addresses of the same type other than IP, e.g. translation from MAC to MAC addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/622—Layer-2 addresses, e.g. medium access control [MAC] addresses
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了基于虚拟网卡克隆的靶场虚拟机网络初始化方法与系统,本发明中云平台创建网络靶场场景的虚拟机或容器实例时,从镜像关联的元数据中获取虚拟网卡的MAC地址,作为虚拟机或容器实例的虚拟网卡内部MAC地址,同时随机生成并保存新的外部MAC地址;其中内部MAC地址与原始虚拟机或容器的虚拟网卡的MAC地址相同,基于同一镜像创建的不同实例,具有相同的内部MAC地址,不同的外部MAC地址;在虚拟机或容器实例所在宿主机的二层交换设备上,添加MAC地址转换规则,以实现内部MAC地址与外部MAC地址的转换。本发明不依赖于虚拟机初始化软件,避免了修改虚拟网卡配置信息导致的服务不可用、网络异常等问题。
Description
技术领域
本发明涉及一种基于虚拟网卡克隆的靶场虚拟机网络初始化方法与系统,属于网络安全技术领域。
背景技术
网络靶场是一种基于云平台(虚拟化技术)模拟真实网络空间的技术或产品,用来进行与网络安全相关的学习、研究、演习等任务。每一个靶场场景,都包含一个模拟真实网络空间的网络拓扑图,拓扑图由节点和连接组成。
与现实网络一样,网络拓扑中的节点分为终端节点(如办公电脑、打印机)和网络设备节点(如交换机、路由器)。不论是哪种节点,都需要由场景制作人员提前制作虚拟机镜像、搭建拓扑并进行必要的修改和调试。
以一个Windows操作系统的办公电脑虚拟机为例。在安装完虚拟机操作系统之后,需要创建用户,配置IP地址和主机名,修改防火墙,开启远程桌面等。但是,即便这些设置在制作镜像的过程中已经更改妥当,在用镜像创建新的虚拟机之后,因为环境发生变化,某些设置需要重新更改,比如IP地址和主机名。
为了更加方便地实现这些操作,开源社区为各大云平台(AWS、OpenStack等)开发了虚拟机初始化软件(Cloud-init和Cloudbase-init)。在制作虚拟机镜像的过程中,需要将这些软件安装到虚拟机中,并根据需要对所需的功能进行设置。后续利用这个已经安装初始化软件的虚拟机镜像创建的新的虚拟机,在初次启动过程中,会按照设定逐一地执行一系列对新虚拟机的更改操作,在不需要人工介入的前提下,使虚拟机进入可用状态。
云平台的虚拟机初始化软件主要目的是实现云主机的初始化。传统的云平台更关注应用,而网络靶场更加侧重仿真。在网络靶场的实践过程中,遇到这样的问题:1、虚拟机初始化软件会尝试修改新创建的Windows虚拟机的IP地址、MAC地址、主机名等,这些信息发生变化,可能导致域控服务、DNS等服务不可用,需要重新修改。2、Windows虚拟机内系统认为网络发生变化,弹出防火墙的网络选择对话框,若未选择,则可能影响网络连通性。
发明内容
发明目的:针对上述现有技术存在的问题,本发明目的在于提供一种基于虚拟网卡克隆的靶场虚拟机网络初始化方法与系统,避免修改原始虚拟机的虚拟网卡配置信息导致的服务不可用、网络异常等问题。
技术方案:为实现上述发明目的,本发明采用如下技术方案:
基于虚拟网卡克隆的靶场虚拟机网络初始化方法,包括如下步骤:
云平台的计算服务创建网络靶场场景的虚拟机或容器实例时,从镜像关联的元数据中获取虚拟网卡的MAC地址,作为虚拟机或容器实例的虚拟网卡内部MAC地址,同时随机生成新的外部MAC地址,并保存到与虚拟机或容器实例关联的网络靶场数据库中;所述内部MAC地址与制作镜像的原始虚拟机或容器的虚拟网卡的MAC地址相同,基于同一镜像创建的不同虚拟机或容器实例,具有相同的内部MAC地址,不同的外部MAC地址;
在虚拟机或容器实例所在宿主机的二层交换设备上,添加MAC地址转换规则,以实现虚拟机或容器实例的内部MAC地址与外部MAC地址的转换。
作为优选,虚拟机或容器的镜像元数据配置有原始虚拟机或容器的虚拟网卡的总线类型、设备位置、网卡型号和MAC地址;在基于镜像创建虚拟机或容器实例时,总线类型、设备位置、网卡型号和MAC地址,从镜像元数据中获取,与原始虚拟机的保持相同。
作为优选,宿主机采用Linux网桥作为二层交换设备时,在网桥上增加ebtables规则以转换MAC地址:对于流入虚拟机或容器的报文,如果目的MAC地址是虚拟机或容器外部MAC地址,则执行DNAT操作,将目的MAC地址转换为虚拟机或容器内部MAC地址;对于从虚拟机或容器流出的报文,如果源MAC地址是虚拟机或容器内部MAC地址,则执行SNAT操作,将源MAC地址转换为虚拟机或容器外部MAC地址。
作为优选,宿主机采用Open vSwitch作为二层交换设备时,在Open vSwitch上增加OpenFlow规则以转换MAC地址:对于流入虚拟机或容器的报文,如果目的MAC地址是虚拟机或容器外部MAC地址,则执行修改目的MAC地址的操作,将目的MAC地址转换为虚拟机或容器内部MAC地址;对于从虚拟机或容器流出的报文,如果源MAC地址是虚拟机或容器内部MAC地址,则执行修改源MAC地址的操作,将源MAC地址转换为虚拟机或容器外部MAC地址。
基于虚拟网卡克隆的靶场虚拟机网络初始化系统,包括:
虚拟网卡初始化模块,用于云平台的计算服务创建网络靶场场景的虚拟机或容器实例时,从镜像关联的元数据中获取虚拟网卡的MAC地址,作为虚拟机或容器实例的虚拟网卡内部MAC地址,同时随机生成新的外部MAC地址,并保存到与虚拟机或容器实例关联的网络靶场数据库中;所述内部MAC地址与制作镜像的原始虚拟机或容器的虚拟网卡的MAC地址相同,基于同一镜像创建的不同虚拟机或容器实例,具有相同的内部MAC地址,不同的外部MAC地址;
以及转换规则配置模块,用于在虚拟机或容器实例所在宿主机的二层交换设备上,添加MAC地址转换规则,以实现虚拟机或容器实例的内部MAC地址与外部MAC地址的转换。
有益效果:本发明通过在镜像的元数据中记录虚拟网卡的信息,用镜像创建虚拟机或容器实例时,依据镜像元数据来设定虚拟网卡的各项信息;同时根据二层交换技术添加相应的规则对MAC地址进行转换。与现有技术相比,本发明方案中虚拟机内部的虚拟网卡配置信息与原始虚拟机一致,解决了网络靶场场景中的虚拟机出现的一部分网络不通、域控、DNS等服务不可用的问题。基于该新的虚拟机网络初始化方案,可以在制作镜像的原始虚拟机或容器中预先部署并配置仿真场景必要的软件服务,网络初始化不依赖于云平台的初始化软件,简化了靶场场景搭建的步骤。
附图说明
图1为本发明实施例的原理示意图。
图2为本发明实施例中通过Linux网桥进行MAC地址转换的示意图。
图3为本发明实施例中通过OVS进行MAC地址转换的示意图。
具体实施方式
下面将结合附图和具体实施例,对本发明的技术方案进行清楚、完整的描述。
为了解决网卡信息发生变化带来的问题,本发明实施例公开一种基于虚拟网卡克隆的靶场虚拟机网络初始化方法,主要包括镜像制作、虚拟机实例化和地址转换配置几个方面。
首先,在制作虚拟机镜像的过程中,需要记录虚拟网卡的详细信息。以往云平台对于虚拟网卡的记录的信息非常少,大多数情况下不记录,而是在创建虚拟机实例的时候根据云平台的全局设置确定固定的虚拟网卡型号、物理地址等参数。虚拟网卡的详细信息包括:1. 总线类型(例如pci、usb);2. 设备位置(例如2d:00.0);3. 网卡型号(例如rtl8139);4. 网卡MAC地址(例如fe:1f:db:98:72:df);上述信息以镜像元数据的形式存储。镜像元数据是一组与特定镜像关联的键值对,由云平台的镜像服务负责管理。典型的示例如下,通过POST方法设置镜像元数据:
POST /images/738dcf1bd15147c69c4ea2c5ad134048/meta
Content-Type: application/json
{
“vif_bus”: “pci”,
“vif_location”: “2d:00.0”,
“vif_model”: “rtl8139”,
“vif_mac”: “fe:1f:db:98:72:df”,
}
通过GET方法查询元数据:
GET /images/738dcf1bd15147c69c4ea2c5ad134048/meta
HTTP/1.1 200 OK
Content-Type: application/json
{
“vif_bus”: “pci”,
“vif_location”: “2d:00.0”,
“vif_model”: “rtl8139”,
“vif_mac”: “fe:1f:db:98:72:df”,
}
接下来,云平台的计算服务负责创建虚拟机。创建虚拟机之前,会从镜像服务中查询元数据。从镜像元数据中获取总线类型、设备位置、网卡型号和MAC地址,使其与原始虚拟机的保持相同(以往由平台设置、动态分配或随机生成,如总线类型有设置决定、设备位置动态分配、MAC地址随机生成等)。从镜像元数据中获取的MAC地址,称为内部MAC地址。顾名思义,内部MAC地址仅在这个即将创建虚拟机内部可见。
以下是新创建的虚拟机的虚拟网卡的描述信息,其中加粗的“52:54:00:f1:db:de”、“rtl8139”、“pci”“0x00”等来自镜像元数据。
<interface type='network'>
<mac address='52:54:00:f1:db:de'/>
<source network='default'/>
<target dev='vnet0'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03'function='0x0'/>
</interface>
以下是用相同镜像创建的另一个虚拟机的虚拟网卡的描述信息:
<interface type='network'>
<mac address='52:54:00:f1:db:de'/>
<source network='default'/>
<target dev='vnet1'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03'function='0x0'/>
</interface>
由此可见,对于使用同一个镜像创建的多个虚拟机,上述标出的信息都是相同的,包括MAC地址。网卡信息中的target dev配置的虚拟网卡名称自动生成,能够区分不同的虚拟网卡。为了使这些虚拟机能够正常地与外部通信,我们依然需要为他们随机生成新的MAC地址,这些MAC地址称为外部MAC地址。图1示意了用同一个镜像创建了两个虚拟机的虚拟网卡连接方式。两个虚拟网卡的内部MAC地址相同,但外部MAC地址不同。于是从交换设备和同一个二层网络中的其它节点来看,每一个虚拟机都有一个唯一的、合格的MAC地址。上述为虚拟机实例随机生成的外部MAC地址,以及虚拟网卡名称会记录在数据库中。
为了能够建立内部MAC地址与外部MAC地址的转换关系,我们需要在宿主机上对虚拟机的虚拟网卡做一些调整。
如图2所示,假如宿主机采用Linux网桥作为二层交换设备,那么我们在网桥上增加ebtables规则以转换MAC地址。
ebtables是一个能够对Linux系统网络数据包进行过滤和修改的用户空间工具,它可以在以太网帧头部分执行基于MAC地址的过滤。对于其中的流入方向的报文,即输入网卡不是虚拟机的虚拟网卡的报文,如果目的MAC地址是虚拟机外部MAC地址,那么执行DNAT操作,将目的MAC地址转换为虚拟机内部MAC地址。指令如下:
ebtables -t nat -A PREROUTING -i ! "虚拟网卡名称" -d "外部MAC地址" -jdnat --to-destination "内部MAC地址"
其中:
-i ! "虚拟网卡名称" 表示匹配不是从这个虚拟网卡接收的报文,即从其它网卡接收的、发往虚拟机的报文。
-d "外部MAC地址" 表示匹配目的MAC地址是虚拟网卡的外部MAC地址的报文,不匹配广播和多播报文。
-j dnat --to-destination "内部MAC地址" 表示对匹配的报文修改其目的MAC地址为内部MAC地址。
对于流出方向的报文,即输入网卡是虚拟机的虚拟网卡的报文,如果源MAC地址是虚拟机内部MAC地址,那么执行SNAT操作,将源MAC地址转换为虚拟机外部MAC地址。指令如下:
ebtables -t nat -A PREROUTING -i "虚拟网卡名称" -j snat --to-source "外部MAC地址" --snat-arp
其中:
-i "虚拟网卡名称" 表示匹配从虚拟网卡接收的报文。
-j snat --to-source "外部MAC地址" 表示对匹配的报文修改其源MAC地址为外部MAC地址。
--snat-arp 表示如果是ARP报文,那么对ARP头中的源MAC地址一并修改成外部MAC地址。
如图3所示,假如宿主机采用Open vSwitch作为二层交换设备,那么我们在vSwitch上增加OpenFlow规则以转换MAC地址。
OpenFlow规则支持匹配报文的端口号和任意协议字段,并对这个报文执行转发、丢弃、修改操作。对于其中的流入方向的报文,即输入网卡不是虚拟机的虚拟网卡的报文,如果目的MAC地址是虚拟机外部MAC地址,那么执行修改目的MAC地址的操作,将目的MAC地址转换为虚拟机内部MAC地址。指令如下:
ovs-ofctl add-flow vSwitch dl_dst="外部MAC地址",actions=mod_dl_dst: "内部MAC地址",output: "虚拟网卡名称"
其中:
dl_dst="外部MAC地址",表示匹配目的MAC地址是外部MAC地址的报文,即发往虚拟机的报文;
mod_dl_dst: "内部MAC地址",表示修改报文中的目的MAC地址为内部MAC地址;
output: "虚拟网卡名称",表示转发到这个虚拟网卡。
对于流出方向的报文,即输入网卡是虚拟机的虚拟网卡的报文,如果源MAC地址是虚拟机内部MAC地址,那么执行修改源MAC地址的操作,将源MAC地址转换为虚拟机外部MAC地址。这里需要两条指令。指令1:
ovs-ofctl add-flow vSwitch priority=30,in_port="虚拟网卡名称",arp,actions=mod_dl_src: "外部MAC地址", set_field: "外部MAC地址"->arp_sha,normal
其中:
priority=30,表示此规则的优先级,高于指令2的规则的优先级;
in_port="虚拟网卡名称",arp,表示匹配从虚拟网卡收到的ARP报文;
mod_dl_src: "外部MAC地址",表示修改以太网头的源MAC地址为外部MAC地址;
set_field: "外部MAC地址"->arp_sha,表示修改ARP头的源MAC地址为外部MAC地址;
normal,表示在上述修改之后正常转发。
指令2:
ovs-ofctl add-flow vSwitch priority=10,in_port="虚拟网卡名称",actions=mod_dl_src: "外部MAC地址",normal
其中:
priority=10,表示此规则的优先级,低于指令1的规则的优先级;
in_port="虚拟网卡名称",表示匹配从虚拟网卡收到的非ARP报文(因为优先级较低,所以匹配不到ARP报文)。
对于虚拟机启用了DHCP的情况。由于数据库中记录的是外部MAC地址,是随机生成的、合格的MAC地址,DHCP服务能够在数据库为这个外部MAC地址分配一个IP地址。当虚拟机发出DHCP请求时,请求报文经过Linux网桥或者Open vSwitch,源MAC地址由内部MAC地址替换成外部MAC地址,正好与数据库中记录的MAC地址相同,因此DHCP服务回复一个正常的DHCP响应报文,但这个响应报文的目的MAC地址是虚拟机的外部MAC地址。DHCP响应报文经过Linux网桥或者Open vSwitch,目的MAC地址由虚拟机的外部MAC地址转换成内部MAC地址。最终虚拟机收到一个以自身MAC地址为目的地址的DHCP响应报文,完成IP地址的动态分配流程。
以上主要围绕虚拟机介绍了虚拟网卡克隆方法,本方法同样适用容器,对于采用Linux网桥或者Open vSwitch作为网络交换设备,容器的MAC地址转换配置方法一致,不再赘述。
基于相同的发明构思,本发明实施例公开的一种基于虚拟网卡克隆的靶场虚拟机网络初始化系统,主要包括虚拟网卡初始化模块以及转换规则配置模块。虚拟网卡初始化模块,用于云平台的计算服务创建网络靶场场景的虚拟机或容器实例时,从镜像关联的元数据中获取虚拟网卡的MAC地址,作为虚拟机或容器实例的虚拟网卡内部MAC地址,同时随机生成新的外部MAC地址,并保存到与虚拟机或容器实例关联的网络靶场数据库中;所述内部MAC地址与制作镜像的原始虚拟机或容器的虚拟网卡的MAC地址相同,基于同一镜像创建的不同虚拟机或容器实例,具有相同的内部MAC地址,不同的外部MAC地址;转换规则配置模块,用于在虚拟机或容器实例所在宿主机的二层交换设备上,添加MAC地址转换规则,以实现虚拟机或容器实例的内部MAC地址与外部MAC地址的转换。上述模块功能的具体实现参见前述方法实施例,不再赘述。
Claims (10)
1.基于虚拟网卡克隆的靶场虚拟机网络初始化方法,其特征在于,包括如下步骤:
云平台的计算服务创建网络靶场场景的虚拟机或容器实例时,从镜像关联的元数据中获取虚拟网卡的MAC地址,作为虚拟机或容器实例的虚拟网卡内部MAC地址,同时随机生成新的外部MAC地址,并保存到与虚拟机或容器实例关联的网络靶场数据库中;所述内部MAC地址与制作镜像的原始虚拟机或容器的虚拟网卡的MAC地址相同,基于同一镜像创建的不同虚拟机或容器实例,具有相同的内部MAC地址,不同的外部MAC地址;
在虚拟机或容器实例所在宿主机的二层交换设备上,添加MAC地址转换规则,以实现虚拟机或容器实例的内部MAC地址与外部MAC地址的转换。
2.根据权利要求1所述的基于虚拟网卡克隆的靶场虚拟机网络初始化方法,其特征在于,虚拟机或容器的镜像元数据配置有原始虚拟机或容器的虚拟网卡的总线类型、设备位置、网卡型号和MAC地址;在基于镜像创建虚拟机或容器实例时,总线类型、设备位置、网卡型号和MAC地址,从镜像元数据中获取,与原始虚拟机的保持相同。
3.根据权利要求1所述的基于虚拟网卡克隆的靶场虚拟机网络初始化方法,其特征在于,宿主机采用Linux网桥作为二层交换设备时,在网桥上增加ebtables规则以转换MAC地址:对于流入虚拟机或容器的报文,如果目的MAC地址是虚拟机或容器外部MAC地址,则执行DNAT操作,将目的MAC地址转换为虚拟机或容器内部MAC地址;对于从虚拟机或容器流出的报文,如果源MAC地址是虚拟机或容器内部MAC地址,则执行SNAT操作,将源MAC地址转换为虚拟机或容器外部MAC地址。
4. 根据权利要求3所述的基于虚拟网卡克隆的靶场虚拟机网络初始化方法,其特征在于,ebtables规则的具体指令为:
ebtables -t nat -A PREROUTING -i ! "虚拟网卡名称" -d "外部MAC地址" -jdnat --to-destination "内部MAC地址"
ebtables -t nat -A PREROUTING -i "虚拟网卡名称" -j snat --to-source "外部MAC地址" --snat-arp
其中:-i ! "虚拟网卡名称"表示不是从对应虚拟网卡接收的报文,-i "虚拟网卡名称"表示从对应虚拟网卡接收的报文;-d "外部MAC地址" 表示匹配目的MAC地址是虚拟网卡的外部MAC地址的报文;-j dnat --to-destination "内部MAC地址" 表示对匹配的报文修改其目的MAC地址为内部MAC地址;-j snat --to-source "外部MAC地址" 表示对匹配的报文修改其源MAC地址为外部MAC地址;--snat-arp 表示如果是ARP报文,那么对ARP头中的源MAC地址一并修改成外部MAC地址。
5. 根据权利要求1所述的基于虚拟网卡克隆的靶场虚拟机网络初始化方法,其特征在于,宿主机采用Open vSwitch作为二层交换设备时,在Open vSwitch上增加OpenFlow规则以转换MAC地址:对于流入虚拟机或容器的报文,如果目的MAC地址是虚拟机或容器外部MAC地址,则执行修改目的MAC地址的操作,将目的MAC地址转换为虚拟机或容器内部MAC地址;对于从虚拟机或容器流出的报文,如果源MAC地址是虚拟机或容器内部MAC地址,则执行修改源MAC地址的操作,将源MAC地址转换为虚拟机或容器外部MAC地址。
6. 根据权利要求5所述的基于虚拟网卡克隆的靶场虚拟机网络初始化方法,其特征在于,OpenFlow规则的具体指令为:
ovs-ofctl add-flow vSwitch dl_dst="外部MAC地址",actions=mod_dl_dst: "内部MAC地址",output: "虚拟网卡名称"
ovs-ofctl add-flow vSwitch priority=30,in_port="虚拟网卡名称",arp,actions=mod_dl_src: "外部MAC地址", set_field: "外部MAC地址"->arp_sha,normal
ovs-ofctl add-flow vSwitch priority=10,in_port="虚拟网卡名称",actions=mod_dl_src: "外部MAC地址",normal
其中:dl_dst="外部MAC地址"表示匹配目的MAC地址是外部MAC地址的报文;mod_dl_dst:"内部MAC地址"表示修改报文中的目的MAC地址为内部MAC地址;output: "虚拟网卡名称"表示转发到对应的虚拟网卡;in_port="虚拟网卡名称",arp表示匹配从对应的虚拟网卡收到的ARP报文;mod_dl_src:"外部MAC地址"表示修改以太网头的源MAC地址为外部MAC地址;set_field:"外部MAC地址"->arp_sha表示修改ARP头的源MAC地址为外部MAC地址;in_port="虚拟网卡名称"表示匹配从对应的虚拟网卡收到的非ARP报文。
7.基于虚拟网卡克隆的靶场虚拟机网络初始化系统,其特征在于,包括:
虚拟网卡初始化模块,用于云平台的计算服务创建网络靶场场景的虚拟机或容器实例时,从镜像关联的元数据中获取虚拟网卡的MAC地址,作为虚拟机或容器实例的虚拟网卡内部MAC地址,同时随机生成新的外部MAC地址,并保存到与虚拟机或容器实例关联的网络靶场数据库中;所述内部MAC地址与制作镜像的原始虚拟机或容器的虚拟网卡的MAC地址相同,基于同一镜像创建的不同虚拟机或容器实例,具有相同的内部MAC地址,不同的外部MAC地址;
以及转换规则配置模块,用于在虚拟机或容器实例所在宿主机的二层交换设备上,添加MAC地址转换规则,以实现虚拟机或容器实例的内部MAC地址与外部MAC地址的转换。
8.根据权利要求7所述的基于虚拟网卡克隆的靶场虚拟机网络初始化系统,其特征在于,虚拟机或容器的镜像元数据配置有原始虚拟机或容器的虚拟网卡的总线类型、设备位置、网卡型号和MAC地址;在基于镜像创建虚拟机或容器实例时,总线类型、设备位置、网卡型号和MAC地址,从镜像元数据中获取,与原始虚拟机的保持相同。
9.根据权利要求7所述的基于虚拟网卡克隆的靶场虚拟机网络初始化系统,其特征在于,宿主机采用Linux网桥作为二层交换设备时,在网桥上增加ebtables规则以转换MAC地址:对于流入虚拟机或容器的报文,如果目的MAC地址是虚拟机或容器外部MAC地址,则执行DNAT操作,将目的MAC地址转换为虚拟机或容器内部MAC地址;对于从虚拟机或容器流出的报文,如果源MAC地址是虚拟机或容器内部MAC地址,则执行SNAT操作,将源MAC地址转换为虚拟机或容器外部MAC地址。
10. 根据权利要求7所述的基于虚拟网卡克隆的靶场虚拟机网络初始化系统,其特征在于,宿主机采用Open vSwitch作为二层交换设备时,在Open vSwitch上增加OpenFlow规则以转换MAC地址:对于流入虚拟机或容器的报文,如果目的MAC地址是虚拟机或容器外部MAC地址,则执行修改目的MAC地址的操作,将目的MAC地址转换为虚拟机或容器内部MAC地址;对于从虚拟机或容器流出的报文,如果源MAC地址是虚拟机或容器内部MAC地址,则执行修改源MAC地址的操作,将源MAC地址转换为虚拟机或容器外部MAC地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310813659.8A CN116527494B (zh) | 2023-07-05 | 2023-07-05 | 基于虚拟网卡克隆的靶场虚拟机网络初始化方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310813659.8A CN116527494B (zh) | 2023-07-05 | 2023-07-05 | 基于虚拟网卡克隆的靶场虚拟机网络初始化方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116527494A CN116527494A (zh) | 2023-08-01 |
CN116527494B true CN116527494B (zh) | 2023-09-12 |
Family
ID=87401593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310813659.8A Active CN116527494B (zh) | 2023-07-05 | 2023-07-05 | 基于虚拟网卡克隆的靶场虚拟机网络初始化方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116527494B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104639363A (zh) * | 2013-11-13 | 2015-05-20 | 财团法人资讯工业策进会 | 用于在虚拟区域网络中管理云端装置的管理伺服器及其管理方法 |
CN105204955A (zh) * | 2015-09-30 | 2015-12-30 | 华为技术有限公司 | 一种虚拟机故障修复方法和装置 |
WO2016044982A1 (zh) * | 2014-09-22 | 2016-03-31 | 华为技术有限公司 | 一种移动网络扁平化的实现装置、方法及系统 |
CN106155759A (zh) * | 2015-03-26 | 2016-11-23 | 华为软件技术有限公司 | 虚拟机批量创建方法及装置 |
CN112202624A (zh) * | 2020-12-07 | 2021-01-08 | 南京赛宁信息技术有限公司 | 网络靶场场景编排的真实设备快速接入系统与方法 |
CN112398688A (zh) * | 2020-11-13 | 2021-02-23 | 广东省华南技术转移中心有限公司 | 容器网络配置方法、容器网络系统以及存储介质 |
CN114024880A (zh) * | 2022-01-10 | 2022-02-08 | 南京赛宁信息技术有限公司 | 基于代理ip与流表的网络靶场探针采集方法与系统 |
-
2023
- 2023-07-05 CN CN202310813659.8A patent/CN116527494B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104639363A (zh) * | 2013-11-13 | 2015-05-20 | 财团法人资讯工业策进会 | 用于在虚拟区域网络中管理云端装置的管理伺服器及其管理方法 |
WO2016044982A1 (zh) * | 2014-09-22 | 2016-03-31 | 华为技术有限公司 | 一种移动网络扁平化的实现装置、方法及系统 |
CN106155759A (zh) * | 2015-03-26 | 2016-11-23 | 华为软件技术有限公司 | 虚拟机批量创建方法及装置 |
CN105204955A (zh) * | 2015-09-30 | 2015-12-30 | 华为技术有限公司 | 一种虚拟机故障修复方法和装置 |
CN112398688A (zh) * | 2020-11-13 | 2021-02-23 | 广东省华南技术转移中心有限公司 | 容器网络配置方法、容器网络系统以及存储介质 |
CN112202624A (zh) * | 2020-12-07 | 2021-01-08 | 南京赛宁信息技术有限公司 | 网络靶场场景编排的真实设备快速接入系统与方法 |
CN114024880A (zh) * | 2022-01-10 | 2022-02-08 | 南京赛宁信息技术有限公司 | 基于代理ip与流表的网络靶场探针采集方法与系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116527494A (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220368654A1 (en) | Managing network traffic in virtual switches based on logical port identifiers | |
US9331910B2 (en) | Methods and systems for automatic generation of routing configuration files | |
TWI821463B (zh) | 具有分解式網路元件的邏輯路由器 | |
EP3905598B1 (en) | Message processing method and apparatus, control plane device, and computer storage medium | |
CN106899710B (zh) | Ip地址转换方法、ip地址转换装置以及网关系统 | |
CN109218261B (zh) | 一种数据处理方法及数据处理装置 | |
US11057269B2 (en) | System and method for configuring IED process bus network switches from substation topology specification | |
US9146826B2 (en) | Method and apparatus for scaling network simulation | |
US10574570B2 (en) | Communication processing method and apparatus | |
CN108494607B (zh) | 基于容器的大二层网络架构的设计方法及系统 | |
CN110138579B (zh) | 用户侧设备的配置方法和相关装置 | |
CN103997414A (zh) | 生成配置信息的方法和网络控制单元 | |
US20200120653A1 (en) | Operation Request Generating Method, Device, and System | |
JP2010531602A (ja) | リアルタイム通信ネットワークにおける診断データの通信のための方法と装置 | |
EP3552370A1 (en) | Implementing service function chains | |
CN116527494B (zh) | 基于虚拟网卡克隆的靶场虚拟机网络初始化方法与系统 | |
KR20190110719A (ko) | 네트워크 은닉 장치 및 방법 | |
GB2559660B (en) | Implementing service function chains | |
KR102385707B1 (ko) | 호스트 추상화를 이용한 sdn 네트워크 시스템 및 그 구현방법 | |
CN105577433A (zh) | 一种acs集群管理方法、装置和系统 | |
CN113055287B (zh) | 数据包的处理方法、装置和计算机可读存储介质 | |
US11570193B2 (en) | Malware propagation risk assessment in software defined networks | |
CN109729026B (zh) | 一种sdn网络的控制方法和sdn控制器 | |
JP2017034723A (ja) | パケット処理方法及び転送要素 | |
Yu et al. | A Two-characters Experiment Design for IPv6 Routing&Forwarding Based on Modularization |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |