我们知道windows azure 上可以定义多个子网或者地址池,但是在同一个虚拟网络中 定义多个子网或者地址池他们是互通的,但是如果定义多个虚拟网络的话,他们之间的网络是不通的,那如果真实存在多个虚拟网络的话,如何实现虚拟网络之间进行通信呢,这个时候我们就可以配置虚拟网络之间的vpn了,其实配置跟本地到windows azure虚拟网络之间的vpn配置原理一样,为什么这么说呢,原因是因为,当配置本地到windows azure的vpn时候,我们需要将本地的网络地址子网添加到windows azure的虚拟本地网络中,然后在配置相关的站点到站点的vpn即可通信,同理,虚拟网络之间的通信原理是一样的,我们需要将不同虚拟网络的子网定义为虚拟的本地网络。所以很好理解。在官网的叫法是Vnet到Vnet的链接。那Vnet到Vnet连接具有哪些作用?跨区域地域冗余和地域存在,你可以使用安全连接设置自己的地域复制或同步,而无需借助于面向 Internet 的终结点。使用 Azure 负载平衡器和 Microsoft 或第三方群集技术,你可以设置支持跨多个 Azure 区域实现地域冗余的高可用性工作负载。一个重要的示例就是对分散在多个 Azure 区域中的可用性组设置 SQL Always On。具有强大隔离边界的区域多层应用程序。在同一区域中,你可以设置具有多个虚拟网络的多层应用程序,这些虚拟网络相互连接在一起,但同时又能保持强大的隔离性,而且还能进行安全的层间通信。在 Azure 中跨订阅进行组织间通信。如果你有多个 Azure 订阅,现在可以在虚拟网络之间安全地将不同订阅中的工作负载连接起来。对于企业或服务提供商而言,现在可以在 Azure 中使用安全 VPN 技术启用跨组织通信。
配置Vnet到Vnet通信的要求和注意事项:VNet 到 VNet 通信支持连接 Azure 虚拟网络。它不支持连接虚拟网络外部的虚拟机或云服务。
VNet 到 VNet 通信需要使用具有动态路由 VPN 的 Azure VPN 网关 - 不支持 Azure 静态路由 VPN。将多个 Azure 虚拟网络连接在一起不需要任何本地 VPN 网关,除非需要跨界连接。虚拟网络连接可与多站点 VPN 同时使用,最多可以将一个虚拟网络 VPN 网关的 10 个 VPN 隧道连接到其他虚拟网络或本地站点。虚拟网络和本地网络站点的地址空间不得重叠。地址空间重叠将会导致创建虚拟网络或上载 netcfg 配置文件失败。
虚拟网络可以在相同或不同的订阅中。
虚拟网络可以在相同或不同的 Azure 区域(位置)中。
不支持一对虚拟网络之间存在冗余隧道。
云服务或负载平衡终结点不能跨虚拟网络,即使它们连接在一起,也是如此。
虚拟网络的所有 VPN 隧道(包括 P2S VPN)共享 Azure VPN 网关上的可用带宽,以及 Azure 中的相同 VPN 网关运行时间 SLA。
在配置前我们需要定义规划IP地址范围:
Vnet01-----Vnetwork-01
10.1.1.0
Vnet02------Vnetwork-02
172.16.2.0
2.添加本地网络:我们需要把vnet01的虚拟地址范围作为定义添加到vnet01的本地网络中,同理vnet02的虚拟地址范围作为定义添加到vnet02的本地网络中。
3.为每个vnet创建动态路由网关,及修改本地网络的vpn网关地址。
4.通过powershell设置两个vnet之间的共享秘钥及连接vpn网关。
接下来我们我们开始创建虚拟网络,具体就不做详细介绍了:
配置站点到站点的vpn
定义站点到站点的链接名称,我们 要链接到站点2,所以我们定义为Vnet-Vnet02,地址范围172.16.2.0
我们定义vnetwork-01的虚拟网络地址范围10.1.1.0及网关
基本网络配置创建完成
创建vpn网管
Vnetwork-01的基本配置
Vnetwork-01的网络地址定义及vpn网关创建完成,我们发现会多一个vpn网关地址。
Vnet-net02的本地地址范围
同理我们定义Vnetwork-02
Vnet01的地址范围
Vnetwork-02的网络地址范围定义完成
创建网关
Vnetwork-02的vpn网关地址
为了更好的测试该服务,我们分别在不通的虚拟网络中启用一个虚拟机做为测试:
我们首先在vnetwork-01上启用一个虚拟机
同样在vnetwork-02上启用一个虚拟机
接下来我们就是测试服务了,首先确认一下每个虚拟网络下的计算机状态:
Vnetwork-02的网络状态。
接下来我们进行服务测试,首先确认两个不同的虚拟网络是否互通。
为了测试的真实性,我们将 防火墙的icpm协议关闭了。
我们在computer-01上ping computer-02
我们在computer-02上ping computer-01
通过以上的结果进行确认,两个不同的虚拟网络之间是不通的。
所以为了解决该问题,我们需要通过以下方法进行来解决:
1. 首先我们得到的信息是
Vnetwork-01的VPN网关地址是:139.219.135.120
Vnetwork-02的VPN网关地址是:139.219.135.132
我们可以通过修改Vnetwork-01、vnetwork-02的本地网络vpn地址即可。
我们首先更改本地网络Vnet-Net01的vpn网关地址:
在“本地网络”页上,单击你要编辑的本地网络名称,然后单击页底部的“编辑”。对于“VPN 设备 IP 地址”,请输入对应于 VNet 的网关 IP 地址。例如,对于 VNet1,请输入分配给 VNet1 的网关 IP 地址。然后,单击页底部的箭头。
在“指定地址空间”页上,单击右下角的复选标记,但不要进行任何更改。
Vnetwork-01、vnetwork-02的本地网络中的vpn网关地址更新后
我们查看两个虚拟网络之间的网络是否正常,我们首先手动连接一下vpn
我们发现手动连接后还是失败,原因是因为两个vpn网关会有两个不通过的共享秘钥,所以我们需要通过powershheell来完成下面的工作。
我们首先是复制保存Vnetwork-01的共享秘钥
再次用同样的方式操作Vnetwork-02的共享秘钥
然后我们首先下载该订阅,然后导入windows azure powershell订阅下操作
https://manage.windowsazure.cn/publishsettings/index?client=powershell
订阅文件导入
在windows azure powershell中输入 Import-AzurePublishSettingsFile ‘D:\8xxx.publishsettings‘
标黄处是您存放Publishsetting file的位置和名称。
因为我之前通过该windows azure powershell导入了其他订阅,所以会存在多个订阅,
Get-azuresubscription
但是我们刚才导入的订阅文件应该是
所以我们需要将该订阅文件设置为默认的。
Select- Select-AzureSubscription
-SubscriptionName "
添加账户名"
–Default
确认该订阅是正常的
完成前面的所有步骤后,需要将 IPsec/IKE 预共享密钥设置为相同。你可以使用 REST API 或 PowerShell cmdlet 完成此操作。如果使用 PowerShell,请确认你使用的是最新版本的 Microsoft Azure PowerShell cmdlet。以下示例使用 PowerShell cmdlet 将密钥值设置为 A1b2C3D4。请注意,两个 VNet 应使用相同的密钥值。请编辑以下示例,使之反映你自己的值。
对于 VNet1
PS C:\> Set-AzureVNetGatewayKey -VNetName VNet1 -LocalNetworkSiteName VNet2 -SharedKey xxxxxxxx
对于 VNet2
PS C:\> Set-AzureVNetGatewayKey -VNetName VNet2 -LocalNetworkSiteName VNet1 -SharedKey xxxxxxxx
我们执行后发现还是不行,经过确认,两边的执行共享秘钥必须要一样。使用同一个共享秘钥才能生效。
接下来我们查看azure portal页面状态:
我们再看看vnetwork-02的网络状态:
接下来我们查看两个虚拟网络的服务器是否可以正常通信了。
我们可以看见vnetwork-01上进行测试vnetwork-02测试网络是互通的。
同样我们可以看见vnetwork-02上进行测试vnetwork-01测试网络是互通的。