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

通过 Azure PowerShell 在 Azure Stack Edge Mini R 设备上配置 VPN

VPN 选项为动态数据在通过 TLS 从 Azure Stack Edge Mini R 或 Azure Stack Edge Pro R 设备传输到 Azure 时提供第二层加密。 可以通过 Azure 门户或 Azure PowerShell 在 Azure Stack Edge Mini R 设备上配置 VPN。

本文介绍使用 Azure PowerShell 脚本在 Azure Stack Edge Mini R 设备上配置点到站点 (P2S) VPN 以在云中创建配置所需的步骤。 Azure Stack Edge 设备上的配置是通过本地 UI 完成的。

关于 VPN 设置

通过 P2S VPN 网关连接,可以从单个客户端计算机或 Azure Stack Edge Mini R 设备创建与虚拟网络的安全连接。 从客户端计算机或设备启动 P2S 连接。 在本例中,P2S 连接使用基于标准的 IPsec VPN 解决方案 IKEv2 VPN。

典型的工作流包括以下步骤:

  1. 配置先决条件。
  2. 在 Azure 上设置必要的资源。
    1. 创建和配置虚拟网络和所需的子网。
    2. 创建和配置 Azure VPN 网关(虚拟网络网关)。
    3. 设置 Azure 防火墙并添加网络和应用规则。
    4. 创建 Azure 路由表并添加路由。
    5. 在 VPN 网关中启用点到站点。
      1. 添加客户端地址池。
      2. 配置隧道类型。
      3. 配置身份验证类型。
      4. 创建证书。
      5. 上传证书。
    6. 下载电话簿。
  3. 在设备的本地 Web UI 中设置 VPN。
    1. 提供电话簿。
    2. 提供服务标记 (json) 文件。

以下部分提供了详细步骤。

配置先决条件

  • 根据 安装 Azure Stack Edge Mini R 设备中的说明,您应该已经成功安装 Azure Stack Edge Mini R 设备并能够访问它。 此设备将与 Azure 建立 P2S 连接。

  • 你应该有权访问在 Azure 中为 Azure Stack Edge 服务启用的有效 Azure 订阅。 使用此订阅在 Azure 中创建相应的资源来管理 Azure Stack Edge Mini R 设备。

  • 你可以使用 Windows 客户端访问 Azure Stack Edge Mini R 设备。 你将使用此客户端以编程方式在云中创建配置。

    1. 若要在 Windows 客户端上安装所需的 PowerShell 版本,请运行以下命令:

      Install-Module -Name Az -AllowClobber -Scope CurrentUser 
      Import-Module Az.Accounts
      
    2. 若要连接到 Azure 帐户和订阅,请运行以下命令:

      Connect-AzAccount 
      Set-AzContext -Subscription "<Your subscription name>"
      

      提供用于 Azure Stack Edge Mini R 设备的 Azure 订阅名称以配置 VPN。

    3. 下载 在云中创建配置所需的脚本。 该脚本将会:

      • 创建 Azure 虚拟网络和以下子网: GatewaySubnetAzureFirewallSubnet
      • 创建和配置 Azure VPN 网关。
      • 创建和配置 Azure 本地网络网关。
      • 在 Azure VPN 网关和本地网络网关之间创建和配置 Azure VPN 连接。
      • 创建 Azure 防火墙并添加网络规则、应用规则。
      • 创建 Azure 路由表并向其添加路由。
    4. 在要在其中创建 Azure 资源的 Azure 门户中创建资源组。 转到 Azure 门户中的服务列表,选择 “资源组 ”,然后选择“ + 添加”。 提供资源组的订阅信息和名称,然后选择“ 创建”。 如果转到此资源组,此时该资源组下不应有任何资源。

      Azure 资源组

    5. 需要您为 Azure Stack Edge Mini R 设备准备一个 Base 64 编码的证书,并确保其格式为 .cer。 此证书应以私钥形式作为pfx 上传到 Azure Stack Edge 设备。 此证书还需要安装在尝试建立 P2S 连接的客户端上的存储的受信任根目录中。

使用脚本

首先修改 parameters-p2s.json 文件以输入参数。 接下来,使用修改后的 json 文件运行脚本。

以下各节将讨论上述每个步骤。

下载服务标记文件

你可能已在下载脚本的文件夹中有一个 ServiceTags.json 文件。 如果没有,您可以下载服务标签文件。

将服务标记从 Azure 下载到本地客户端,并将其另存为包含脚本的同一文件夹中的 json 文件: https://www.microsoft.com/download/details.aspx?id=56519

此文件将在后续步骤的本地 Web UI 中上传。

修改参数文件

第一步是修改 parameters-p2s.json 文件并保存更改。

对于创建的 Azure 资源,请提供以下名称:

参数名称 Description
virtualNetworks_vnet_name Azure 虚拟网络名称
azureFirewalls_firewall_name Azure 防火墙名称
routeTables_routetable_name Azure 路由表名称
publicIPAddresses_VNGW_public_ip_name 虚拟网络网关的公共 IP 地址名称
虚拟网络网关_VNGW_名称 Azure VPN 网关(虚拟网络网关)名称
publicIPAddresses_firewall_public_ip_name (公共IP地址_防火墙_公共IP名称) Azure 防火墙的公共 IP 地址名称
位置 这是要在其中创建虚拟网络的区域。 选择与设备关联的相同的区域。
RouteTables_routetable_onprem_name 这是其他路由表的名称,可帮助防火墙将数据包路由回 Azure Stack Edge 设备。 该脚本将创建两个附加路由,并将 defaultFirewallSubnet 与此路由表相关联。

为创建的 Azure 资源提供以下 IP 地址和地址空间,包括虚拟网络和关联的子网(默认防火墙GatewaySubnet)。

参数名称 Description
VnetIPv4AddressSpace 这是与虚拟网络关联的地址空间。 提供 Vnet IP 范围作为专用 IP 范围(https://en.wikipedia.org/wiki/Private_network#Private_IPv4_addresses)。
默认子网IPv4地址空间 这是与虚拟网络子网 Default 关联的地址空间。
Firewall子网IPv4地址空间 这是与虚拟网络子网 Firewall 关联的地址空间。
网关子网IPv4地址空间 这是与 GatewaySubnet 虚拟网络关联的地址空间。
GatewaySubnetIPv4bgpPeeringAddress 这是为 BGP 通信保留的 IP 地址,该地址源自与 GatewaySubnet 虚拟网络关联的地址空间。
客户端地址池 此 IP 地址用于 Azure 门户中 P2S 配置中的地址池。
PublicCertData VPN 网关使用公共证书数据对连接到它的 P2S 客户端进行身份验证。 若要获取证书数据,请安装根证书。 确保证书使用 .cer 扩展进行 Base-64 编码。 打开此证书,并在一个连续行中复制证书中的 ==BEGIN CERTIFICATE== 和 ==END CERTIFICATE== 之间的文本。

运行脚本

按照以下步骤使用修改 parameters-p2s.json 后的脚本并运行脚本来创建 Azure 资源。

  1. 运行 PowerShell。 切换到脚本所在的目录。

  2. 运行脚本。

    .\AzDeployVpn.ps1 -Location <Location> -AzureAppRuleFilePath "appRule.json" -AzureIPRangesFilePath "<Service tag json file>" -ResourceGroupName "<Resource group name>" -AzureDeploymentName "<Deployment name>" -NetworkRuleCollectionName "<Name for collection of network rules>" -Priority 115 -AppRuleCollectionName "<Name for collection of app rules>"

    注释

    在此版本中,该脚本仅适用于美国东部位置。

    运行脚本时需要输入以下信息:

    参数 Description
    位置 这是必须在其中创建 Azure 资源的区域。
    AzureAppRuleFilePath 这是appRule.json的文件路径。
    AzureIPRangesFilePath 这是在前面的步骤中下载的服务标记 json 文件。
    ResourceGroupName 这是在其中创建所有 Azure 资源的资源组的名称。
    AzureDeploymentName 这是 Azure 部署的名称。
    NetworkRuleCollectionName 这是创建并添加到 Azure 防火墙的所有网络规则集合的名称。
    Priority 这是分配给创建的所有网络和应用程序规则的优先级。
    应用程序规则集合名称 (AppRuleCollectionName) 这是创建并添加到 Azure 防火墙的所有应用程序规则集合的名称。

    下面显示了一个示例输出。

    PS C:\Offline docs\AzureVpnConfigurationScripts> .\AzDeployVpn.ps1 -Location eastus -AzureAppRuleFilePath "appRule.json" -AzureIPRangesFilePath ".\ServiceTags_Public_20200203.json" -ResourceGroupName "mytmarg3" -AzureDeploymentName "tmap2stestdeploy1" -NetworkRuleCollectionName "testnrc1" -Priority 115 -AppRuleCollectionName "testarc2"
        validating vpn deployment parameters
        Starting vpn deployment
        C:\Offline docs\AzureVpnConfigurationScripts\parameters-p2s.json
        C:\Offline docs\AzureVpnConfigurationScripts\template-p2s.json
        vpn deployment: tmap2stestdeploy1 started and status: Running
        Waiting for vpn deployment completion....
        ==== CUT ==================== CUT ==============
        Adding route 191.236.0.0/18 for AzureCloud.eastus
        Adding route 191.237.0.0/17 for AzureCloud.eastus
        Adding route 191.238.0.0/18 for AzureCloud.eastus
        Total Routes:294, Existing Routes: 74, New Routes Added: 220
        Additional routes getting added
    

    重要

    • 运行脚本大约需要 90 分钟。 请确保在脚本启动前立即登录到网络。
    • 如果出于任何原因,脚本会话失败,请确保删除资源组以删除其下创建的所有资源。

    脚本完成后,会在脚本所在的同一文件夹中生成部署日志。

验证 Azure 资源

成功运行脚本后,请验证是否已在 Azure 中创建所有资源。 转到创建的资源组。 您应该能看到以下资源:

Azure 资源

下载 VPN 配置文件的电话簿

在此步骤中,下载设备的 VPN 配置文件。

  1. 在 Azure 门户中,转到资源组,然后选择在前面的步骤中创建的虚拟网络网关。

    Azure 虚拟网络网关

  2. 转到“设置”>“点到站点配置”。 选择 “下载 VPN 客户端”。

    启用 P2S 配置 1

  3. 保存压缩的配置文件并在 Windows 客户端上提取。

    启用 P2S 配置 2

  4. 转到 WindowsAmd64 文件夹,然后提取 .exeVpnClientSetupAmd64.exe

    启用 P2S 配置 3

  5. 创建临时路径。 例如:

    C:\NewTemp\vnet\tmp

  6. 运行 PowerShell 并转到所在 .exe 目录。 若要执行 .exe,请键入:

    .\VpnClientSetupAmd64.exe /Q /C /T:"C:\NewTemp\vnet\tmp"

  7. 临时路径将具有新文件。 下面是示例输出:

    
    PS C:\windows\system32> cd "C:\Users\Ase\Downloads\vngw5\WindowsAmd64"
    PS C:\Users\Ase\Downloads\vngw5\WindowsAmd64> .\VpnClientSetupAmd64.exe /Q /C /T:"C:\NewTemp\vnet\tmp"
    PS C:\Users\Ase\Downloads\vngw5\WindowsAmd64> cd "C:\NewTemp\vnet"
    PS C:\NewTemp\vnet> ls .\tmp
    
        Directory: C:\NewTemp\vnet\tmp
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    -a----         2/6/2020   6:18 PM            947 8c670077-470b-421a-8dd8-8cedb4f2f08a.cer
    -a----         2/6/2020   6:18 PM            155 8c670077-470b-421a-8dd8-8cedb4f2f08a.cmp
    -a----         2/6/2020   6:18 PM           3564 8c670077-470b-421a-8dd8-8cedb4f2f08a.cms
    -a----         2/6/2020   6:18 PM          11535 8c670077-470b-421a-8dd8-8cedb4f2f08a.inf
    -a----         2/6/2020   6:18 PM           2285 8c670077-470b-421a-8dd8-8cedb4f2f08a.pbk
    -a----         2/6/2020   6:18 PM           5430 azurebox16.ico
    -a----         2/6/2020   6:18 PM           4286 azurebox32.ico
    -a----         2/6/2020   6:18 PM         138934 azurevpnbanner.bmp
    -a----         2/6/2020   6:18 PM          46064 cmroute.dll
    -a----         2/6/2020   6:18 PM            196 routes.txt
    
    PS C:\NewTemp\vnet>
    
  8. .pbk 文件是 VPN 配置文件的电话簿。 在本地 UI 中会用到它。

设备上的 VPN 配置

在 Azure Stack Edge 设备的本地 UI 上执行以下步骤。

  1. 在本地 UI 中,转到 VPN 页。 在 VPN 状态下,选择“ 配置”。

    配置 VPN 1

  2. 配置 VPN边栏中:

    1. 在“上传电话簿”文件中,指向在前面的步骤中创建的 .pbk 文件。
    2. 在“上传公共 IP 列表配置文件”中,提供 Azure 数据中心 IP 范围 JSON 文件作为输入。 你已在前面的步骤中下载了此文件,网址为 https://www.microsoft.com/download/details.aspx?id=56519
    3. 选择 eastus 作为区域,然后选择 “应用”。

    配置 VPN 2

  3. 仅能使用 VPN 访问的 IP 地址范围 部分,输入您为 Azure 虚拟网络选择的 Vnet IPv4 范围。

    配置 VPN 3

验证客户端连接

  1. 在 Azure 门户中,转到 VPN 网关。
  2. 转到 “设置”下的“点对站点配置”。 在 “分配的 IP 地址”下,Azure Stack Edge 设备的 IP 地址应显示。

通过 VPN 验证数据传输

若要确认 VPN 正常工作,请将数据复制到 SMB 共享。 请按照 Azure Stack Edge 设备上 添加共享 中的操作步骤进行操作。

  1. 将文件(例如 \data\pictures\waterfall.jpg)复制到客户端系统上装载的 SMB 共享。

  2. 在复制数据的同时,验证数据是否正在通过 VPN:

    1. 转到 Azure 门户中的 VPN 网关。

    2. 转到 “监控 > 指标”.

    3. 在右窗格中,选择 “范围” 作为 VPN 网关,“指标” 作为网关 P2S 带宽,并将 “聚合” 作为平均值。

    4. 复制数据时,带宽利用率将增加,数据复制完成后,带宽利用率会下降。

      Azure vpn 指标

  3. 验证此文件是否显示在云上的存储帐户中。

调试问题

若要调试任何问题,请使用以下命令:

Get-AzResourceGroupDeployment -DeploymentName $deploymentName -ResourceGroupName $ResourceGroupName

示例输出如下所示:

PS C:\Projects\TZL\VPN\Azure-VpnDeployment> Get-AzResourceGroupDeployment -DeploymentName "tznvpnrg14_deployment" -ResourceGroupName "tznvpnrg14"


DeploymentName          : tznvpnrg14_deployment
ResourceGroupName       : tznvpnrg14
ProvisioningState       : Succeeded
Timestamp               : 1/21/2020 6:23:13 PM
Mode                    : Incremental
TemplateLink            :
Parameters              :
                          Name                                         Type                       Value
                          ===========================================  =========================  ==========
                          virtualNetworks_vnet_name                    String                     tznvpnrg14_vnet
                          azureFirewalls_firewall_name                 String                     tznvpnrg14_firewall
                          routeTables_routetable_name                  String                     tznvpnrg14_routetable
                          publicIPAddresses_VNGW_public_ip_name        String                     tznvpnrg14_vngwpublicip
                          virtualNetworkGateways_VNGW_name             String                     tznvpnrg14_vngw
                          publicIPAddresses_firewall_public_ip_name    String                     tznvpnrg14_fwpip
                          localNetworkGateways_LNGW_name               String                     tznvpnrg14_lngw
                          connections_vngw_lngw_name                   String                     tznvpnrg14_connection
                          location                                     String                     East US
                          vnetIPv4AddressSpace                         String                     172.24.0.0/16
                          defaultSubnetIPv4AddressSpace                String                     172.24.0.0/24
                          firewallSubnetIPv4AddressSpace               String                     172.24.1.0/24
                          gatewaySubnetIPv4AddressSpace                String                     172.24.2.0/24
                          gatewaySubnetIPv4bgpPeeringAddress           String                     172.24.2.254
                          customerNetworkAddressSpace                  String                     10.0.0.0/18
                          customerPublicNetworkAddressSpace            String                     207.68.128.0/24
                          dbeIOTNetworkAddressSpace                    String                     10.139.218.0/24
                          azureVPNsharedKey                            String                     1234567890
                          dbE-Gateway-ipaddress                        String                     207.68.128.113

Outputs                 :
                          Name                     Type                       Value
                          =======================  =========================  ==========
                          virtualNetwork           Object                     {
                            "provisioningState": "Succeeded",
                            "resourceGuid": "dcf673d3-5c73-4764-b077-77125eda1303",
                            "addressSpace": {
                              "addressPrefixes": [
                                "172.24.0.0/16"
                              ]
================= CUT ============================= CUT ===========================
Get-AzResourceGroupDeploymentOperation -ResourceGroupName $ResourceGroupName -DeploymentName $AzureDeploymentName

后续步骤

在 Azure Stack Edge 设备上通过本地 UI 配置 VPN