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

使用 Azure CLI 创建自定义 IPv4 地址前缀

使用自定义 IPv4 地址前缀,可以将你自己的 IPv4 范围引入 Microsoft,并将其关联到 Azure 订阅。 该范围将继续由你拥有,尽管 Microsoft 可以将它播发到 Internet。 自定义 IP 地址前缀用作区域资源,代表客户拥有的 IP 地址的连续块。

本文中的步骤详细说明了以下过程:

  • 准备要预配的范围

  • 为 IP 分配预配范围

  • 允许 Microsoft 播发范围

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户

先决条件

  • 具有活动订阅的 Azure 帐户。 免费创建帐户
  • 本教程需要 2.28 或更高版本的 Azure CLI(你可以运行 az version 来确定自己拥有的版本)。 如果使用 Azure Cloud Shell,则最新版本已安装。
  • 登录到 Azure CLI,并通过 az account 确保已选择你要将其与此功能配合使用的订阅。
  • 要在 Azure 中预配的客户拥有的 IPv4 范围。
    • 本示例使用了一个示例客户范围 (1.2.3.0/24)。 Azure 不会验证此范围。 请将示例范围替换为你自己的范围。

注意

对于在预配过程中遇到的问题,请参阅自定义 IP 前缀故障排除

预配前的步骤

为了利用 Azure BYOIP 功能,必须在预配 IPv4 地址范围之前执行以下步骤。

要求和前缀就绪情况

  • 地址范围必须归你所有,并在五个主要区域 Internet 注册机构之一以你的名义注册:

  • 地址范围不能小于 /24,这样才能被 Internet 服务提供商接受。

  • 客户必须在相应的路由互联网注册机构 (RIR) 网站上或通过其 API 填写授权 Microsoft 播发地址范围的路由来源授权 (ROA) 文档。 RIR 将要求 ROA 使用 RIR 的资源公钥基础结构 (RPKI) 进行数字签名。

    对于此 ROA:

    • 对于公有云,源 AS 必须列为 8075。 (如果范围将加入 US Gov 云,则源 AS 必须列为 8070。)

    • 有效期结束日期(到期日期)需要考虑到你打算让 Microsoft 播发前缀的时间。 一些 RIR 不提供有效期结束日期作为一个选项,或者为你选择一个日期。

    • 前缀长度应与可以由 Microsoft 播发的前缀完全匹配。 例如,如果你计划将 1.2.3.0/24 和 2.3.4.0/23 引入 Microsoft,应该同时为它们命名。

    • ROA 完成并提交后,至少要等待 24 小时才可供 Microsoft 使用,可在预配过程中对其进行验证以确定其真实性和正确性。

注意

还建议为所有现有的 ASN(该 ASN 正在播发范围)创建 ROA,以避免在迁移过程中出现问题。

重要

虽然 Microsoft 不会在指定日期后停止推广该系列,但如果原始到期日期已过,则强烈建议独立创建后续 ROA,以避免外部运营商不接受广告。

证书就绪情况

为了授权 Microsoft 将前缀与客户订阅相关联,必须将公共证书与签名消息进行比较。

以下步骤演示了准备示例客户范围 (1.2.3.0/24) 以预配到公有云所需的步骤。

注意

在安装了 OpenSSL 的 PowerShell 中执行以下命令。

  1. 必须创建一个自签名 X509 证书,以添加到前缀的 Whois/RDAP 记录中。 有关 RDAP 的信息,请参阅 ARINRIPEAPNICAFRINIC 站点。

    下面是一个利用 OpenSSL 工具包的示例。 以下命令生成了一个 RSA 密钥对,并使用该密钥对创建了一个 6 个月后到期的 X509 证书:

    ./openssl genrsa -out byoipprivate.key 2048
    Set-Content -Path byoippublickey.cer (./openssl req -new -x509 -key byoipprivate.key -days 180) -NoNewline
    
  2. 在证书创建后,更新前缀 Whois/RDAP 记录的公共注释部分。 若要显示内容以进行复制(包括带短划线的 BEGIN/END 头部/尾部),请使用命令 cat byoippublickey.cer。你应该可以通过路由互联网注册机构执行此过程。

    下面是每个注册机构的说明:

    • ARIN - 编辑前缀记录的“注释”。

    • RIPE - 编辑 inetnum 记录的“注解”。

    • APNIC - 使用 MyAPNIC 编辑 inetnum 记录的“备注”。

    • AFRINIC - 使用 MyAFRINIC 编辑 inetnum 记录的“备注”。

    • 对于来自 LACNIC 注册机构的范围,请创建 Microsoft 支持票证。

    填写公共注释后,Whois/RDAP 记录应如下例所示。 确保没有空格或回车符。 包括所有短划线:

    Screenshot of example certificate comment

  3. 若要创建将传递给 Microsoft 的消息,请创建一个包含前缀和订阅相关信息的字符串。 使用上述步骤中生成的密钥对对此消息进行签名。 使用如下所示的格式,替换你的订阅 ID、要预配的前缀以及与 ROA 上的有效期日期匹配的到期日期。 确保格式采用该顺序。

    使用以下命令创建将传递给 Microsoft 进行验证的已签名消息。

    注意

    如果原始 ROA 中未包括有效期结束日期,请选择一个日期,该日期对应于你打算让 Azure 播发前缀的时间。 另请注意,Microsoft 不会在指定日期后停止播发该范围,但如果原始到期日期已过,建议独立创建后续 ROA。

    $byoipauth="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx|1.2.3.0/24|yyyymmdd"
    Set-Content -Path byoipauth.txt -Value $byoipauth -NoNewline
    ./openssl dgst -sha256 -sign byoipprivate.key -keyform PEM -out byoipauthsigned.txt byoipauth.txt
    $byoipauthsigned=(./openssl enc -base64 -in byoipauthsigned.txt) -join ''
    
  4. 若要查看已签名消息的内容,请输入根据之前创建的已签名消息创建的变量,然后在 PowerShell 提示符下选择 Enter:

    $byoipauthsigned
    dIlwFQmbo9ar2GaiWRlSEtDSZoH00I9BAPb2ZzdAV2A/XwzrUdz/85rNkXybXw457//gHNNB977CQvqtFxqqtDaiZd9bngZKYfjd203pLYRZ4GFJnQFsMPFSeePa8jIFwGJk6JV4reFqq0bglJ3955dVz0v09aDVqjj5UJx2l3gmyJEeU7PXv4wF2Fnk64T13NESMeQk0V+IaEOt1zXgA+0dTdTLr+ab56pR0RZIvDD+UKJ7rVE7nMlergLQdpCx1FoCTm/quY3aiSxndEw7aQDW15+rSpy+yxV1iCFIrUa/4WHQqP4LtNs3FATvLKbT4dBcBLpDhiMR+j9MgiJymA==
    

预配步骤

以下步骤展示了将示例客户范围 (1.2.3.0/24) 预配到区域美国西部 2 区域的过程。

注意

考虑到资源的性质,此页上未显示清理或删除步骤。 有关删除预配的自定义 IP 前缀的信息,请参阅管理自定义 IP 前缀

创建资源组并指定前缀和授权消息

在所需位置创建资源组,用于预配 BYOIP 范围。

  az group create \
    --name myResourceGroup \
    --location westus2

预配自定义 IP 地址前缀

以下命令将在指定的区域和资源组中创建一个自定义 IP 前缀。 以 CIDR 表示法将确切前缀指定为字符串,以确保没有语法错误。 对于 --authorization-message 参数,请使用变量 $byoipauth,其中包含你的订阅 ID、要预配的前缀以及与 ROA 上的有效期日期匹配的到期日期。 确保格式采用该顺序。 为“证书就绪情况”部分中创建的 --signed-message 参数使用变量 $byoipauthsigned。

  byoipauth="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx|1.2.3.0/24|yyyymmdd"
  
  az network custom-ip prefix create \
    --name myCustomIpPrefix \
    --resource-group myResourceGroup \
    --location westus2 \
    --cidr ‘1.2.3.0/24’ \
    --zone 1 2 3
    --authorization-message $byoipauth \
    --signed-message $byoipauthsigned

该范围将被推送到 Azure IP 部署管道。 部署过程是异步的。 若要确定状态,请执行以下命令:

 az network custom-ip prefix show \
   --name myCustomIpPrefix \
   --resource-group myResourceGroup

示例输出如下所示,为清楚起见,删除了一些字段:

{
  "cidr": "1.2.3.0/24",
  "commissionedState": "Provisioning",
  "id": "/subscriptions/xxxx/resourceGroups/myResourceGroup/providers/Microsoft.Network/customIPPrefixes/myCustomIpPrefix",
  "location": "westus2",
  "name": myCustomIpPrefix,
  "resourceGroup": "myResourceGroup",
}

“CommissionedState”字段最初应将范围显示为“正在预配”,将来再显示为“已预配”。

注意

完成预配过程预计需要 30 分钟。

重要

当自定义 IP 前缀进入“已预配”状态后,就可以创建子公共 IP 前缀了。 这些公共 IP 前缀和任何公共 IP 地址都可以附加到网络资源。 例如,虚拟机网络接口或负载均衡器前端。 IP 不会被播发,因此无法进行访问。 有关迁移活动前缀的详细信息,请参阅管理自定义 IP 前缀

委托自定义 IP 地址前缀

当自定义 IP 前缀处于“Provisioned”状态时,以下命令将更新前缀,以启动从 Azure 播发范围的过程。

az network custom-ip prefix update \
    --name myCustomIpPrefix \
    --resource-group myResourceGroup \
    --state commission 

与之前一样,该操作是异步的。 使用 az network custom-ip prefix show 来检索状态。 “CommissionedState”字段最初会将前缀显示为“Commissioning”,将来再显示为“Commissioned”。 播发推出不是二进制的,在范围仍处于“正在委托”的情况下,将进行部分播发。

注意

完全完成委托过程预计需要 3-4 小时。

重要

随着自定义 IP 前缀转换为“已委托”状态,范围将由 Microsoft 从本地 Azure 区域播发,并以自治系统号 (ASN) 8075 由 Microsoft 的广域网播发到全球。 如果同时从 Microsoft 以外的位置将此同一范围播发到 Internet,可能会造成 BGP 路由不稳定或流量损失。 例如,客户本地生成。 请将活动范围的任何迁移安排在维护期间,以避免产生影响。 此外,可利用区域委托功能将自定义 IP 前缀置于仅在部署它的 Azure 区域内播发的状态。有关详细信息,请参阅管理自定义 IP 地址前缀 (BYOIP)

后续步骤