共用方式為


使用 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 AzureAzure 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 來設定名為 myBackendSubnetmyAGSubnet 的子網路。

$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 位址。 若要測試此連線,請執行下列動作:

  1. 使用 Invoke-WebRequest Cmdlet 向 IPv6 前端發出要求。
  2. 檢查回應。 有效的 myVM1myVM2 回應會確認應用程式閘道已成功建立,而且可以成功與後端進行連線。 如果您發出命令數次,閘道會針對來自不同後端伺服器的後續要求進行負載平衡和回應。
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

下一步