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

创建站点到站点 VPN 连接 - 共享密钥身份验证 - Azure CLI

本文介绍如何使用 Azure CLI 创建从本地网络到虚拟网络的站点到站点 (S2S) VPN 网关连接。 也可使用其他部署工具来创建此配置,方法是从以下列表中选择另一选项:

CLI 项目的站点到站点 VPN 网关跨界连接示意图。

使用站点到站点 VPN 网关连接,通过 IPsec/IKE(IKEv1 或 IKEv2)VPN 隧道将本地网络连接到 Azure 虚拟网络。 此类型的连接要求位于本地的 VPN 设备分配有一个面向外部的公共 IP 地址。 有关 VPN 网关的详细信息,请参阅关于 VPN 网关

开始之前

在开始配置之前,请验证环境是否符合以下条件:

  • 拥有包含活动订阅的 Azure 帐户。 如果没有帐户,可以免费创建一个
  • 如果不熟悉本地网络配置中的 IP 地址范围,则需咨询能够提供此类详细信息的人员。 创建此配置时,必须指定 IP 地址范围前缀,Azure 会将该前缀路由到本地位置。 本地网络的任何子网都不得与要连接到的虚拟网络子网重叠。
  • VPN 设备:
    • 确保有一台兼容的 VPN 设备,并且可对其进行配置。 有关兼容的 VPN 设备和设备配置的详细信息,请参阅关于 VPN 设备
    • 验证 VPN 设备是否支持主动-主动模式网关。 本文将创建主动-主动模式 VPN 网关,建议将该网关用于高可用性连接。 主动-主动模式会指定两个网关 VM 实例均处于活动状态。 此模式需要两个公共 IP 地址,每个网关 VM 实例使用一个。 将 VPN 设备配置为连接到每个网关 VM 实例的 IP 地址。
      如果 VPN 设备不支持此模式,请不要为网关启用此模式。 有关详细信息,请参阅为跨界连接和 VNet 到 VNet 连接设计高可用性连接关于主动-主动模式 VPN 网关
  • 本文需要 Azure CLI 版本 2.0 或更高版本。 如果使用 Azure Cloud Shell,则最新版本已安装。

连接到订阅

如果选择在本地运行 CLI,请连接到订阅。 如果是在浏览器中使用 Azure Cloud Shell,则无需连接到订阅。 但你可能需要在连接后验证所使用的订阅是否正确。

使用 az login 命令登录到 Azure 订阅,并按照屏幕上的说明进行操作。 有关登录的详细信息,请参阅 Azure CLI 入门

az login

如果有多个 Azure 订阅,请列出该帐户的订阅。

az account list --all

指定要使用的订阅。

az account set --subscription <replace_with_your_subscription_id>

创建资源组

以下示例在“eastus”位置创建名为“TestRG1”的资源组。 如果在要创建虚拟网络的区域中已有一个资源组,则可改用该资源组。

az group create --name TestRG1 --location eastus

创建虚拟网络

如果还没有虚拟网络,请使用 az network vnet create 命令创建一个。 创建虚拟网络时,请确保指定的地址空间不与本地网络的任一个地址空间相重叠。

注意

为将此虚拟网络连接到本地位置,需要与本地网络管理员协调,以划分出可以专用于此虚拟网络的 IP 地址范围。 如果 VPN 连接的两侧存在重复的地址范围,则流量不会按预期的方式路由。 此外,如果要将此虚拟网络连接到另一个虚拟网络,则地址空间不能与另一虚拟网络重叠。 请注意对网络配置进行相应的计划。

以下示例创建一个名为“VNet1”的虚拟网络和一个名为“Subnet1”的子网。

az network vnet create --name VNet1 --resource-group TestRG1 --address-prefix 10.1.0.0/16 --location eastus --subnet-name Subnet1 --subnet-prefix 10.1.0.0/24

创建网关子网

虚拟网络网关使用称作“网关子网”的特定子网。 网关子网是虚拟网络 IP 地址范围的一部分,该范围是在配置虚拟网络时指定的。 网关子网包含虚拟网络网关资源和服务使用的 IP 地址。 要使 Azure 能够部署网关资源,必须将子网命名为“GatewaySubnet”。 不能指定要将网关资源部署到的其他子网。 如果没有名为“GatewaySubnet”的子网,则无法创建 VPN 网关。

创建网关子网时,需指定子网包含的 IP 地址数。 所需的 IP 地址数目取决于要创建的 VPN 网关配置。 有些配置需要具有比其他配置更多的 IP 地址。 我们建议创建使用 /27 或 /28 的网关子网。

如果出现错误,指出地址空间与子网重叠,或者子网不包含在虚拟网络的地址空间中,请检查 VNet 地址范围。 出错的原因可能是为虚拟网络创建的地址范围中没有足够的可用 IP 地址。 例如,如果默认子网包含整个地址范围,则不会有剩余的 IP 地址用于创建更多子网。 可以调整现有地址空间中的子网以释放 IP 地址,或指定额外的地址范围并在其中创建网关子网。

使用 az network vnet subnet create 命令创建网关子网。

az network vnet subnet create --address-prefix 10.1.255.0/27 --name GatewaySubnet --resource-group TestRG1 --vnet-name VNet1

重要

不支持网关子网上的网络安全组 (NSG)。 将网络安全组关联到此子网可能会导致虚拟网络网关(VPN 和 ExpressRoute 网关)停止按预期方式工作。 有关网络安全组的详细信息,请参阅什么是网络安全组?

创建本地网络网关

本地网络网关通常是指本地位置。 可以为站点提供一个名称供 Azure 引用,并指定本地 VPN 设备的 IP 地址,以便创建一个连接来连接到该设备。 此外还可指定 IP 地址前缀,以便通过 VPN 网关将其路由到 VPN 设备。 指定的地址前缀是位于本地网络的前缀。 如果本地网络出现变化,可以轻松更新这些前缀。

使用以下值:

  • --gateway-ip-address 是本地 VPN 设备的 IP 地址。
  • --local-address-prefixes 是本地地址空间。

使用 az network local-gateway create 命令添加具有多个地址前缀的本地网关:

az network local-gateway create --gateway-ip-address 203.0.133.8 --name Site1 --resource-group TestRG1 --local-address-prefixes 192.168.1.0/24 192.168.3.0/24

请求公共 IP 地址

VPN 网关必须使用公共 IP 地址。 如果要创建主动-主动网关(建议),则必须请求两个公共 IP 地址。 有关主动-主动网关配置的详细信息,请参阅创建虚拟网络网关时,请先请求 IP 地址资源,然后再引用它。 创建 VPN 网关时,将会向资源分配 IP 地址。 公共 IP 地址只在删除或重新创建网关时会更改。 该地址不会因为 VPN 网关大小调整、重置或其他内部维护/升级而更改。 如果要使用基本网关 SKU 创建 VPN 网关,请使用以下值请求一个公共 IP 地址:--allocation-method Dynamic --sku Basic

使用 az network public-ip create 命令请求公共 IP 地址。

az network public-ip create --name VNet1GWpip1 --resource-group TestRG1 --allocation-method Static --sku Standard --version IPv4 --zone 1 2 3

要创建主动-主动网关(建议),可请求第二个公共 IP 地址:

az network public-ip create --name VNet1GWpip2 --resource-group TestRG1 --allocation-method Static --sku Standard --version IPv4 --zone 1 2 3

创建 VPN 网关

创建虚拟网络 VPN 网关。 创建网关通常需要 45 分钟或更长的时间,具体取决于所选的网关 SKU。

使用以下值:

  • 站点到站点配置的 --gateway-typeVpn。 网关类型永远是你要实现的配置的特定类型。 有关详细信息,请参阅网关类型
  • --vpn-type 为 RouteBased。
  • 选择要使用的网关 SKU。 某些 SKU 存在配置限制。 有关详细信息,请参阅网关 SKU

使用 az network vnet-gateway create 命令创建 VPN 网关。 如果使用“--no-wait”参数运行该命令,则不会显示任何反馈或输出。 此参数允许在后台创建网关。 创建网关需要 45 分钟或更长时间,具体取决于 SKU。

主动-主动模式网关

az network vnet-gateway create --name VNet1GW --public-ip-addresses VNet1GWpip1 VNet1GWpip2 --resource-group TestRG1 --vnet VNet1 --gateway-type Vpn --vpn-type RouteBased --sku VpnGw2AZ --vpn-gateway-generation Generation2 --no-wait

主动-备用模式网关

az network vnet-gateway create --name VNet1GW --public-ip-addresses VNet1GWpip1 --resource-group TestRG1 --vnet VNet1 --gateway-type Vpn --vpn-type RouteBased --sku VpnGw2AZ --vpn-gateway-generation Generation2 --no-wait

配置 VPN 设备

通过站点到站点连接连接到本地网络需要 VPN 设备。 在此步骤中,请配置 VPN 设备。 配置 VPN 设备时,需要以下值:

  • 共享密钥:此共享密钥与创建站点到站点 VPN 连接时指定的密钥相同。 示例将使用简单的共享密钥。 建议生成更复杂的可用密钥。

  • 虚拟网络网关实例的公共 IP 地址:获取每个 VM 实例的 IP 地址。 如果网关处于主动-主动模式,则每个网关 VM 实例都将有一个 IP 地址。 请务必为设备配置这两个 IP 地址,每个主动网关 VM 各一。 主动-备用模式网关只有一个 IP 地址。

    注意

    对于具有主动-主动模式 VPN 网关的 S2S 连接,请确保为每个网关 VM 实例建立隧道。 如果仅与一个网关 VM 实例建立隧道,则连接将在维护期间关闭。 如果 VPN 设备不支持此设置,请改为配置适用于主动-备用模式的网关。

    若要查找虚拟网关的公共 IP 地址,请使用 az network public-ip list 命令。 为了方便阅读,对输出进行了格式化,以表格式显示一系列公共 IP。

    az network public-ip list --resource-group TestRG1 --output table
    

根据所用的 VPN 设备,有时可以下载 VPN 设备配置脚本。 有关详细信息,请参阅下载 VPN 设备配置脚本

以下链接提供了更多配置信息:

创建 VPN 连接

在虚拟网关和本地 VPN 设备之间创建站点到站点 VPN 连接。 请特别注意共享密钥值,该值必须与为 VPN 设备配置的共享密钥值相符。

使用 az network vpn-connection create 命令创建连接。 如果要创建高度可用的网关配置(例如主动-主动模式),请创建其他连接。

az network vpn-connection create --name VNet1toSite1 --resource-group TestRG1 --vnet-gateway1 VNet1GW -l eastus --shared-key abc123 --local-gateway2 Site1

在一小段时间后,将建立该连接。

验证 VPN 连接

可使用 az network vpn-connection show 命令来验证连接是否成功。 在此示例中,“--name”是指要测试的连接的名称。 当连接处于建立过程中时,连接状态会显示“正在连接”。 建立连接后,状态更改为“已连接”。 使用你的环境的值修改以下示例。

az network vpn-connection show --name <connection-name> --resource-group <resource-group-name>

若要使用其他方法来验证连接,请参阅验证 VPN 网关连接

常见任务

本部分包含各种常用命令,这些命令在进行站点到站点配置时很有用。 有关 CLI 网络命令的完整列表,请参阅 Azure CLI - 网络

查看本地网关

若要查看本地网关的列表,请使用 az network local-gateway list 命令。

az network local-gateway list --resource-group TestRG1

修改本地网关 IP 地址前缀 - 无网关连接

如果没有网关连接且需要添加或删除 IP 地址前缀,则可使用 az network local-gateway create 命令,该命令也是用来创建本地网关的。 也可使用该命令来更新 VPN 设备的网关 IP 地址。 请使用本地网关的现有名称来覆盖当前设置。 如果使用其他名称,请创建一个新的本地网关,而不是覆盖现有的。

每次进行更改时,必须指定前缀的完整列表,不能仅指定要更改的前缀。 仅指定需要保留的前缀。 此例中为 10.0.0.0/24 和 20.0.0.0/24

az network local-gateway create --gateway-ip-address 23.99.221.164 --name Site2 -g TestRG1 --local-address-prefixes 10.0.0.0/24 20.0.0.0/24

修改本地网关 IP 地址前缀 - 存在网关连接

如果有网关连接且需要添加或删除 IP 地址前缀,可使用 az network local-gateway update 更新前缀。 这会导致 VPN 连接中断一段时间。 修改 IP 地址前缀时,不需删除 VPN 网关。

每次进行更改时,必须指定前缀的完整列表,不能仅指定要更改的前缀。 在此示例中,10.0.0.0/24 和 20.0.0.0/24 已存在。 我们会添加前缀 30.0.0.0/24 和 40.0.0.0/24,并在更新时指定所有 4 个前缀。

az network local-gateway update --local-address-prefixes 10.0.0.0/24 20.0.0.0/24 30.0.0.0/24 40.0.0.0/24 --name VNet1toSite2 -g TestRG1

修改本地网关的“gatewayIpAddress”

如果要连接的 VPN 设备已更改其公共 IP 地址,则需根据该更改修改本地网关。 可以更改网关 IP 地址而不删除现有的 VPN 网关连接(如果有)。 要修改网关 IP 地址,请使用 az network local-gateway update 命令将值“Site2”和“TestRG1”替换为自己的值。

az network local-gateway update --gateway-ip-address 23.99.222.170 --name Site2 --resource-group TestRG1

验证输出中的 IP 地址是否正确:

"gatewayIpAddress": "23.99.222.170",

验证共享密钥值

验证共享密钥值与用于 VPN 设备配置的值是否相同。 如果不同,请使用设备提供的值再次运行链接,或者使用返回的值更新设备。 值必须匹配。 若要查看共享的密钥,请使用 az network vpn-connection-list

az network vpn-connection shared-key show --connection-name VNet1toSite2 --resource-group TestRG1

查看 VPN 网关的公共 IP 地址

若要查找虚拟网关的公共 IP 地址,请使用 az network public-ip list 命令。 为了方便阅读,对本示例的输出进行了格式化,以表格式显示一系列公共 IP。

az network public-ip list --resource-group TestRG1 --output table

后续步骤