透過 Azure PowerShell 在 Azure Stack Edge Mini R 裝置上設定 VPN
VPN 選項會針對從 Azure Stack Edge Mini R 或 Azure Stack Edge Pro R 裝置到 Azure 的 TLS 資料移動提供第二層加密。 您可以透過 Azure 入口網站或透過 Azure PowerShell,在 Azure Stack Edge Mini R 裝置上設定 VPN。
本文說明在 Azure Stack Edge Mini R 裝置上使用 Azure PowerShell 指令碼,於雲端中建立組態之設定點對站 (P2S) VPN 所需步驟。 Azure Stack Edge 裝置上的設定是透過本機 UI 完成。
關於 VPN 設定
點對站 (P2S) VPN 閘道連線可讓您從個別用戶端電腦或是您的 Azure Stack Edge Mini R 裝置,建立到您虛擬網路的安全連線。 您可以從用戶端電腦或裝置啟動 P2S 連線。 在此案例中,P2S 連線會使用 IKEv2 VPN,此為標準型的 IPsec VPN 解決方案。
典型的工作流程包含下列步驟:
- 設定必要條件。
- 在 Azure 上設定必要的資源。
- 建立並設定虛擬網路與必要的子網路。
- 建立並設定 Azure VPN 閘道 (虛擬網路閘道)。
- 設定 Azure 防火牆並新增網路與應用程式規則。
- 建立 Azure 路由表並新增路由。
- 在 VPN 閘道中啟用點對站。
- 新增用戶端位址集區。
- 設定通道類型。
- 設定驗證類型。
- 建立憑證。
- 上傳憑證。
- 下載電話簿。
- 在裝置的本機 Web UI 中設定 VPN。
- 提供電話簿。
- 提供服務標籤 (json) 檔案。
下列各節會提供這些步驟的相關詳細資料。
設定先決條件
根據 安裝 Azure Stack Edge Mini R 裝置中的說明,您應該能夠存取已安裝的 Azure Stack Edge Mini R 裝置。 此裝置將會建立與 Azure 的 P2S 連線。
您應該能夠存取已在 Azure 中為 Azure Stack Edge 服務啟用之有效 Azure 訂用帳戶。 使用此訂用帳戶於 Azure 中建立對應的資源,以管理您的 Azure Stack Edge Mini R 裝置。
您可以存取您將用來存取 Azure Stack Edge Mini R 裝置的 Windows 用戶端。 您將使用此用戶端,並以程式設計方式於雲端中建立組態。
若要在 Windows 用戶端上安裝必要的 PowerShell 版本,請執行下列命令:
Install-Module -Name Az -AllowClobber -Scope CurrentUser Import-Module Az.Accounts
若要連線到您的 Azure 帳戶與訂用帳戶,執行下列命令:
Connect-AzAccount Set-AzContext -Subscription "<Your subscription name>"
提供您用來搭配 Azure Stack Edge Mini R 裝置並設定 VPN 的 Azure 訂用帳戶名稱。
下載 在雲端中建立設定所需的指令碼。 此指令碼會:
- 建立 Azure 虛擬網路和下列子網路:GatewaySubnet 和 AzureFirewallSubnet。
- 建立與設定 Azure VPN 閘道。
- 建立並設定 Azure 本地區域網路閘道。
- 建立並設定 Azure VPN 閘道與區域網路閘道之間的 Azure VPN 連線。
- 建立 Azure 防火牆,並新增網路規則與應用程式規則。
- 建立 Azure 路由表,並在其中新增路由。
在您想要建立 Azure 資源的Azure 入口網站中,建立資源群組。 移至 Azure 入口網站中的服務清單,選取 [資源群組],然後選取 [+ 新增]。 提供訂用帳戶資訊和資源群組的名稱,然後選取 [建立]。 如果您移至此資源群組,則此時在該群組下不應有任何資源。
您必須有 Azure Stack Edge Mini R 裝置
.cer
格式的 Base 64 編碼憑證。 此憑證應該以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 資源,您將提供下列名稱:
參數名稱 | 描述 |
---|---|
virtualNetworks_vnet_name | Microsoft Azure 虛擬網路名稱 |
azureFirewalls_firewall_name | Azure 防火牆名稱 |
routeTables_routetable_name | Azure 路由表名稱 |
publicIPAddresses_VNGW_public_ip_name | 虛擬網路閘道的公用 IP 位址名稱 |
virtualNetworkGateways_VNGW_name | Azure VPN 閘道 (虛擬網路閘道) 名稱 |
publicIPAddresses_firewall_public_ip_name | Azure 防火牆的公用 IP 位址名稱 |
location | 這是您要在建立虛擬網路的區域。 選取與您裝置相關聯的相同區域。 |
RouteTables_routetable_onprem_name | 這是其他路由表的名稱,可協助防火牆將封包路由回 Azure Stack Edge 裝置。 此指令碼會建立兩個額外的路由,並將 default 和 FirewallSubnet 與此路由表產生關聯。 |
為建立的 Azure 資源提供下列 IP 位址和位址空間,包含虛擬網路和相關聯的子網路 (預設、防火牆、GatewaySubnet)。
參數名稱 | 描述 |
---|---|
VnetIPv4AddressSpace | 這是與您的虛擬網路相關聯的位址空間。 提供 Vnet IP 範圍作為私人 IP 範圍 (https://en.wikipedia.org/wiki/Private_network#Private_IPv4_addresses)。 |
DefaultSubnetIPv4AddressSpace | 這是與虛擬網路子網路 Default 相關聯的位址空間。 |
FirewallSubnetIPv4AddressSpace | 這是與虛擬網路子網路 Firewall 相關聯的位址空間。 |
GatewaySubnetIPv4AddressSpace | 這是與虛擬網路 GatewaySubnet 相關聯的位址空間。 |
GatewaySubnetIPv4bgpPeeringAddress | 這是保留給 BGP 通訊的 IP 位址,且是根據與虛擬網路相關聯的 GatewaySubnet 位址空間。 |
ClientAddressPool | 此 IP 位址會用於 Azure 入口網站的 P2S 組態中的位址集區。 |
PublicCertData | VPN 閘道會使用公用憑證資料來驗證與其連線的 P2S 用戶端。 若要取得憑證資料,請安裝根憑證。 請確定憑證是以 .cer 延伸檔名編碼的 Base-64。 開啟此憑證,並在連續的一行中複製 ==BEGIN CERTIFICATE== 和 ==END CERTIFICATE== 之間的憑證文字。 |
執行指令碼
請遵循下列步驟,使用修改過的 parameters-p2s.json
並執行指令碼以建立 Azure 資源。
執行 PowerShell。 切換至指令碼所在的目錄。
執行指令碼。
.\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>"
注意
在此版本中,指令碼僅適用於美國東部位置。
執行指令碼時,您必須輸入下列資訊:
參數 描述 Location 這是必須建立 Azure 資源的區域。 AzureAppRuleFilePath 這是 appRule.json
的檔案路徑。AzureIPRangesFilePath 這是您在先前步驟中下載的服務標籤 json 檔案。 resourceGroupName 這是已建立所有 Azure 資源的資源群組名稱。 AzureDeploymentName 這是 Azure 部署的名稱。 NetworkRuleCollectionN ame 這是已建立並新增至Azure 防火牆的所有網路規則集合名稱。 優先順序 這是指派給已建立的所有網路與應用程式規則之優先順序。 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 中建立所有資源。 移至您已建立的資源群組。 您應該會看見下列資源:
下載 VPN 設定檔的電話簿
在此步驟中,您將下載裝置的 VPN 設定檔。
在Azure 入口網站中,移至資源群組,然後選取您在先前步驟中所建立的虛擬網路閘道。
移至 [設定] [點對站設定]>。 選取 [下載 VPN 用戶端]。
儲存壓縮的設定檔,並在您的 Windows 用戶端上擷取。
移至 WindowsAmd64 資料夾,然後擷取
.exe
:VpnClientSetupAmd64.exe。建立暫存路徑。 例如:
C:\NewTemp\vnet\tmp
執行 PowerShell 並移至
.exe
所在的目錄。 若要執行.exe
,請輸入:.\VpnClientSetupAmd64.exe /Q /C /T:"C:\NewTemp\vnet\tmp"
暫存路徑會有新的檔案。 以下是範例輸出:
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>
.pbk檔案是 VPN 設定檔的電話簿。 您會在本機 UI 中使用此功能。
裝置上的 VPN 設定
在您的 Azure Stack Edge 裝置的本機 UI 上遵循這些步驟。
在本機 UI 中,移至 VPN 頁面。 在 [VPN 狀態] 底下,選取 [設定]。
在設定 VPN 刀鋒視窗中︰
- 在上傳電話簿檔案中,指向您於先前步驟中建立的 .pbk 檔案。
- 在 [上傳公用 IP 清單組態檔] 中,提供 Azure 資料中心 IP 範圍 JSON 檔案,並將其作為輸入。 您已在先前的步驟中下載此檔案:https://www.microsoft.com/download/details.aspx?id=56519。
- 選取 [eastus] 作為區域,然後選取 [套用]。
在 [僅使用 VPN 存取的 IP 位址範圍] 區段中,輸入您為 Azure 虛擬網路所選擇的 Vnet IPv4 範圍。
確認用戶端連線
- 在Azure 入口網站中,移至 VPN 閘道。
- 移至 [設定] [點對站設定]>。 在 [已配置的 IP 位址] 底下,應該會顯示您的 Azure Stack Edge 裝置的 IP 位址。
透過 VPN 驗證資料傳輸
若要確認 VPN 是否為正常運作,請將資料複製到 SMB 共用。 請遵循在 Azure Stack Edge 裝置上的 新增共用 中的步驟。
例如,將如 \data\pictures\waterfall.jpg的檔案複製到您於用戶端系統上掛接的 SMB 共用。
若要驗證資料是否於複製時通過 VPN:
移至 Azure 入口網站中的 VPN 閘道。
移至 [監視] [計量]>。
在右窗格中,選擇 [範圍] 作為您的 VPN 閘道、 [計量] 為閘道 P2S 頻寬,而 [匯總] 則作為平均。
當複製資料時,您會看到頻寬使用率增加,若是資料複製完成時,頻寬使用率則會下降。
確認此檔案會顯示在雲端上的儲存體帳戶中。
為問題偵錯
若要偵錯任何問題,請使用下列命令:
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