本博文出自51CTO博客梦想依赖实践博主,有任何问题请进入博主页面互动讨论! |
实验背景:
公司在国内多个城市都有分支机构,每个satellite office都有自己独立的内网,是一个独立的site。现在公司租用了Azure服务,将一些重要服务迁移至Azure,但某些服务要求必须只能通过公 司内部网络通信完成,所以需要将公司的几个分支结构的子网和Azure资源所在的子网连接起来。
世纪互联的Azure当前并不支持直接在manage.windowsazure.cn这个管理portal中直接配置Azure到多个子网的site- 2-site VPN。微软提出了一个自己的概念,叫做Multi-site VPN,它和我们建立多个site-2-site VPN的区别仅仅在于Azure端的配置方法上。下文详细叙述。
前提条件/准备工作:
- Windows Azure管理权限,能够新建Virtual Network(New->Network services->virtual network);
- 本地VPN设备或者服务器的管理权限,试验中我使用的是FortiGate防火墙设备。如果您使用专门的VPN设备,请一定参考微软的兼容性设备列表,确保您使用的VPN设备和windows Azure相兼容;
- 本地子网的网络地址池空间;
- Azure要计划使用的网络地址池空间;
- 一个xml文件编辑器,用于编辑从Azure上下载到本地的网络配置文件;
- Azure PowerShell;
部署过程:
1.新建Virtual Network:
为Virtual Network命名;
选择使用的datacenter的地点,目前世纪互联在中国有两个datacenter。中国北方(北京),国东方(上海);
为你的virtual network制定一个DNS服务器,这里建议您选择一些比较靠谱的,最好是在国内和国外都比较靠谱的DNS服务器,建议您使用google的8.8.8.8,国内的114DNS等。OpenDNS也很不错,但是在国内访问延时较大,不太建议;
配置VPN的方式为Site-to-site VPN,你的on-premise/local网络可以新建或者选择你已经录入过的网络,试验中我们是新建了一个local network;
配置本地网络(local network/on-premise network)属性,本地网络的名字,本地VPN设备的IP地址,本地网路的地址空间;
配置Azure端的子网属性,自己按照实际需求设置即可,完成virtual network的创建过程。配置完成后,我们可以通过查看virtual network的dashboard看到当前的状态。
2.增加local Network(添加其他几个分支结构的子网信息,这个过程这一步也可以省略):
- New->Network services->Virtual Network->Add local network;
- 输入local Network的名称;
- 输入local network的子网地址范围;
3.配置Virtual Network:
如果你已经通过GUI将其他On-premise(local) network的信息添加到了virtual network中,那么你只需要修改<ConnectionsToLocalNetwork> 和</ConnectionsToLocalNetwork>之间的部分,先将这部分内容复制,然后粘贴在< /ConnectionsToLocalNetwork>之前,将你粘贴的内容中的name部分进行修改,修改成你需要增加的on- premise(local) network的名字。以此类推,将所有其他需要增加进来的网络都添加好;
如果你之前没有通过GUI将其他的On-Premise(local) network的信【51CTO专稿】息创建好,你可以直接通过修改这个xml文件进行创建。找 到<LocalNetworkSite>……….</LocalNetworkSite>部分,复制这一部分,粘贴到这部分的后 面,讲你想添加的On-Premise(local) network的name、子网范围、VPNGatewayAddress进行修改即可。以此类推,将所有需要添加的子网添加好之后,执行上一布的过程, 这样就将network configuration文件编辑好了,进行保存;
创建gateway,这里要注意,根据微软官方的文档(https://msdn.microsoft.com/en-us/library/azure /jj156210.aspx),配置Multi-site VPN一定要选择Dynamic Routing。这个创建过程比较慢,实测中国北方数据中心,创建过程用了20分钟;
创建好Gateway之后,我们检查一下当前的virtual network状态是否正确。Gateway的公网IP应该能够在dashboard中显示出来,gateway的类型是Dynamic Routing。然后我们将当前的network configuration导出,导出来的是一个xml文件;
编辑配置文件,找到<ConnectionsToLocalNetwork> 和</ConnectionsToLocalNetwork>之间的部分,我们看到这里默认只有我们在新建virtual network的时候输入的on-premise network的信息,而我们新增的local network都不在这里,那么我们就需要手动修改这个配置文件,将我们其他的On-Premise(local network)的信息增加进来。
上传编辑好的配置文件,更新virtual network网络配置。New->Network Services->Virtual Network->Import configuration,选择你刚才编辑好的配置文件,进行上传。
4.获取Multi-site VPN信息(需要通过Azure PowerShell):
- 获取subscription:get-AzureSubscription;
- 选择需要的subscription:select-AzureSubscription -name;
- 获取virtual network configuration:get-AzureVNetConfig|fl;
- 获取VPN Pre-shared-key:Get-AzureVNetGatewayKey -vNetName xxx -LocalNetworkSiteName yyyy;
- 获取Azure端VPN的属性设置:Get-AzureVNetGatewayIPsecParameters -VNetName AAAA -LocalNetworkSiteName BBBB
5.配置本地VPN设备。由于大家所使用的VPN设备都不相同,但需要修改的项目基本一致,这里我们说一下通常需要修改的几个地方和注意事项:
- 需要使用IKEv2;
- 启用Replay Detection;
- 不需要配置NAT traversal;
- 不需要配置Auto Keep Alive;
- 不需要配置Auto-Negotiate;
- 不要启用Perfect Forward Security(PFS);