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:
- Configurare la rete dual stack
- Creare un gateway applicazione con front-end IPv6
- Creare un set di scalabilità di macchine virtuali con il pool back-end predefinito
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:
- Usando il cmdlet Invoke-WebRequest, inviare una richiesta al front-end IPv6.
- 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