使用 PowerShell 建立 VPN 閘道
本文可協助您使用 PowerShell 建立 Azure VPN 閘道。 建立與內部部署網路的 VPN 連線時,會使用 VPN 閘道。 您也可以使用 VPN 閘道來連線虛擬網路。 如需本文中某些設定的詳細資訊,請參閱建立 VPN 閘道 - 入口網站。
- 圖表左側會顯示您使用本文步驟所建立的虛擬網路和 VPN 閘道。
- 您稍後可以新增不同連線類型,如圖表右側所示。 例如,您可以建立站對站和點對站連線。 若要檢視您可以組建的不同設計結構,請參閱 VPN 閘道設計。
本文中的步驟會使用第 2 代 VpnGw2AZ SKU 來建立虛擬網路、子網、網關子網和路由型區域備援主動-主動模式 VPN 閘道(虛擬網路閘道)。 建立閘道之後,您可以設定連線。
- 如果您想要改用基本 SKU 建立 VPN 閘道,請參閱建立基本 SKU VPN 閘道。
- 建議您盡可能建立主動-主動模式 VPN 閘道。 主動-主動模式 VPN 閘道提供比標準模式 VPN 閘道更好的可用性和效能。 如需主動-主動網關的詳細資訊,請參閱 關於主動-主動模式網關。
- 如需可用性區域和區域備援網關的相關信息,請參閱 什麼是可用性區域?
注意
本文中的步驟會使用閘道 SKU VpnGw2AZ,這是支援 Azure 可用性區域的 SKU。 如果您的區域不支援可用性區域,請改用非 AZ SKU。 如需 SKU 的詳細資訊,請參閱關於閘道 SKU。
開始之前
這些步驟需要 Azure 訂用帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
本文使用 PowerShell Cmdlet。 若要執行 Cmdlet,您可以使用 Azure Cloud Shell。 Cloud Shell 是免費的互動式殼層,可讓您用來執行本文中的步驟。 它具有預先安裝和設定的共用 Azure 工具,可與您的帳戶搭配使用。
若要開啟 Cloud Shell,只要選取程式碼區塊右上角的 [開啟 Cloudshell] 即可。 您也可以移至 https://shell.azure.com/powershell,在個別的瀏覽器索引標籤上開啟 Cloud Shell。 選取 [複製] 以複製程式碼區塊、將它們貼上到 Cloud Shell 中,然後選取 Enter 鍵以執行它們。
您也可以在本機電腦上安裝並執行 Azure PowerShell Cmdlet。 PowerShell Cmdlet 會經常更新。 如果您尚未安裝最新版本,指示中指定的值可能會失敗。 若要尋找電腦上安裝的 Azure PowerShell 版本,請使用 Get-Module -ListAvailable Az
Cmdlet。 若要安裝或更新,請參閱安裝 Azure PowerShell 模組。
建立資源群組
使用 New-AzResourceGroup 命令建立 Azure 資源群組。 資源群組是在其中部署與管理 Azure 資源的邏輯容器。 如果您在本機執行 PowerShell,請以提高的權限開啟 PowerShell 主控台,並使用 Connect-AzAccount
命令連線至 Azure。
New-AzResourceGroup -Name TestRG1 -Location EastUS
建立虛擬網路
如果您還沒有虛擬網路,請使用 New-AzVirtualNetwork 建立虛擬網路。 當您建立虛擬網路時,請確定您指定的位址空間不會與您在內部部署網路上擁有的任何位址空間重疊。 如果 VPN 連線的兩端存在重複的位址範圍,流量就不會以您預期的方式路由傳送。 此外,如果您想要將此虛擬網路連線到另一個虛擬網路,位址空間無法與其他虛擬網路重疊。 因此,請謹慎規劃您的網路組態。
下列範例會在 EastUS 位置中建立名為 VNet1 的虛擬網路:
$virtualnetwork = New-AzVirtualNetwork `
-ResourceGroupName TestRG1 `
-Location EastUS `
-Name VNet1 `
-AddressPrefix 10.1.0.0/16
使用 New-AzVirtualNetworkSubnetConfig Cmdlet 來建立子網路設定。 此練習中不會使用 FrontEnd 子網。 您可以替代您自己的子網名稱。
$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
-Name FrontEnd `
-AddressPrefix 10.1.0.0/24 `
-VirtualNetwork $virtualnetwork
使用 Set-AzVirtualNetwork Cmdlet 來設定虛擬網路的子網路設定。
$virtualnetwork | Set-AzVirtualNetwork
新增閘道子網路
虛擬網路網關資源會部署到名為 GatewaySubnet 的特定子網。 閘道子網路是您設定虛擬網路時,所指定虛擬網路 IP 位址範圍的一部分。
如果您沒有名為 GatewaySubnet 的子網,當您建立 VPN 閘道時,它就會失敗。 建議您建立使用 /27(或更大)的閘道子網。 例如,/27 或 /26。 如需詳細資訊,請參閱 VPN 閘道 設定 - 閘道子網。
重要
不支援閘道子網路上的網路安全性群組 (NSG)。 將網路安全性群組與此子網路產生關聯,可能會導致您的虛擬網路閘道 (VPN 與 ExpressRoute 閘道) 無法如預期運作。 如需有關網路安全性群組的詳細資訊,請參閱什麼是網路安全性群組?
設定虛擬網路的變數。
$vnet = Get-AzVirtualNetwork -ResourceGroupName TestRG1 -Name VNet1
使用 Add-AzVirtualNetworkSubnetConfig Cmdlet 來建立閘道子網路。
Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 10.1.255.0/27 -VirtualNetwork $vnet
使用 Set-AzVirtualNetwork Cmdlet 來設定虛擬網路的子網路設定。
$vnet | Set-AzVirtualNetwork
要求公用IP位址
VPN 閘道必須具有公用 IP 位址。 當您建立與 VPN 閘道的連線時,這就是您指定的 IP 位址。 對於主動-主動模式閘道,每個閘道實例都有自己的公用IP位址資源。 您會先要求 IP 位址資源,然後在建立虛擬網路閘道時參考它。 此外,對於以 AZ 結尾的任何閘道 SKU,您也必須指定區域設定。 此範例會指定區域備援設定,因為它指定這三個區域區域。
建立 VPN 閘道時,IP 位址會指派給資源。 公用 IP 位址只會在刪除或重新建立閘道時變更。 它不會因為重新調整、重設或 VPN 閘道的其他內部維護/升級而變更。
使用下列範例來要求每個網關實例的靜態公用IP位址。
$gw1pip1 = New-AzPublicIpAddress -Name "VNet1GWpip1" -ResourceGroupName "TestRG1" -Location "EastUS" -AllocationMethod Static -Sku Standard -Zone 1,2,3
若要建立主動-主動網關(建議),請要求第二個公用IP位址:
$gw1pip2 = New-AzPublicIpAddress -Name "VNet1GWpip2" -ResourceGroupName "TestRG1" -Location "EastUS" -AllocationMethod Static -Sku Standard -Zone 1,2,3
建立閘道 IP 位址設定
閘道器組態定義要使用的子網路和公用 IP 位址。 使用下列範例來建立閘道設定。
$vnet = Get-AzVirtualNetwork -Name VNet1 -ResourceGroupName TestRG1
$subnet = Get-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -VirtualNetwork $vnet
$gwipconfig1 = New-AzVirtualNetworkGatewayIpConfig -Name gwipconfig1 -SubnetId $subnet.Id -PublicIpAddressId $gw1pip1.Id
$gwipconfig2 = New-AzVirtualNetworkGatewayIpConfig -Name gwipconfig2 -SubnetId $subnet.Id -PublicIpAddressId $gw1pip2.Id
建立 VPN 閘道
建立閘道通常可能需要 45 分鐘或更久,視選取的閘道 SKU 而定。 建立閘道之後,您可以在虛擬網路與內部部署位置之間建立連線。 或者,建立虛擬網路與另一個虛擬網路之間的連線。
請使用 New-AzVirtualNetworkGateway Cmdlet 來建立 VPN 閘道。 請注意,在範例中,會參考公用IP位址,並使用 參數將閘道設定為主動-主動 EnableActiveActiveFeature
。 在此範例中,我們會新增選用的 -Debug
參數。 如果您想要使用不同的 SKU 建立閘道,請參閱 關於閘道 SKU 來判斷最符合設定需求的 SKU。
New-AzVirtualNetworkGateway -Name VNet1GW -ResourceGroupName TestRG1 `
-Location "East US" -IpConfigurations $gwipconfig1,$gwipconfig2 -GatewayType "Vpn" -VpnType RouteBased `
-GatewaySku VpnGw2AZ -VpnGatewayGeneration Generation2 -EnableActiveActiveFeature -Debug
檢視 VPN 閘道
您可以使用 Get-AzVirtualNetworkGateway Cmdlet 來檢視 VPN 閘道。
Get-AzVirtualNetworkGateway -Name Vnet1GW -ResourceGroup TestRG1
檢視閘道IP位址
每個 VPN 閘道實例都會指派公用 IP 位址資源。 若要檢視與資源相關聯的IP位址,請使用 Get-AzPublicIpAddress Cmdlet。 針對每個閘道實例重複。 主動-主動閘道具有指派給每個實例的不同公用IP位址。
Get-AzPublicIpAddress -Name VNet1GWpip1 -ResourceGroupName TestRG1
清除資源
當您不再需要先前建立的資源時,請使用 Remove-AzResourceGroup 命令刪除資源群組。 這會刪除資源群組及其包含的所有資源。
Remove-AzResourceGroup -Name TestRG1
下一步
建立閘道之後,您可以設定連線。