使用 Azure PowerShell 以前端公用 IPv6 位址設定 應用程式閘道
Azure 應用程式閘道支援來自用戶端的雙重堆疊 (IPv4 和 IPv6) 前端連線。 若要使用 IPv6 前端連線,您需要建立新的應用程式閘道。 您目前無法將現有的僅限 IPv4 應用程式閘道升級至雙重堆疊 (IPv4 和 IPv6) 應用程式閘道。 此外,目前不支援後端 IPv6 位址。
若要支援 IPv6 前端支援,您必須建立雙重堆疊 VNet。 此雙重堆疊 VNet 同時具有 IPv4 和 IPv6 的子網路。 Azure VNet 已提供雙重堆疊功能。
概觀
Azure PowerShell 用來建立 IPv6 Azure 應用程式閘道。 執行測試以確認其正確運作。
您將學習如何:
Azure PowerShell 可用來建立 IPv6 Azure 應用程式閘道並執行測試,以確保其正常運作。 應用程式閘道可針對您維護的伺服器管理及保護其網路流量。 虛擬機擴展集可供後端伺服器管理網路流量。 此擴展集包含兩個虛擬機器執行個體,這些執行個體會新增至應用程式閘道的預設後端集區。 如需應用程式閘道元件的詳細資訊,請參閱應用程式閘道元件。
您也可以使用 Azure 入口網站 來完成本快速入門。
必要條件
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
如果您選擇在本機安裝和使用 PowerShell,本文會要求使用 Azure PowerShell 模組 1.0.0 版或更新版本。 若要尋找版本,請執行 Get-Module -ListAvailable Az
。 如果您需要升級,請參閱安裝 Azure PowerShell 模組。 如果正在本機執行 PowerShell,也需要執行 Login-AzAccount
,以建立與 Azure 的連線。
區域和可用性
IPv6 應用程式閘道 可供支援 應用程式閘道 v2 SKU 的所有公用雲端區域使用。 21Vianet 所營運的 Microsoft Azure 和 Azure Government 中也提供該功能
限制
- 只有 v2 SKU 支援同時具有 IPv4 和 IPv6 位址的前端
- 目前不支援 IPv6 後端
- 目前不支援 IPv6 私人連結
- 目前不支援僅限 IPv6 Azure 應用程式閘道。 應用程式閘道必須是雙重堆疊 (IPv6 和 IPv4)
- 應用程式閘道 輸入控制器 (AGIC) 不支援 IPv6 設定
- 現有的 IPv4 應用程式閘道 無法升級至雙堆疊 應用程式閘道
- 目前不支援具有 IPv6 比對條件的 WAF 自定義規則
建立資源群組
資源群組是在其中部署與管理 Azure 資源的邏輯容器。 使用 New-AzResourceGroup 來建立 Azure 資源群組。
New-AzResourceGroup -Name myResourceGroupAG -Location eastus
設定雙重堆疊子網路和後端子網路
使用 New-AzVirtualNetworkSubnetConfig 來設定名為 myBackendSubnet 和 myAGSubnet 的子網路。
$AppGwSubnetPrefix = @("10.0.0.0/24", "ace:cab:deca::/64")
$appgwSubnet = New-AzVirtualNetworkSubnetConfig `
-Name myAGSubnet -AddressPrefix $AppGwSubnetPrefix
$backendSubnet = New-AzVirtualNetworkSubnetConfig `
-Name myBackendSubnet -AddressPrefix 10.0.1.0/24
建立雙重堆疊虛擬網路
$VnetPrefix = @("10.0.0.0/16", "ace:cab:deca::/48")
$vnet = New-AzVirtualNetwork `
-Name myVNet `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-AddressPrefix $VnetPrefix `
-Subnet @($appgwSubnet, $backendSubnet)
建立應用程式閘道前端公用 IP 位址
$pipv4 = New-AzPublicIpAddress `
-Name myAGPublicIPAddress4 `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Sku 'Standard' `
-AllocationMethod 'Static' `
-IpAddressVersion 'IPv4' `
-Force
$pipv6 = New-AzPublicIpAddress `
-Name myAGPublicIPAddress6 `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Sku 'Standard' `
-AllocationMethod 'Static' `
-IpAddressVersion 'IPv6' `
-Force
建立 IP 組態和連接埠
使用 New-AzApplicationGatewayIPConfiguration,讓先前建立的 myAGSubnet 與應用程式閘道產生關聯。 使用 New-AzApplicationGatewayFrontendIPConfig,將 myAGPublicIPAddress 指派給應用程式閘道。
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name myAGSubnet
$gipconfig = New-AzApplicationGatewayIPConfiguration `
-Name myAGIPConfig `
-Subnet $subnet
$fipconfigv4 = New-AzApplicationGatewayFrontendIPConfig `
-Name myAGFrontendIPv4Config `
-PublicIPAddress $pipv4
$fipconfigv6 = New-AzApplicationGatewayFrontendIPConfig `
-Name myAGFrontendIPv6Config `
-PublicIPAddress $pipv6
$frontendport = New-AzApplicationGatewayFrontendPort `
-Name myAGFrontendIPv6Config `
-Port 80
建立後端集區和設定
使用 New-AzApplicationGatewayBackendAddressPool,為應用程式閘道建立名為 appGatewayBackendPool 的後端集區。 使用 New-AzApplicationGatewayBackendHttpSettings 來設定後端位址集區的設定。
$backendPool = New-AzApplicationGatewayBackendAddressPool `
-Name myAGBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSetting `
-Name myPoolSettings `
-Port 80 `
-Protocol Http `
-CookieBasedAffinity Enabled `
-RequestTimeout 30
建立預設接聽程式和規則
需要接聽程式才能讓應用程式閘道將流量適當地路由到後端集區。 在此範例中,您會建立基本接聽程式,接聽根 URL 的流量。
使用 New-AzApplicationGatewayHttpListener 搭配您先前建立的前端設定和前端連接埠,來建立名為 mydefaultListener 的接聽程式。 接聽程式需要規則以便知道要針對連入流量使用哪個後端集區。 使用 New-AzApplicationGatewayRequestRoutingRule 來建立名為 rule1 的基本規則。
$listenerv4 = New-AzApplicationGatewayHttpListener `
-Name myAGListnerv4 `
-Protocol Http `
-FrontendIPConfiguration $fipconfigv4 `
-FrontendPort $frontendport
$listenerv6 = New-AzApplicationGatewayHttpListener `
-Name myAGListnerv6 `
-Protocol Http `
-FrontendIPConfiguration $fipconfigv6 `
-FrontendPort $frontendport
$frontendRulev4 = New-AzApplicationGatewayRequestRoutingRule `
-Name ruleIPv4 `
-RuleType Basic `
-Priority 10 `
-HttpListener $listenerv4 `
-BackendAddressPool $backendPool `
-BackendHttpSettings $poolSettings
$frontendRulev6 = New-AzApplicationGatewayRequestRoutingRule `
-Name ruleIPv6 `
-RuleType Basic `
-Priority 1 `
-HttpListener $listenerv6 `
-BackendAddressPool $backendPool `
-BackendHttpSettings $poolsettings
建立應用程式閘道
既然您已建立必要的支持資源,您可以使用 New-AzApplicationGatewaySku 來指定應用程式閘道的參數。 新的應用程式閘道是使用 New-AzApplicationGateway 加以建立。 建立應用程式閘道需要幾分鐘的時間。
$sku = New-AzApplicationGatewaySku `
-Name Standard_v2 `
-Tier Standard_v2 `
-Capacity 2
New-AzApplicationGateway `
-Name myipv6AppGW `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-BackendAddressPools $backendPool `
-BackendHttpSettingsCollection $poolsettings `
-FrontendIpConfigurations @($fipconfigv4, $fipconfigv6) `
-GatewayIpConfigurations $gipconfig `
-FrontendPorts $frontendport `
-HttpListeners @($listenerv4, $listenerv6) `
-RequestRoutingRules @($frontendRulev4, $frontendRulev6) `
-Sku $sku `
-Force
後端伺服器
既然您已建立應用程式閘道,您可以建立後端虛擬機來裝載網站。 後端可以由 NIC、虛擬機擴展集、公用 IP 位址、內部 IP 位址、完整功能變數名稱 (FQDN) 和多租使用者後端組成,例如 Azure App 服務。
建立兩部虛擬機器
在此範例中,您會建立兩個虛擬機器,作為應用程式閘道的後端伺服器。 IIS 安裝在虛擬機器上,用來確認 Azure 已成功建立應用程式閘道。 設定 IP 位址設定時,擴展集會指派給後端集區。
若要建立虛擬機器,我們會使用 Get-AzApplicationGatewayBackendAddressPool 取得最近建立的應用程式閘道後端集區組態。 這項資訊用來:
- 使用 New-AzNetworkInterface 建立網路介面。
- 使用 New-AzVMConfig 建立虛擬機器設定。
- 使用 New-AzVM 來建立虛擬機器。
注意
執行下列程式碼範例以建立虛擬機器時,Azure 會提示您輸入認證。 輸入您的使用者名稱和密碼。建立 VM 需要幾分鐘的時間。
$appgw = Get-AzApplicationGateway -ResourceGroupName myResourceGroupAG -Name myipv6AppGW
$backendPool = Get-AzApplicationGatewayBackendAddressPool -Name myAGBackendPool -ApplicationGateway $appgw
$vnet = Get-AzVirtualNetwork -ResourceGroupName myResourceGroupAG -Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name myBackendSubnet
$cred = Get-Credential
for ($i=1; $i -le 2; $i++)
{
$nic = New-AzNetworkInterface `
-Name myNic$i `
-ResourceGroupName myResourceGroupAG `
-Location EastUS `
-Subnet $subnet `
-ApplicationGatewayBackendAddressPool $backendpool
$vm = New-AzVMConfig `
-VMName myVM$i `
-VMSize Standard_DS2_v2
Set-AzVMOperatingSystem `
-VM $vm `
-Windows `
-ComputerName myVM$i `
-Credential $cred
Set-AzVMSourceImage `
-VM $vm `
-PublisherName MicrosoftWindowsServer `
-Offer WindowsServer `
-Skus 2016-Datacenter `
-Version latest
Add-AzVMNetworkInterface `
-VM $vm `
-Id $nic.Id
Set-AzVMBootDiagnostic `
-VM $vm `
-Disable
New-AzVM -ResourceGroupName myResourceGroupAG -Location EastUS -VM $vm
Set-AzVMExtension `
-ResourceGroupName myResourceGroupAG `
-ExtensionName IIS `
-VMName myVM$i `
-Publisher Microsoft.Compute `
-ExtensionType CustomScriptExtension `
-TypeHandlerVersion 1.4 `
-SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
-Location EastUS
}
尋找應用程式閘道的公用 IP 位址
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress6
將 DNS 名稱指派給前端 IPv6 位址
DNS 名稱可讓您更輕鬆地測試 IPv6 應用程式閘道。 您可以使用自己的網域和登錄器來指派公用 DNS 名稱,也可以在 azure.com 中建立名稱。
使用下列命令在 azure.com 中指派名稱。 名稱會設定為您指定的標籤 + 區域 + cloudapp.azure.com。 在此範例中,於命名空間 eastus.cloudapp.azure.com 中建立 AAAA 記錄 myipv6appgw:
$publicIp = Get-AzPublicIpAddress -Name myAGPublicIPAddress6 -ResourceGroupName myResourceGroupAG
$publicIp.DnsSettings = @{"DomainNameLabel" = "myipv6appgw"}
Set-AzPublicIpAddress -PublicIpAddress $publicIp
測試應用程式閘道
先前,我們已將 DNS 名稱 myipv6appgw.eastus.cloudapp.azure.com 指派給應用程式閘道的公用 IPv6 位址。 若要測試此連線,請執行下列動作:
- 使用 Invoke-WebRequest Cmdlet 向 IPv6 前端發出要求。
- 檢查回應。 有效的 myVM1 或 myVM2 回應會確認應用程式閘道已成功建立,而且可以成功與後端進行連線。 如果您發出命令數次,閘道會針對來自不同後端伺服器的後續要求進行負載平衡和回應。
PS C:\> (Invoke-WebRequest -Uri myipv6appgw.eastus.cloudapp.azure.com).Content
myVM2
重要
如果與 DNS 名稱或 IPv6 位址的連線失敗,則原因可能是您無法從裝置瀏覽 IPv6 位址。 若要檢查這是否為您的問題,則請同時測試應用程式閘道的 IPv4 位址。 如果 IPv4 位址成功連線,則可能是您沒有指派給裝置的公用 IPv6 位址。 如果是這種情況,您即可嘗試使用雙重堆疊 VM 來測試連線。
清除資源
當不再需要資源群組、應用程式閘道及所有相關資源時,請使用 Remove-AzResourceGroup 來將其移除。
Remove-AzResourceGroup -Name myResourceGroupAG