将站点到站点连接添加到包含现有 VPN 网关连接的 VNet(经典)

本文逐步讲解如何使用 PowerShell 将站点到站点 (S2S) 连接添加到包含使用经典(旧的)部署模型的现有连接的 VPN 网关。 这种类型的连接有时称为“多站点”配置。 本文中的步骤不适用于 ExpressRoute/站点到站点共存连接配置。

本文中的步骤适用于经典(旧的)部署模型,不适用于当前部署模型“资源管理器”。 除非就是希望使用经典部署模型,否则建议使用本文中提到的资源管理器版本

注意

本文为经典(旧的)部署模型而写。 建议你改用最新的 Azure 部署模型。 资源管理器部署模型是最新的部署模型,提供比经典部署模型更多的选项和更强的功能兼容性。 请参阅了解部署模型和资源状态,了解这两种部署模型之间的差异。

如果要使用本文提到的其他版本,请使用左侧窗格中的目录。

关于连接

可以将多个本地站点连接到单个虚拟网络。 在构建混合云解决方案时,这种做法特别有用。 创建到 Azure 虚拟网络网关的多站点连接时,其操作与创建其他站点到站点连接的操作类似。 事实上,可以使用现有的 Azure VPN 网关,只要该网关是动态的(基于路由)即可。

如果已经有连接到虚拟网络的静态网关,可以将网关类型更改为动态,而不需要为了适应多站点而重建虚拟网络。 在更改路由类型之前,请确保本地 VPN 网关支持基于路由的 VPN 配置。

经典多站点连接体系结构示意图。

考虑的要点

不可通过门户更改此虚拟网络。 需更改网络配置文件,而不是使用门户。 若在门户中进行更改,更改将覆盖此虚拟网络的多站点引用设置。

在完成多站点过程后,便可轻松自如地使用网络配置文件。 但是,如果有多个人在处理网络配置,需要确保每个人都知道这个限制。 这并不意味着完全不能使用门户。 除了无法对此特定虚拟网络进行配置更改以外,可以使用它来完成其他任何操作。

开始之前

在开始配置之前,请确认满足以下条件:

  • 每个本地位置都有兼容的 VPN 硬件。 查看关于用于虚拟网络连接的 VPN 设备,以确认要使用的设备是否是已知兼容的设备。
  • 每个 VPN 设备都有一个面向外部的公共 IPv4 IP 地址。 IP 地址不得位于 NAT 之后。 必须要这样做。
  • 有人能够熟练地配置 VPN 硬件。 必须非常了解如何配置 VPN 设备,或者与具有此能力的人员合作。
  • 要用于虚拟网络(如果尚未创建)的 IP 地址范围。
  • 要连接到的每个本地网络站点的 IP 地址范围。 需确保要连接到的每个本地网络站点的 IP 地址范围不重叠。 否则,门户或 REST API 将拒绝上传配置。
    例如,如果两个本地网络站点都包含 IP 地址范围 10.2.3.0/24,并且某个包包含目标地址 10.2.3.3,则 Azure 将不知道要将该包发送到哪个站点,因为地址范围是重叠的。 为了防止路由问题,Azure 不允许上传具有重叠范围的配置文件。

使用 Azure PowerShell

使用经典部署模型时,会无法使用 Azure Cloud Shell。 相反,用户必须在计算机上本地安装最新版本的 Service Management (SM) PowerShell cmdlet。 这些 cmdlet 不同于 AzureRM 或 Az cmdlet。 要安装 SM cmdlet,请参阅“安装服务管理 cmdlet”。 有关一般 Azure PowerShell 的详细信息,请参阅 Azure PowerShell 文档

1. 创建站点到站点 VPN

如果已有使用动态路由网关的站点到站点 VPN,那太好了! 可以转到导出虚拟网络配置设置。 否则,请执行以下操作:

如果已有一个站点到站点虚拟网络,但该虚拟网络使用静态(基于策略的)路由网关:

  1. 将网关类型更改为动态路由。 多站点 VPN 需要动态(也称为基于路由的)路由网关。 要更改网关类型,首先需要删除现有网关,然后创建新网关。
  2. 配置新网关并创建 VPN 隧道。 有关说明,请参阅指定 SKU 和 VPN 类型。 请确保将“路由类型”指定为“动态”。

如果没有站点到站点虚拟网络:

  1. 按照以下说明创建站点到站点虚拟网络:创建使用站点到站点 VPN 连接的虚拟网络
  2. 按照以下说明配置动态路由网关:配置 VPN 网关。 请务必为网关类型选择“动态路由”。

2. 导出网络配置文件

使用提升的权限打开 PowerShell 控制台。 若要切换到服务管理,请使用以下命令:

azure config mode asm

连接到帐户。 使用下面的示例来帮助连接:

Add-AzureAccount

通过运行以下命令,导出 Azure 网络配置文件。 如有必要,可以将文件的导出位置更改为其他位置。

Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml

3. 打开网络配置文件

打开上一步骤中下载的网络配置文件。 使用偏好的任何 xml 编辑器。 该文件的内容类似于:

<NetworkConfiguration xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/ServiceHosting/2011/07/NetworkConfiguration">
  <VirtualNetworkConfiguration>
    <LocalNetworkSites>
      <LocalNetworkSite name="Site1">
        <AddressSpace>
          <AddressPrefix>10.0.0.0/16</AddressPrefix>
          <AddressPrefix>10.1.0.0/16</AddressPrefix>
        </AddressSpace>
        <VPNGatewayAddress>131.2.3.4</VPNGatewayAddress>
      </LocalNetworkSite>
      <LocalNetworkSite name="Site2">
        <AddressSpace>
          <AddressPrefix>10.2.0.0/16</AddressPrefix>
          <AddressPrefix>10.3.0.0/16</AddressPrefix>
        </AddressSpace>
        <VPNGatewayAddress>131.4.5.6</VPNGatewayAddress>
      </LocalNetworkSite>
    </LocalNetworkSites>
    <VirtualNetworkSites>
      <VirtualNetworkSite name="VNet1" AffinityGroup="USWest">
        <AddressSpace>
          <AddressPrefix>10.20.0.0/16</AddressPrefix>
          <AddressPrefix>10.21.0.0/16</AddressPrefix>
        </AddressSpace>
        <Subnets>
          <Subnet name="FE">
            <AddressPrefix>10.20.0.0/24</AddressPrefix>
          </Subnet>
          <Subnet name="BE">
            <AddressPrefix>10.20.1.0/24</AddressPrefix>
          </Subnet>
          <Subnet name="GatewaySubnet">
            <AddressPrefix>10.20.2.0/29</AddressPrefix>
          </Subnet>
        </Subnets>
        <Gateway>
          <ConnectionsToLocalNetwork>
            <LocalNetworkSiteRef name="Site1">
              <Connection type="IPsec" />
            </LocalNetworkSiteRef>
          </ConnectionsToLocalNetwork>
        </Gateway>
      </VirtualNetworkSite>
    </VirtualNetworkSites>
  </VirtualNetworkConfiguration>
</NetworkConfiguration>

4. 添加多个站点引用

在添加或删除站点引用信息时,会对 ConnectionsToLocalNetwork/LocalNetworkSiteRef 进行配置更改。 添加新的本地站点引用会触发 Azure 来创建新隧道。 在以下示例中,网络配置适用于单站点连接。 更改完后,请保存该文件。

  <Gateway>
    <ConnectionsToLocalNetwork>
      <LocalNetworkSiteRef name="Site1"><Connection type="IPsec" /></LocalNetworkSiteRef>
    </ConnectionsToLocalNetwork>
  </Gateway>

若要添加其他站点引用(创建多站点配置),只需添加其他“LocalNetworkSiteRef”行,如下例所示:

  <Gateway>
    <ConnectionsToLocalNetwork>
      <LocalNetworkSiteRef name="Site1"><Connection type="IPsec" /></LocalNetworkSiteRef>
      <LocalNetworkSiteRef name="Site2"><Connection type="IPsec" /></LocalNetworkSiteRef>
    </ConnectionsToLocalNetwork>
  </Gateway>

5. 导入网络配置文件

导入网络配置文件。 在导入这个包含更改的文件时,会添加新的隧道。 这些隧道使用前面创建的动态网关。 可以使用 PowerShell 导入文件。

6. 下载密钥

添加新的隧道后,使用 PowerShell cmdlet“Get-AzureVNetGatewayKey”获取每个隧道的 IPsec/IKE 预共享密钥。

例如:

Get-AzureVNetGatewayKey –VNetName "VNet1" –LocalNetworkSiteName "Site1"
Get-AzureVNetGatewayKey –VNetName "VNet1" –LocalNetworkSiteName "Site2"

如果需要,也可以使用获取虚拟网络网关共享密钥 REST API 来获取预共享密钥。

7. 验证连接

检查多站点隧道状态。 下载每个隧道的密钥后,需要验证连接。 使用“Get-AzureVnetConnection”获取虚拟网络隧道的列表,如下例所示。 VNet1 是 VNet 的名称。

Get-AzureVnetConnection -VNetName VNET1

示例返回:

    ConnectivityState         : Connected
    EgressBytesTransferred    : 661530
    IngressBytesTransferred   : 519207
    LastConnectionEstablished : 5/2/2014 2:51:40 PM
    LastEventID               : 23401
    LastEventMessage          : The connectivity state for the local network site 'Site1' changed from Not Connected to Connected.
    LastEventTimeStamp        : 5/2/2014 2:51:40 PM
    LocalNetworkSiteName      : Site1
    OperationDescription      : Get-AzureVNetConnection
    OperationId               : 7f68a8e6-51e9-9db4-88c2-16b8067fed7f
    OperationStatus           : Succeeded

    ConnectivityState         : Connected
    EgressBytesTransferred    : 789398
    IngressBytesTransferred   : 143908
    LastConnectionEstablished : 5/2/2014 3:20:40 PM
    LastEventID               : 23401
    LastEventMessage          : The connectivity state for the local network site 'Site2' changed from Not Connected to Connected.
    LastEventTimeStamp        : 5/2/2014 2:51:40 PM
    LocalNetworkSiteName      : Site2
    OperationDescription      : Get-AzureVNetConnection
    OperationId               : 7893b329-51e9-9db4-88c2-16b8067fed7f
    OperationStatus           : Succeeded

后续步骤

若要了解有关 VPN 网关的详细信息,请参阅关于 VPN 网关