Configurare gateway applicazione con un indirizzo IPv6 pubblico front-end usando Azure PowerShell

Il gateway applicazione di Azure supporta connessioni front-end dual stack (IPv4 e IPv6) dai client. Per usare la connettività front-end IPv6, è necessario creare un nuovo gateway applicazione. Attualmente non è possibile aggiornare i gateway applicazione esistenti solo IPv4 in gateway applicazione dual stack (IPv4 e IPv6). Inoltre, gli indirizzi IPv6 back-end non sono supportati.

Per supportare la connettività IPv6, è necessario creare una rete virtuale dual stack. Questa rete virtuale dual stack include subnet sia per IPv4 che per IPv6. Le reti virtuali di Azure già offrono funzionalità dual stack.

Panoramica

Azure PowerShell viene usato per creare un gateway applicazione di Azure IPv6. I test vengono eseguiti per verificare il corretto funzionamento.

Scopri come:

Azure PowerShell viene usato per creare un gateway applicazione di Azure IPv6 ed eseguire i test per verificarne il corretto funzionamento. Il gateway applicazione può gestire e proteggere il traffico Web verso i server gestiti. Un set di scalabilità di macchine virtuali consente ai server back-end di gestire il traffico Web. Il set di scalabilità contiene due istanze di macchine virtuali che vengono aggiunte al pool back-end predefinito del gateway applicazione. Per altre informazioni sui componenti di un gateway applicazione, vedere Componenti del gateway applicazione.

È anche possibile completare questa guida introduttiva usando il portale di Azure.

Prerequisiti

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Se si sceglie di installare e usare PowerShell in locale, per questo articolo è necessario il modulo Azure PowerShell 1.0.0 o versione successiva. Per trovare la versione, eseguire Get-Module -ListAvailable Az. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell. Se si esegue PowerShell in locale, è anche necessario eseguire Login-AzAccount per creare una connessione con Azure.

Aree e disponibilità

Il gateway applicazione IPv6 è disponibile per tutte le aree del cloud pubblico in cui è supportato gateway applicazione SKU v2. È disponibile anche in Microsoft Azure gestito da 21Vianet e Azure per enti pubblici

Limiti

  • Solo lo SKU v2 supporta un front-end con indirizzi IPv4 e IPv6
  • I back-end IPv6 non sono attualmente supportati
  • Il collegamento privato IPv6 non è attualmente supportato
  • Il gateway applicazione solo IPv6 non è attualmente supportato. Il gateway applicazione deve essere dual stack (IPv6 e IPv4)
  • gateway applicazione controller in ingresso (AGIC) non supporta la configurazione IPv6
  • Le gateway applicazione IPv4 esistenti non possono essere aggiornate a gateway applicazione dual stack
  • Le regole personalizzate WAF con una condizione di corrispondenza IPv6 non sono attualmente supportate

Creare un gruppo di risorse

Un gruppo di risorse è un contenitore logico in cui vengono distribuite e gestite le risorse di Azure. Creare un gruppo di risorse di Azure usando New-AzResourceGroup.

New-AzResourceGroup -Name myResourceGroupAG -Location eastus

Configurare una subnet dual stack e una subnet back-end

Configurare le subnet denominate myBackendSubnet e myAGSubnet usando New-AZVirtualNetworkSubnetConfig.

$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

Creare una rete virtuale dual stack

$VnetPrefix = @("10.0.0.0/16", "ace:cab:deca::/48")
$vnet = New-AzVirtualNetwork `
-Name myVNet `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-AddressPrefix $VnetPrefix `
-Subnet @($appgwSubnet, $backendSubnet)

Creare indirizzi IP pubblici front-end del gateway applicazione

$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

Creare le configurazioni IP e le porte

Associare la subnet myAGSubnet creata in precedenza al gateway applicazione usando New-AzApplicationGatewayIPConfiguration. Assegnare myAGPublicIPAddress al gateway applicazione usando New-AzApplicationGatewayFrontendIPConfig.

$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

Creare il pool e le impostazioni back-end

Creare il pool back-end denominato appGatewayBackendPool per il gateway applicazione usando New-AzApplicationGatewayBackendAddressPool. Configurare le impostazioni per i pool di indirizzi back-end usando New-AzApplicationGatewayBackendHttpSettings.

$backendPool = New-AzApplicationGatewayBackendAddressPool `
-Name myAGBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSetting `
-Name myPoolSettings `
-Port 80 `
-Protocol Http `
-CookieBasedAffinity Enabled `
-RequestTimeout 30

Creare il listener predefinito e la regola

È necessario un listener per consentire al gateway applicazione di instradare il traffico in modo appropriato al pool back-end. In questo esempio viene creato un listener di base in ascolto del traffico nell'URL radice.

Creare un listener denominato mydefaultListener usando New-AzApplicationGatewayHttpListener con la configurazione front-end e la porta front-end create in precedenza. È necessaria una regola per comunicare al listener quale pool back-end usare per il traffico in ingresso. Creare una regola di base denominata rule1 usando New-AzApplicationGatewayRequestRoutingRule.

$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

Creare il gateway applicazione

Dopo aver creato le risorse di supporto necessarie, è possibile specificare i parametri per il gateway applicazione usando New-AzApplicationGatewaySku. Il nuovo gateway applicazione viene creato usando New-AzApplicationGateway. La creazione del gateway applicazione richiede alcuni minuti.

$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

Server back-end

Dopo aver creato il gateway applicazione, è possibile creare le macchine virtuali back-end per ospitare siti Web. Un back-end può essere costituito da schede di interfaccia di rete, set di scalabilità di macchine virtuali, indirizzi IP pubblici, indirizzi IP interni, nomi di dominio completi (FQDN) e back-end multi-tenant come app Azure Servizio.

Creare due macchine virtuali

In questo esempio vengono create due macchine virtuali da usare come server back-end per il gateway applicazione. IIS viene installato nelle macchine virtuali per verificare che Azure abbia creato correttamente il gateway applicazione. Il set di scalabilità viene assegnato al pool back-end quando si configurano le impostazioni dell'indirizzo IP.

Per creare le macchine virtuali, ottenere la configurazione del pool back-end del gateway applicazione creata di recente con il comando Get-AzApplicationGatewayBackendAddressPool. Queste informazioni vengono usate per:

  • Creare un'interfaccia di rete con New-AzNetworkInterface.
  • Creare una configurazione di macchina virtuale con New-AzVMConfig.
  • Creare le macchine virtuali con New-AzVM.

Nota

Quando si esegue l'esempio di codice seguente per creare le macchine virtuali, Azure richiede le credenziali. Immettere il proprio nome utente e la password. La creazione delle macchine virtuali richiede alcuni minuti.

$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
}

Trovare l'indirizzo IP pubblico del gateway applicazione

Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress6

Assegnare un nome DNS all'indirizzo IPv6 front-end

Un nome DNS semplifica i test per il gateway applicazione IPv6. È possibile assegnare un nome DNS pubblico usando il proprio dominio e registrar oppure è possibile creare un nome in azure.com.

Usare i comandi seguenti per assegnare un nome in azure.com. Il nome viene impostato sull'etichetta specificata + l'area + cloudapp.azure.com. In questo esempio, il record AAAA myipv6appgw viene creato nello spazio dei nomi eastus.cloudapp.azure.com:

$publicIp = Get-AzPublicIpAddress -Name myAGPublicIPAddress6 -ResourceGroupName myResourceGroupAG
$publicIp.DnsSettings = @{"DomainNameLabel" = "myipv6appgw"}
Set-AzPublicIpAddress -PublicIpAddress $publicIp

Testare il gateway applicazione

In precedenza, è stato assegnato il nome DNS myipv6appgw.eastus.cloudapp.azure.com all'indirizzo IPv6 pubblico del gateway applicazione. Per testare questa connessione:

  1. Usando il cmdlet Invoke-WebRequest, inviare una richiesta al front-end IPv6.
  2. Controllare la risposta. Una risposta valida di myVM1 o myVM2 verifica che il gateway applicazione sia stato creato correttamente e possa connettersi al back-end. Se si esegue il comando più volte, il gateway bilancia il carico e risponde alle richieste successive da un server back-end diverso.
PS C:\> (Invoke-WebRequest -Uri myipv6appgw.eastus.cloudapp.azure.com).Content
myVM2

Importante

Se la connessione al nome DNS o all'indirizzo IPv6 non riesce, potrebbe essere perché non è possibile esplorare gli indirizzi IPv6 dal dispositivo. Per verificare se questo è problema, testare anche l'indirizzo IPv4 del gateway applicazione. Se l'indirizzo IPv4 si connette correttamente, è probabile che non sia stato assegnato un indirizzo IPv6 pubblico al dispositivo. In questo caso, è possibile provare a testare la connessione con una macchina virtuale dual stack.

Pulire le risorse

Quando non sono più necessari, rimuovere il gruppo di risorse, il gateway applicazione e tutte le risorse correlate usando Remove-AzResourceGroup.

Remove-AzResourceGroup -Name myResourceGroupAG

Passaggi successivi