配置 VNet 到 VNet 连接(经典)

本文介绍如何在虚拟网络之间创建 VPN 网关连接。 虚拟网络可位于相同或不同的区域,来自相同或不同的订阅。

本文中的步骤适用于经典(旧的)部署模型,不适用于当前部署模型“资源管理器”。 你无法再使用经典部署模型创建网关。 请改为参阅此文的资源管理器版本

重要

你无法再为经典部署模型(服务管理)虚拟网络创建新的虚拟网络网关。 只能为资源管理器虚拟网络创建新的虚拟网络网关。

Diagram showing classic VNet-to-VNet architecture.

注意

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

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

关于 VNet 到 VNet 的连接

在经典部署模型中使用 VPN 网关将一个虚拟网络连接到另一个虚拟网络(VNet 到 VNet)类似于将虚拟网络连接到本地站点位置。 这两种连接类型都使用 VPN 网关来提供使用 IPsec/IKE 的安全隧道。

连接的 VNet 可位于不同的订阅和不同的区域中。 可以将 VNet 到 VNet 通信与多站点配置组合使用。 这样,便可以建立将跨界连接与虚拟网络间连接相结合的网络拓扑。

Diagram showing VNet-VNet connections.

为什么要连接虚拟网络?

出于以下原因,可能需要连接虚拟网络:

  • 跨区域地域冗余和地域存在

    • 可以使用安全连接设置自己的异地复制或同步,而无需借助于面向 Internet 的终结点。
    • 使用 Azure 负载均衡器和 Microsoft 或第三方群集技术,可以设置支持跨多个 Azure 区域实现地域冗余的高可用性工作负荷。 一个重要的示例就是对分布在多个 Azure 区域中的可用性组设置 SQL Always On。
  • 具有强大隔离边界的区域多层应用程序

    • 在同一区域中,可以设置具有多个 VNet 的多层应用程序,这些虚拟网络相互连接在一起,但同时又能保持强大的隔离性,而且还能进行安全的层间通信。
  • 在 Azure 中跨订阅进行组织间通信

    • 如果有多个 Azure 订阅,可以在虚拟网络之间安全地将不同订阅中的工作负荷连接起来。
    • 对于企业或服务提供商而言,可以在 Azure 中使用安全 VPN 技术启用跨组织通信。

有关 VNet 到 VNet 连接的详细信息,请参阅本文末尾的 VNet 到 VNet 注意事项

必备条件

使用门户即可执行大部分步骤,但必须使用 PowerShell 创建 VNet 之间的连接。 无法使用 Azure 门户创建连接,因为在门户中无法指定共享密钥。 使用经典部署模型时,必须在本地计算机上安装最新版本的 Azure 服务管理 (SM) PowerShell cmdlet。 这些 cmdlet 不同于 AzureRM 或 Az cmdlet。 要安装 SM cmdlet,请参阅“安装服务管理 cmdlet”。 有关一般 Azure PowerShell 的详细信息,请参阅 Azure PowerShell 文档

规划

必须确定要用于配置虚拟网络的范围。 对于此配置,必须确保 VNet 的范围不互相重叠,也不与它们连接到的任何本地网络重叠。

VNet

在本练习中,我们使用以下示例值:

用于 TestVNet1 的值

名称:TestVNet1
地址空间:10.11.0.0/16、10.12.0.0/16(可选)
子网名称:默认值
子网地址范围:10.11.0.0/24
资源组:ClassicRG
位置:中国东部
GatewaySubnet:10.11.1.0/27

用于 TestVNet4 的值

名称:TestVNet4
地址空间:10.41.0.0/16、10.42.0.0/16(可选)
子网名称:默认值
子网地址范围:10.41.0.0/24
资源组:ClassicRG
位置:中国北部
GatewaySubnet:10.41.1.0/27

连接

下表显示了有关如何连接 VNet 的示例。 其中的范围仅供参考。 请记下虚拟网络的范围。 后面的步骤需要用到此信息。

在此示例中,TestVNet1 连接到所创建的名为“VNet4Local”的本地网络站点。 VNet4Local 的设置包含 TestVNet4 的地址前缀。 每个 VNet 的本地站点是另一个 VNet。 我们的配置使用以下示例值:

示例

虚拟网络 地址空间 位置 连接到本地网络站点
TestVNet1 TestVNet1
(10.11.0.0/16)
(10.12.0.0/16)
中国东部 SiteVNet4
(10.41.0.0/16)
(10.42.0.0/16)
TestVNet4 TestVNet4
(10.41.0.0/16)
(10.42.0.0/16)
中国北部 SiteVNet1
(10.11.0.0/16)
(10.12.0.0/16)

创建虚拟网络

在此步骤中,你将创建两个经典虚拟网络:TestVNet1 和 TestVNet4。 如果使用本文作为练习,请使用示例值

创建 VNet 时,请注意以下设置:

  • 虚拟网络地址空间 - 在“虚拟网络地址空间”页上,指定要用于虚拟网络的地址范围。 这些都是动态 IP 地址,将分配给你部署到此虚拟网络的 VM 和其他角色实例。
    选择的地址空间不能与任何其他 VNet 的地址空间重叠,也不能与此 VNet 将连接到的本地位置的地址空间重叠。

  • 位置 - 创建虚拟网络时,请将其与某个 Azure 位置(区域)相关联。 例如,如果希望部署到虚拟网络的 VM 的物理位置位于中国北部,请选择该位置。 创建虚拟网络后,将无法更改与虚拟网络关联的位置。

创建 VNet 后,可以添加以下设置:

  • 地址空间 - 此配置不需要额外的地址空间,但可以在创建 VNet 后添加额外的地址空间。

  • 子网 - 此配置不需要额外的子网,但你可能希望使 VM 位于不同于其他角色实例的子网中。

  • DNS 服务器 - 输入 DNS 服务器名称和 IP 地址。 此设置不创建 DNS 服务器。 此设置允许指定要用于对此虚拟网络进行名称解析的 DNS 服务器。

创建经典虚拟网络

  1. 从浏览器导航到 Azure 门户,并在必要时用 Azure 帐户登录。
  2. 选择“+创建资源”。 在“在市场中搜索”字段中,键入“虚拟网络”。 从返回的列表中找到“虚拟网络”,选择它以打开“虚拟网络”页。
  3. 在“虚拟网络”页的“创建”按钮下,可以看到“使用资源管理器部署(更改为经典)”。 “资源管理器”是创建 VNet 的默认设置。 不需要创建资源管理器 VNet。 选择“(更改为经典)”以创建经典 VNet。 然后,选择“概述”选项卡并选择“创建”。
  4. 在“创建虚拟网络(经典)”页的“基本信息”选项卡上,使用示例值配置 VNet 设置。
  5. 选择“查看 + 创建”以验证自己的 VNet。
  6. 此时验证将运行。 验证 VNet 后,选择“创建”。

在此配置过程中不需进行 DNS 设置,但如果希望在 VM 之间进行名称解析,则 DNS 是必需的。 指定一个值不会创建新的 DNS 服务器。 指定的 DNS 服务器 IP 地址应该是可以解析所连接的资源名称的 DNS 服务器。

创建虚拟网络后,可以添加 DNS 服务器的 IP 地址来处理名称解析。 打开虚拟网络的设置,选择“DNS 服务器”,并添加要用于名称解析的 DNS 服务器的 IP 地址。

  1. 在门户中找到虚拟网络。
  2. 在虚拟网络页的“设置”部分,选择“DNS 服务器”。
  3. 添加 DNS 服务器。
  4. 若要保存设置,请选择页面顶部的“保存”。

配置站点和网关

Azure 使用在每个本地网络站点中指定的设置来确定如何在 VNet 之间路由流量。 每个 VNet 都必须指向你要将流量路由到的相应本地网络。 如果需要使用名称来引用每个本地网络站点,由你来决定该名称。 最好使用描述性文本。

例如,TestVNet1 连接到创建的名为“VNet4Local”的本地网络站点。 VNet4Local 的设置包含 TestVNet4 的地址前缀。

请记住,每个 VNet 的本地站点是另一个 VNet。

虚拟网络 地址空间 位置 连接到本地网络站点
TestVNet1 TestVNet1
(10.11.0.0/16)
(10.12.0.0/16)
中国东部 SiteVNet4
(10.41.0.0/16)
(10.42.0.0/16)
TestVNet4 TestVNet4
(10.41.0.0/16)
(10.42.0.0/16)
中国北部 SiteVNet1
(10.11.0.0/16)
(10.12.0.0/16)

配置站点

本地站点通常指本地位置。 它包含你将与之建立连接的 VPN 设备的 IP 地址以及通过 VPN 网关路由到该 VPN 设备的 IP 地址范围。

  1. 在 VNet 页的“设置”下,选择“站点到站点连接”。

  2. 在“站点到站点连接”页上,选择“+ 添加”。

  3. 在“配置 VPN 连接和网关”页上,选择“站点到站点”作为“连接类型” 。

    • VPN 网关 IP 地址:这是本地网络的 VPN 设备的公共 IP 地址。 在本练习中,你可以输入一个虚拟地址,因为你还没有另一站点的 VPN 网关的 IP 地址。 例如 5.4.3.2。 稍后,为另一个 VNet 配置网关后,你可以调整此值。

    • 客户端地址空间: 列出要通过此网关路由到另一 VNet 的 IP 地址范围。 可以添加多个地址空间范围。 请确保在此处指定的范围与虚拟网络连接到的其他网络的范围不重叠,也与虚拟网络本身的地址范围不重叠。

  4. 在页面底部,不要选择“查看 + 创建”, 而应选择“下一步: 网关>”。

配置虚拟网络网关

  1. 在“网关”页上,选择以下值:

    • Size: 这是用于创建虚拟网关的网关 SKU。 经典 VPN 使用老版(旧版)网关 SKU。 有关旧版网关 SKU 的详细信息,请参阅使用虚拟网关 SKU(老版 SKU)。 在此练习中,可以选择“标准”。

    • 网关子网: 指定的网关子网的大小取决于要创建的 VPN 网关配置。 尽管网关子网最小可以创建为 /29,但建议使用 /27 或 /28。 这样可以创建较大的子网,包含的地址更多。 使用更大的网关子网可以有足够的 IP 地址来应对未来可能会有的配置。

  2. 选择页面底部的“查看 + 创建”以验证你的设置。 选择“创建”以进行部署。 创建虚拟网关可能需要长达 45 分钟的时间,具体取决于所选网关 SKU。

  3. 在创建此网关期间,你可以开始执行下一步。

配置 TestVNet4 设置

重复创建站点和网关中的步骤来配置 TestVNet4,并在必要时对值进行替换。 如果是作为练习执行此操作,请使用示例值

更新本地站点

在为两个 VNet 创建虚拟网关后,必须调整 VPN 网关 IP 地址的本地站点属性。

VNet 名称 连接的站点 网关 IP 地址
TestVNet1 VNet4Local TestVNet4 的 VPN 网关 IP 地址
TestVNet4 VNet1Local TestVNet1 的 VPN 网关 IP 地址

第 1 部分 - 获取虚拟网络网关的公共 IP 地址

  1. 通过转到“资源组”并选择虚拟网络导航到你的 VNet。
  2. 在虚拟网络的页面上,在右侧的“概要”窗格中找到“网关 IP 地址”并将其复制到剪贴板。

第 2 部分 - 修改本地站点属性

  1. 在“站点到站点连接”下,选择连接。 例如,SiteVNet4。
  2. 在站点到站点连接的“属性”页上,选择“编辑本地站点”。
  3. 在“VPN 网关 IP 地址”字段中,粘贴你在上一部分复制的 VPN 网关 IP 地址。
  4. 选择“确定”。
  5. 该字段会在系统中更新。 你还可以使用此方法添加要路由到此站点的其他 IP 地址。

第 3 部分 - 针对其他 VNet 重复上述步骤

针对 TestVNet4 重复上述步骤。

检索配置值

在 Azure 门户中创建经典 VNet 时,看到的名称不是用于 PowerShell 的完整名称。 例如,在门户中命名为 TestVNet1 的 VNet 在网络配置文件中可能具有更长的名称。 对于资源组中的 VNet,“ClassicRG”名称可能如下所示:Group ClassicRG TestVNet1。 在创建连接时,请务必使用在网络配置文件中看到的值。

在下面的步骤中,将连接到 Azure 帐户并下载和查看网络配置文件来获取连接所需的值。

  1. 下载和安装最新版本的 Azure 服务管理 (SM) PowerShell cmdlet。 大多数人在本地安装了资源管理器模块,但未安装服务管理模块。 服务管理模块是旧版的,必须单独安装。 有关详细信息,请参阅安装服务管理 cmdlet

  2. 使用提升的权限打开 PowerShell 控制台,并连接到帐户。 使用下面的示例来帮助你连接。 必须使用 PowerShell 服务管理模块在本地运行这些命令。 连接到帐户。 使用下面的示例来帮助连接:

    Add-AzureAccount -Environment AzureChinaCloud
    
  3. 检查该帐户的订阅。

    Get-AzureSubscription
    
  4. 如果有多个订阅,请选择要使用的订阅。

    Select-AzureSubscription -SubscriptionId "Replace_with_your_subscription_ID"
    
  5. 在计算机上创建目录。 例如 C:\AzureVNet

  6. 将网络配置文件导出到目录。 在此示例中,网络配置文件导出到 C:\AzureNet

    Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
    
  7. 使用文本编辑器打开该文件,并查看 VNet 和站点的名称。 创建连接时会使用这些名称。
    VNet 名称以 VirtualNetworkSite name = 形式列出
    站点名称以 LocalNetworkSiteRef name = 形式列出

创建连接

完成前面的所有步骤后,可以设置 IPsec/IKE 预共享密钥并创建连接。 这组步骤使用 PowerShell。 无法在 Azure 门户中配置经典部署模型的 VNet 到 VNet 连接,因为在门户中无法指定共享密钥。

在示例中,可以看到共享密钥完全相同。 共享的密钥必须始终匹配。 务必将这些示例中的值替换为 VNet 和本地网络站点的确切名称。

  1. 创建 TestVNet1 到 TestVNet4 的连接。 务必更改值。

    Set-AzureVNetGatewayKey -VNetName 'Group ClassicRG TestVNet1' `
    -LocalNetworkSiteName 'value for _VNet4Local' -SharedKey A1b2C3D4
    
  2. 创建 TestVNet4 到 TestVNet1 的连接。

    Set-AzureVNetGatewayKey -VNetName 'Group ClassicRG TestVNet4' `
    -LocalNetworkSiteName 'value for _VNet1Local' -SharedKey A1b2C3D4
    
  3. 等待连接初始化。 在网关初始化后,状态将变为“成功”。

    Error          :
    HttpStatusCode : OK
    Id             :
    Status         : Successful
    RequestId      :
    StatusCode     : OK
    

常见问题解答和注意事项

这些注意事项适用于经典虚拟网络和经典虚拟网络网关。

  • 虚拟网络可以在相同或不同的订阅中。
  • 虚拟网络可以在相同或不同的 Azure 区域(位置)中。
  • 云服务或负载均衡终结点不能跨虚拟网络,即使它们连接在一起,也是如此。
  • 将多个虚拟网络连接在一起不需要任何 VPN 设备。
  • VNet 到 VNet 通信支持连接 Azure 虚拟网络。 它不支持连接不在虚拟网络中部署的虚拟机或云服务。
  • VNet 到 VNet 通信需要动态路由网关。 不支持 Azure 静态路由网关。
  • 虚拟网络连接可与多站点 VPN 同时使用。 最多可以将一个虚拟网络 VPN 网关的 10 个 VPN 隧道连接到其他虚拟网络或本地站点。
  • 虚拟网络和本地网络站点的地址空间不得重叠。 地址空间重叠会导致创建虚拟网络或上传 netcfg 配置文件失败。
  • 不支持一对虚拟网络之间存在冗余隧道。
  • VNet 的所有 VPN 隧道(包括 P2S VPN)共享 VPN 网关上的可用带宽,以及 Azure 中的相同 VPN 网关运行时间 SLA。
  • VNet 到 VNet 流量会流经 Azure 主干。

后续步骤

验证连接。 请参阅验证 VPN 网关连接