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

为 Azure ExpressRoute 专用对等互连配置自定义 BGP 社区

BGP 社区是以社区值标记的 IP 前缀分组。 此值可用于在路由器的基础结构上做出路由决策。 你可以通过 BGP 社区标记为 Azure 发送到本地的流量应用筛选器或指定路由首选项。 本文介绍了如何使用 Azure PowerShell 为虚拟网络应用自定义 BGP 社区值。 配置后即可查看虚拟网络的区域 BGP 社区值和自定义社区值。 此值将用于该虚拟网络通过 ExpressRoute 发送的出站流量。

必备条件

  • 在开始配置之前,请先查看先决条件路由要求工作流

  • 必须有一个活动的 ExpressRoute 线路。

    • 请按说明创建 ExpressRoute 线路,并通过连接提供商启用该线路。
    • 请确保为线路配置 Azure 专用对等互连。 有关路由说明,请参阅配置路由一文。
    • 确保已配置 Azure 专用对等互连,并建立网络和 Microsoft 之间的 BGP 对等互连,以便进行端到端连接。

使用 Azure PowerShell

本文中的步骤和示例使用 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

为新的虚拟网络应用自定义 BGP 社区值

  1. 若要启动配置,请登录到你的 Azure 帐户,选择要使用的订阅。

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

    Connect-AzAccount
    

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

    Get-AzSubscription
    

    指定要使用的订阅。

    Select-AzSubscription -SubscriptionName "Name of subscription"
    
  2. 创建用于存储新的虚拟网络的资源组。

    $rg = @{
        Name = 'myERRG'
        Location = 'WestUS'
    }
    New-AzResourceGroup @rg
    
  3. 使用 -BgpCommunity 标记创建新的虚拟网络以应用 BGP 社区值。

    $vnet = @{
        Name = 'myVirtualNetwork'
        ResourceGroupName = 'myERRG'
        Location = 'WestUS'
        AddressPrefix = '10.0.0.0/16'
        BgpCommunity = '12076:20001'    
    }
    New-AzVirtualNetwork @vnet
    

    备注

    自定义社区值前需要 12076:

  4. 检索虚拟网络并查看其属性。 你会注意到包含一个 RegionalCommunity 值和一个 VirtualNetworkCommunity 值的 BgpCommunity 部分。 RegionalCommunity 值是根据虚拟网络的 Azure 区域预定义的。 VirtualNetworkCommunity 值应匹配自定义定义。

    $virtualnetwork = @{
        Name = 'myVirtualNetwork'
        ResourceGroupName = 'myERRG'
    } 
    Get-AzVirtualNetwork @virtualnetwork
    

应用或更新现有虚拟网络的自定义 BGP 值

  1. 获取要应用或更新 BGP 社区值的虚拟网络,并将其存储到一个变量中。

    $virtualnetwork = @{
        Name = 'myVirtualNetwork'
        ResourceGroupName = 'myERRG'
    } 
    $vnet = Get-AzVirtualNetwork @virtualnetwork
    
  2. 更新虚拟网络的 VirtualNetworkCommunity 值。

    $vnet.BgpCommunities = @{VirtualNetworkCommunity = '12076:20002'}
    $vnet | Set-AzVirtualNetwork
    

    注意

    自定义社区值前需要 12076:

  3. 检索虚拟网络并查看其更新后的属性。 RegionalCommunity 值基于虚拟网络的 Azure 区域而预定义;若要查看专用对等互连的区域 BGP 社区值,请参阅 ExpressRoute 路由要求。 VirtualNetworkCommunity 值应匹配自定义定义。

    $virtualnetwork = @{
        Name = 'myVirtualNetwork'
        ResourceGroupName = 'myERRG'
    } 
    Get-AzVirtualNetwork @virtualnetwork
    

后续步骤