导读:混合云可以说是未来的一个趋势,混合云的一个基本的要求就是本地网络要与公有云能够互通,这样就可以把公有云看作一个分支网络,实现统一的管理。这里我们就来看看怎样让本地网络与微软的windows azure互通,为了方便大家测试,我们只要求:

l 当然要有一个windows azure测试账户

l 本地有一台能够上网的windows server 2012 R2服务器(虽然微软官方要求本地网络要有一个×××设备直接放在公网,但我们这里让你没有这样的条件也可以,当然生产环境还是要遵从微软建议,这里是个测试环境)

一、前期条件准备

(一)准备windows azure测试账户

Windows azure有两个版本,一个全球版,一个中国版,测试账户通常是全球版,中国版不好申请,测试账户申请地址为:

http://azure.microsoft.com/en-us/pricing/free-trial/

让本地网络与微软windows azure互通

申请时你会发现,需要你有一个国外的手机号,以便短信确认,如果你这时有国外的朋友就方便了,如果没有国外的朋友也不用担心,因为你有万能的淘宝啊:)。几块钱就搞定了。

让本地网络与微软windows azure互通

(二)本地×××服务器准备和发布到公网

准备一台windows server 2012 r2服务器,这台服务器可以不是域成员。但我这里由于要测试打通后的活动目录部署,所以这台服务器同时也是一台域控制器。虽然不要求直接把这台服务器放在公网,但还是要求你的防火墙或路由器把这台内部的服务器整个发布出去(也就是IP级映射,不是端口级映射),因为只有这样对方才能连接进来。

我们这里的测试拓扑如下图:

让本地网络与微软windows azure互通

这里要实现的功能是两边能够互通,并且我将在window azure网络中部署一台域服务器(生产环境通常也有这样的要求,加速身份验证),当然你也可以不部署,这不是一个必选项。

本质上两边互通就是在windows azure和本地创建一个站点到站点的IPSEC ×××,那么我们在做之前先分析一下,要创建站点到站点的IPSEC ×××,就需要两个站点都有一个×××网关,只是这里把本地的网关放在了网络内部,还需要晓得对方的子网信息以进行路由,还需要一个共享**,就像地下党接头一样,对上了暗语才能进行下一步通信。

二、部署

部署包括azure上操作和本地操作。

(一)把内部要作为×××服务器的ip整个发布出去

我这里是一个NetGear的路由器,勾选Default DMZ Server,并设置IP即可。不同的防火墙或路由器的发布方法可能不同,只是要注意是把整个IP发布出去,因为IPSEC ×××是IP层的东西,你不能像发布web服务器只发布某个TCP/UDP端口。

让本地网络与微软windows azure互通

当然如果你的×××设备本来就暴露在公网,这步就略过不用发布(发布是指你的服务器在内部),等会直接在后面填写IP即可,微软官网有一个兼容的×××设备列表,但本质上只要你的设备支持IPSEC的IKEv1/IKEv2就可以。很多防火墙本身就支持IPSEC ×××功能,不一定再需要专门的×××设备。

步骤二:登录windows azure,首先是要在azure端创建虚拟网络,也就是创建一个我们在azure上的站点,就是图中的:

让本地网络与微软windows azure互通

与其他创建站点到站点×××类似,这里需要提供双方的网关信息和子网信息。

由于是第一次操作,首先按下面的图片选择,

让本地网络与微软windows azure互通

让本地网络与微软windows azure互通

名称填入azure网络的站点名,首先是要创建一个地缘组,也就是选一个地理位置离你用户访问更近的数据中心,这样访问更快。

让本地网络与微软windows azure互通

这一步配置azure站点的DNS服务器,这个设置以后将自动分发到这个网络的虚拟网卡上。我这里设置成本地站点的DNS,以便加域,等在azure中部署好域控制器后,再修改这个DNS设置指向azure站点的域控制器。

另外一个选择配置站点到站点×××。

让本地网络与微软windows azure互通

这个页面提供站点到站点连接远方的网关和子网信息(没有网关信息则无法连接,没有子网信息则无法添加路由表),这里也就是填写本地的×××设备地址和子网信息。

让本地网络与微软windows azure互通

这个页面配置azure站点的子网信息,我这里选择172.16.1.0这个子网。注意这里要依次选择地址空间、子网和网关子网。地址空间可以设置大点,但子网就设置你这个azure站点要用到的IP子网就OK,然后网关子网是指×××网关将用到的地址范围。

创建完成后你可以在这里看到。

让本地网络与微软windows azure互通

前面说了,创建站点到站点的×××是不是要至少提供双方的网关信息、子网信息,但从上面的创建过程来看,是不是还没有提供azure本身的网关信息(如外网IP)?是的,我们点击上面的azure虚拟网络,选中“仪表板”,我们可以看出“未创建网关”,于是选择下面的创建网关,并选择动态路由。

让本地网络与微软windows azure互通

然后是如下图的正在创建网关,这个过程有点长,耐心等待一下,因为创建完成后会显示网关的公网IP和共享**,这两个东西我们在本地配置×××网关时是需要的。

让本地网络与微软windows azure互通

创建完成后你能够看到这个网关的公网ip。

让本地网络与微软windows azure互通

要看共享**点下方的管理**,

让本地网络与微软windows azure互通

让本地网络与微软windows azure互通

复制上面的**备用。

(三)部署内部的 ×××网关服务器

我们这里以微软win2012 r2来作×××网关服务器,有两种方法,一是微软提供了现存的脚本,一是我们自己手动建立。

脚本链接就在虚拟网络仪表板页面。我们这里手工建立,让你更清楚整个架构,也便于后期故障处理。

让本地网络与微软windows azure互通

让本地网络与微软windows azure互通

注:如果通过下载的脚本配置,首先要把下载的脚本扩展名改成.ps1,再以管理员身份运行powershell,并运行Set-ExecutionPolicy Unrestricted让powershell能够执行脚本

登录windows 2012 r2服务器,在powershell命令行中运行下面的脚本。

首先是安装角色与功能组件:

Install-WindowsFeature Routing -IncludeManagementTools

Install-RemoteAccess -***Type ***S2S

接着创建一个站点到站点的×××连接:

$connection = "ToAzure" 连接名

$azurepeer = "42.159.198.24" azure网关的公网IP

$localpeer = "14.104.147.216" 本地的公网IP,这里是路由器的公网IP,也就是ADSL拨号得到的IP

$vnet = "172.16.1.0/24:100" azure子网

$psk = "KkWvfqu9ath92rvwyK3ia2hPKOUFHucX" 共享**

Add-***S2SInterface -Name $connection -Protocol IKEv2 -AuthenticationMethod PSKOnly -NumberOfTries 5 -ResponderAuthenticationMethod PSKOnly -Destination $azurepeer -IPv4Subnet $vnet -SharedSecret $psk -SourceIPAddress $localpeer –Persistent

//注意上面的命令是一行,没有分行

Set-***ServerIPsecConfiguration -EncryptionType MaximumEncryption 最强加密

Restart-Service RemoteAccess 重启路由与远程访问服务

//命令不包括后面的中文

//上面红色的参数请与在windows azure中使用的一致

让本地网络与微软windows azure互通

完成进入路由与远程访问图形界面,在网络接口下能够看到ToAzure接口,默认它会自动连接,连接成功后会看显示已连接。

让本地网络与微软windows azure互通同时在azure上看虚拟网络也已连接。

让本地网络与微软windows azure互通

另外在静态路由里,能够看到到azure站点的路由。

让本地网络与微软windows azure互通

让本地网络与微软windows azure互通

但如果连接没有成功,你需要手动在上图和下图处都进行连接。

让本地网络与微软windows azure互通

(三)测试

为了直观验证两边是否已经打通,可以在两边各找一台服务器互ping下。我们这里要先建立一台云上的虚拟机来作测试。

步骤如下面的图片。

让本地网络与微软windows azure互通

让本地网络与微软windows azure互通

让本地网络与微软windows azure互通让本地网络与微软windows azure互通

让本地网络与微软windows azure互通

上图是需要注意的地方,这里要选前面建立的azure虚拟网络。后面都默认。

虚拟机创建完成后,选下方的连接登录虚拟机,这样会通过远程桌面登录此虚拟机。

让本地网络与微软windows azure互通

登录之后查看网卡信息,会发现已经自动分配了之前设定的子网IP和DNS。

让本地网络与微软windows azure互通

Ping一下确认两边是互通的。

让本地网络与微软windows azure互通

我将在以后的文章中讲述怎样在云中部署我们的应用。