你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 PowerShell 配置 ExpressRoute 和站点到站点共存连接

本文有助于配置可共存的 ExpressRoute 和站点到站点 VPN 连接。 配置这两个连接有几个优点:

  • 可以将站点到站点 VPN 设置为 ExpressRoute 的安全故障转移路径。
  • 另外,还可以使用站点到站点 VPN 连接到未通过 ExpressRoute 连接的站点。

本文中介绍了这两种方案的配置步骤。 本文适用于 Resource Manager 部署模型并使用 PowerShell。 也可以使用 Azure 门户配置这些方案,但目前还没有文档。 可以先配置任一网关。 通常,添加新网关或网关连接时不会导致停机。

注意

如果要通过 ExpressRoute 线路创建站点到站点 VPN,请参阅通过 Microsoft 对等互连的站点到站点 VPN

限制和局限性

  • 仅支持基于路由的 VPN 网关。 必须使用基于路由的 VPN 网关。 还可以将基于路由的 VPN 网关与为“基于策略的流量选择器”配置的 VPN 连接一起使用,如连接到多个基于策略的 VPN 设备中所述。
  • 基本 SKU 公共 IP 不支持 ExpressRoute-VPN 网关共存配置。
  • 如果要在 ExpressRoute 和 VPN 之间使用传输路由,则必须将 Azure VPN 网关的 ASN 设置为 65515 并应使用 Azure 路由服务器。Azure VPN 网关支持 BGP 路由协议。 要使 ExpressRoute 和 Azure VPN 协同工作,必须将 Azure VPN 网关的自治系统编号保留为其默认值 65515。 如果先前选择的是其他 ASN(而不是 65515),并且将设置更改为 65515,则必须重置 VPN 网关才能使设置生效。
  • 网关子网必须是 /27 或更短的前缀(例如 /26 或 /25),否则,添加 ExpressRoute 虚拟网络网关时将收到错误消息

配置设计

将站点到站点 VPN 配置为 ExpressRoute 的故障转移路径

可以将站点到站点 VPN 连接配置为 ExpressRoute 连接的备份。 此设置仅适用于链接到 Azure 专用对等互连路径的虚拟网络。 对于可通过 Azure Microsoft 对等互连访问的服务,没有基于 VPN 的故障转移解决方案。 ExpressRoute 线路始终是主链接,仅当 ExpressRoute 线路发生故障时,数据才会流经站点到站点 VPN 路径。 为了避免非对称路由,请将本地网络配置为首选 ExpressRoute 线路而不是站点到站点 VPN,方法是为通过 ExpressRoute 接收的路由设置更高的本地首选项值。

注意

  • 如果已启用 ExpressRoute Microsoft 对等互连,则可以在 ExpressRoute 连接上接收 Azure VPN 网关的公共 IP 地址。 若要将站点到站点 VPN 连接设置为备份,请配置本地网络,以便将 VPN 连接路由到 Internet。
  • 虽然在两个路由相同的情况下 ExpressRoute 线路路径优先于站点到站点 VPN,Azure 仍会使用最长的前缀匹配来选择指向数据包目标的路由。

显示将站点到站点 VPN 连接作为 ExpressRoute 的备份的关系图。

配置站点到站点 VPN,以便连接到不通过 ExpressRoute 进行连接的站点

可以对网络进行配置,使得部分站点通过站点到站点 VPN 直接连接到 Azure,而其他站点通过 ExpressRoute 进行连接。

共存

选择要使用的步骤

有两组不同的过程可供选择。 选择的配置过程取决于是有现有虚拟网络,还是需要创建新虚拟网络。

  • 我没有虚拟网络,需要创建一个。

    如果还没有虚拟网络,此过程将指导使用资源管理器部署模型创建新的虚拟网络,并创建新的 ExpressRoute 和站点到站点 VPN 连接。

  • 我已有一个资源管理器部署模型虚拟网络

    如果已有一个具有现有站点到站点 VPN 或 ExpressRoute 连接的虚拟网络,并且网关子网前缀为 /28 或更长(/29、/30 等),则需要删除现有网关。 为现有的虚拟网络配置共存连接部分的步骤将指导你删除网关,然后创建新的 ExpressRoute 连接和站点到站点 VPN 连接。

    删除和重新创建网关会导致跨界连接中断一段时间。 但是,在配置网关时,如果进行了相应设置,VM 和服务可以通过 Internet 进行连接。

开始之前

本文中的步骤和示例使用 Azure PowerShell Az 模块。 若要在计算机上本地安装 Az 模块,请参阅安装 Azure PowerShell。 若要详细了解新 Az 模块,请参阅新 Azure Powershell Az 模块简介。 PowerShell cmdlet 经常更新。 如果未运行最新版本,在说明中指定的值可能无法使用。 若要在系统上查找已安装的 PowerShell 版本,请使用 Get-Module -ListAvailable Az cmdlet。

可以使用 Azure Cloud Shell 来运行大多数 PowerShell cmdlet 和 CLI 命令,而无需在本地安装 Azure PowerShell 或 CLI。 Azure Cloud Shell 是免费的交互式 Shell,预安装有常用 Azure 工具,并将其配置为与帐户一起使用。 若要在 Azure Cloud Shell 上运行本文中包含的任何代码,请打开 Cloud Shell 会话,对代码块使用“复制”按钮以复制代码,然后使用 Ctrl+Shift+V(在 Windows 和 Linux 上)或 Cmd+Shift+V(在 macOS 上)将其粘贴到 Cloud Shell 会话中。 粘贴的文本不会自动执行,请按“Enter”运行代码。

可通过多种方式来启动 Cloud Shell:

选项 链接
单击代码块右上角的“试用”。 本文中的 Cloud Shell
在浏览器中打开 Cloud Shell。 https://shell.azure.com/powershell
单击 Azure 门户右上角菜单上的“Cloud Shell”按钮。 门户中的 Cloud Shell

此过程将指导你完成创建虚拟网络并配置共存的站点到站点 VPN 连接和 ExpressRoute 连接。 此配置中使用的 cmdlet 可能与你熟悉的 cmdlet 不同,因此请确保使用指定的 cmdlet。

  1. 登录并选择订阅。

    如果你使用 Azure Cloud Shell,则可在单击“试用”后自动登录到你的 Azure 帐户。 若要在本地登录,请使用提升的权限打开 PowerShell 控制台,并运行 cmdlet 以进行连接。

    Connect-AzAccount
    

    如果有多个订阅,请获取 Azure 订阅的列表。

    Get-AzSubscription
    

    指定要使用的订阅。

    Select-AzSubscription -SubscriptionName "Name of subscription"
    
  2. 定义变量并创建资源组。

    $location = "Central US"
    $resgrp = New-AzResourceGroup -Name "ErVpnCoex" -Location $location
    $VNetASN = 65515
    
  3. 创建包括 GatewaySubnet 的虚拟网络。 有关创建虚拟网络的详细信息,请参阅创建虚拟网络。 有关创建子网的详细信息,请参阅创建子网

    重要

    “GatewaySubnet”必须是 /27 或更短的前缀(例如 /26 或 /25)。

    创建新的虚拟网络。

    $vnet = New-AzVirtualNetwork -Name "CoexVnet" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AddressPrefix "10.200.0.0/16"
    

    添加两个名为“App”和“GatewaySubnet”的子网。

    Add-AzVirtualNetworkSubnetConfig -Name "App" -VirtualNetwork $vnet -AddressPrefix "10.200.1.0/24"
    Add-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet -AddressPrefix "10.200.255.0/24"
    

    保存虚拟网络配置。

    $vnet = Set-AzVirtualNetwork -VirtualNetwork $vnet
    
  4. 创建站点到站点 VPN 网关。 有关 VPN 网关配置的详细信息,请参阅使用站点到站点连接配置虚拟网络。 VpnGw1、VpnGw2、VpnGw3、标准和高性能 VPN 网关支持 GatewaySku。 基本 SKU 不支持 ExpressRoute-VPN 网关共存配置。 VpnType 必须为 RouteBased

    $gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet
    $gwIP = New-AzPublicIpAddress -Name "VPNGatewayIP" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AllocationMethod Dynamic
    $gwConfig = New-AzVirtualNetworkGatewayIpConfig -Name "VPNGatewayIpConfig" -SubnetId $gwSubnet.Id -PublicIpAddressId $gwIP.Id
    New-AzVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -IpConfigurations $gwConfig -GatewayType "Vpn" -VpnType "RouteBased" -GatewaySku "VpnGw1"
    

    Azure VPN 网关支持 BGP 路由协议。 通过在以下命令中添加 -Asn 标志,可为该虚拟网络指定 ASN(AS 编号)。 若未指定 Asn 参数,则默认 AS 编号为“65515”

    $azureVpn = New-AzVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -IpConfigurations $gwConfig -GatewayType "Vpn" -VpnType "RouteBased" -GatewaySku "VpnGw1"
    

    注意

    对于共存的网关,必须使用默认 ASN 65515。 有关详细信息,请参阅限制和局限性

    可以通过运行 $azureVpn.BgpSettings.BgpPeeringAddress$azureVpn.BgpSettings.Asn 来查找 Azure 用于 VPN 网关的 BGP 对等 IP 和 AS 编号。 有关详细信息,请参阅为 Azure VPN 网关配置 BGP

  5. 创建一个本地站点 VPN 网关实体。 此命令不会配置本地 VPN 网关, 而是允许提供本地网关设置(如公共 IP 和本地地址空间),以便 Azure VPN 网关可以连接到它。

    如果本地 VPN 设备仅支持静态路由,可按以下方式配置静态路由:

    $MyLocalNetworkAddress = @("10.100.0.0/16","10.101.0.0/16","10.102.0.0/16")
    $localVpn = New-AzLocalNetworkGateway -Name "LocalVPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -GatewayIpAddress "<Public IP>" -AddressPrefix $MyLocalNetworkAddress
    

    如果本地 VPN 设备支持 BGP,并且想要启用动态路由,那么需要知道本地 VPN 设备的 BGP 对等互连 IP 和 AS 编号。

    $localVPNPublicIP = "<Public IP>"
    $localBGPPeeringIP = "<Private IP for the BGP session>"
    $localBGPASN = "<ASN>"
    $localAddressPrefix = $localBGPPeeringIP + "/32"
    $localVpn = New-AzLocalNetworkGateway -Name "LocalVPNGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -GatewayIpAddress $localVPNPublicIP -AddressPrefix $localAddressPrefix -BgpPeeringAddress $localBGPPeeringIP -Asn $localBGPASN
    
  6. 配置本地 VPN 设备以连接到新的 Azure VPN 网关。 有关 VPN 设备配置的详细信息,请参阅 VPN 设备配置

  7. 将 Azure 上的站点到站点 VPN 网关连接到本地网关。

    $azureVpn = Get-AzVirtualNetworkGateway -Name "VPNGateway" -ResourceGroupName $resgrp.ResourceGroupName
    New-AzVirtualNetworkGatewayConnection -Name "VPNConnection" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -VirtualNetworkGateway1 $azureVpn -LocalNetworkGateway2 $localVpn -ConnectionType IPsec -SharedKey "<yourkey>"
    
  8. 如果连接到现有 ExpressRoute 线路,请跳过步骤 8 和 9,并跳到步骤 10。 配置 ExpressRoute 线路。 有关配置 ExpressRoute 线路的详细信息,请参阅创建 ExpressRoute 线路

  9. 配置基于 ExpressRoute 线路的 Azure 专用对等互连。 有关配置基于 ExpressRoute 线路的 Azure 专用对等互连的详细信息,请参阅配置对等互连

  10. 创建 ExpressRoute 网关。 有关 ExpressRoute 网关配置的详细信息,请参阅 ExpressRoute 网关配置。 GatewaySKU 必须是 StandardHighPerformanceUltraPerformance

$gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet
$gwIP = New-AzPublicIpAddress -Name "ERGatewayIP" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -AllocationMethod Dynamic
$gwConfig = New-AzVirtualNetworkGatewayIpConfig -Name "ERGatewayIpConfig" -SubnetId $gwSubnet.Id -PublicIpAddressId $gwIP.Id
$gw = New-AzVirtualNetworkGateway -Name "ERGateway" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -IpConfigurations $gwConfig -GatewayType "ExpressRoute" -GatewaySku Standard
  1. 将 ExpressRoute 网关连接到 ExpressRoute 线路。 完成此步骤后,则已通过 ExpressRoute 建立本地网络与 Azure 之间的连接。 有关链接操作的详细信息,请参阅 将 VNet 链接到 ExpressRoute
$ckt = Get-AzExpressRouteCircuit -Name "YourCircuit" -ResourceGroupName "YourCircuitResourceGroup"
New-AzVirtualNetworkGatewayConnection -Name "ERConnection" -ResourceGroupName $resgrp.ResourceGroupName -Location $location -VirtualNetworkGateway1 $gw -PeerId $ckt.Id -ConnectionType ExpressRoute