【微软公有云系列】Hyper-v(WinSer 2012 R2)网络虚拟化(三)租户隔离
前两章讲了挺多的理论知识,是希望让大家有一点了解,对网络基础不太好的朋友们或许看的会有点(◎﹏◎),不过不要紧,心里大概有个概念就行,接下来的会带给大家一些动手实践的Demo,加深大家对网络虚拟化(NVGRE)的了解。
租户隔离
我们知道,在公有云环境中,会有很多的企业来申请租户,那么他们之间为了确保信息的安全是需要把他们所租用的虚拟机之间要进行网络的相互隔离的,而且公有云目前不被一些企业所接受的,也是担心安全性的问题。当然安全性主要在于两部分,一部分是我们今天谈到的网络的隔离安全,还有一部分就是数据的安全性(后期会陆续给大家介绍)。
DEMO 1
实验环境介绍
我们把test01虚拟机和test02虚拟机都放在同一个宿主机(为什么要加此备注,因为这个DEMO是在仅用了一台物理机作为存放租户虚拟机的情况下,所以我们下面选择的只是普通的Stand Switch。假设是真实的公有云环境下,我们需要创建logical switch,因为logical switch,才可以跨不同的物理机之间存放不同租户的虚拟机,让其可相互通信)
最终目的:让test01虚拟机和test02虚拟机使用相同IP地址在一个虚拟交换机里,却相互隔离。(正常情况下,我们知道是会出现IP冲突的)
首先我们知道,当第一次添加HOST宿主机进来的时候,是会自动默认产生一个逻辑网络和一个VM network。名字都会自动抓取你原来宿主机上建立的虚拟交换机的名字。
以下是在第一次把HOST主机加入进VMM时,自动抓取过来的HOST上原本承载的SWITCH的名,来自动创建一个VM Networks 和logical networks
配置Logical network(NVGRE类型)
首先确保,勾上了支持网络虚拟化(NVGRE),否则不可创建多个VM NETWORK
(那为什么要创建多个VM NETWORK,因为只有不同的VM NETWORK之间才可以相互隔离)
其次,需把站点和IPsubnets 配置好了
最后需要为logical network创建好PA POOL(PA 地址池中的地址,主要是给两台或多台宿主机中的同一个
VM network下的虚拟机相互通信的)
创建第一个vm network
用于 Test01 虚拟机(也可以理解为用于分配给A01租户申请的虚拟机的网络&IP)
这里我们输入A01名称,另外选择这个即将创建的vm network是基于相同的默认逻辑网络之上的,
即“Network 01”
接下来可以看到R2的改进之处,原先是没有隔离选项的,上面的“使用hyper-v网络虚拟化”就是我们要实现的功能,而下面的“no isolation”就是以前那种“1对1”的模式,可以看到下方的描述“使用非隔离模式,每个逻辑网络只能创建一个虚拟网络”
接下来,加个的个子网,如下图所示10.10.0.0/16,子网名称SubNet 01(如果不加个子网,那么虚拟机就无法获得IP地址,除非手动设置IP地址了;但是在公有云提供虚拟机给租户时,因为是动态创建给租户的,所以一般选择给其地址池的方式分配虚拟机的IP地址)
创建完成之后,如下图
创建地址池(IP POOL)
那就在A01这个vm network上创建个地址池
输入地址池的名称CA Pool,地址池基于我们刚才创建的子网“SubNet 01”
键入地址池范围,这里以“10.10.1.100~10.10.1.150”为例
接下来的网关,dns,wins,我们都不设置,继续下一步
返回到vm network可以看到已经成功的创建了地址池
创建第二个vm network
用于 Test02 虚拟机(也可以理解为用于分配给A02租户申请的虚拟机的网络&IP)
以上面的方式去创建个A02的vm network,也给他一个名为CA POOL的地址池,同样也是10.10.0.0/16的网络地址;那么相同的网络地址,我们不用担心,两者是相互隔离,不会产生冲突
测试结果
SCVMM控制台中,选中TEST 01虚拟机,修改虚机配置,这里可以看到vm subnet这里已经出现了名为“Subnet 01”的子网了
我们把另外一台虚机的vm network改成A02,子网同样也叫Subnet 01
那么此时我们可以看到test01 和test02 两台虚拟机所取得的IP地址分别都是10.10.1.100,但是并没有提示IP冲突
提示:由于test01和02现在分别处于A01和A02两个vm network下,所以网关默认是由虚拟子网的第一个IP(也就是10.10.0.1)来承担,如果想访问外网或者其他外部访问(因为要访问外网就涉及到要定制网关IP了),就需要SCVMM中的gateway来实现了
DEMO 2
实验环境介绍
我们把test01虚拟机和test02虚拟机都放在同一个宿主机(为什么要加此备注,因为这个DEMO是在仅用了一台物理机作为存放租户虚拟机的情况下,所以我们下面选择的只是普通的Stand Switch。假设是真实的公有云环境下,我们需要创建logical switch,因为logical switch,才可以跨不同的物理机之间存放不同租户的虚拟机,让其可相互通信)
最终目的:test01虚拟机和test02虚拟机都放在同一个宿主机的同一个vm network(A01)下的两个不同的Subnet下,使其两者的IP地址段为不同网段。却可相互通信
接着上面Demo1的环境,我们接下来创建新的一个子网(Subnet)
创建新的子网
我们在A01这个VMnetwork下再创建一个子网,取名SubNet02,并且基于SubNet02创建地址池172.16.0.0/16
这个操作的效果就相当于在同一个RoutingDomainID(A01)下创建了两个VirtualSubnetID(SubNet01. SubNet02),那么按照这样的结构,这两个VSID之间应该是可以无限制访问(原理在前面一章说过),下面就来验证一下
测试结果
我们将一台虚机保留A01和SubNet 01子网不变,另外一台修改为A01和SubNet 02子网
之后,我们登陆到存放这两台虚拟机的宿主机上,运行powershell命令查看,可以看到两条路由的RDID是一致的
(Get-NetVirtualizationCustomerRoute)
在172.16.0.0/16的子网上去ping 10.10.0.0/16,完全没有问题~,见下图
备注:
跨主机的情况下,需要用到Logic Switch,才能使同一VM NETWORK (RDID)下的虚拟机相互通信;
同一主机的情况下,可以使用StandardSwitch或Logic Switch,都可以使用同一VM NETWORK(RDID)下的虚拟机相互通信。
Standard Switch 其实就相当于你当时在宿主机本地创建的virtualswitch
本文出自 “烟儿从此落户了” 博客,请务必保留此出处http://hajuneck.blog.51cto.com/677142/1405632