Configuración de Application Gateway con una dirección IPv6 pública de front-end mediante Azure PowerShell
Azure Application Gateway admite conexiones de front-end de pila dual (IPv4 e IPv6) desde clientes. Para usar la conectividad de front-end IPv6, debe crear una nueva instancia de Application Gateway. Actualmente no puede actualizar las instancias de Application Gateway IPv4 existentes a puertas de enlace de aplicaciones de pila dual (IPv4 e IPv6). Además, actualmente no se admiten direcciones IPv6 de back-end.
Para permitir la compatibilidad con el front-end IPv6, debe crear una red virtual de doble pila. Esta red virtual de pila doble tiene subredes para IPv4 e IPv6. Las redes virtuales de Azure ya proporcionan funcionalidad de pila dual.
Información general
Azure PowerShell se usa para crear una instancia de Azure Application Gateway IPv6. Se realizan pruebas para comprobar que funciona correctamente.
Aprenderá a:
- Configuración de la red de doble pila
- Creación de una puerta de enlace de aplicación con el front-end IPv6
- Creación de un conjunto de escalado de máquinas virtuales con el grupo de servidores back-end predeterminado
Azure PowerShell se usa para crear una instancia de Azure Application Gateway IPv6 y realizar pruebas para tener la seguridad de que funciona correctamente. La puerta de enlace de aplicación puede administrar y proteger el tráfico web en los servidores que mantenga. Un conjunto de escalado de máquinas virtuales sirve para que los servidores backend administren el tráfico web. El conjunto de escalado contiene dos instancias de máquina virtual que se agregan al grupo de servidores back-end predeterminado de la puerta de enlace de aplicación. Para más información sobre los componentes de una puerta de enlace de aplicación, consulte Componentes de puertas de enlace de aplicación.
Para completar este inicio rápido, también puede usar Azure Portal.
Requisitos previos
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Si decide instalar y usar PowerShell de forma local, para realizar los pasos de este artículo necesita la versión 1.0.0 del módulo de Azure PowerShell o cualquier versión posterior. Para encontrar la versión, ejecute Get-Module -ListAvailable Az
. Si necesita actualizarla, consulte Instalación del módulo de Azure PowerShell. Si PowerShell se ejecuta localmente, también debe ejecutar Login-AzAccount
para crear una conexión con Azure.
Regiones y disponibilidad
Application Gateway IPv6 está disponible para todas las regiones de nube pública en las que se admite la SKU de Application Gateway v2. También está disponible en Microsoft Azure operado por 21Vianet y Azure Government
Limitaciones
- Solo la SKU v2 admite un front-end con direcciones IPv4 e IPv6
- Actualmente no se admiten back-end IPv6
- Actualmente no se admite vínculo privado IPv6
- Actualmente no se admite Application Gateway de solo IPv6. Application Gateway debe ser de pila dual (IPv6 e IPv4)
- El controlador de entrada de Application Gateway (AGIC) no admite la configuración de IPv6.
- Las instancias de Application Gateway IPv4 existentes no se pueden actualizar a instancias de Application Gateway de doble pila
- Las reglas personalizadas de WAF con una condición de coincidencia IPv6 no se admiten actualmente
Crear un grupo de recursos
Un grupo de recursos es un contenedor lógico en el que se implementan y se administran los recursos de Azure. Cree un grupo de recursos de Azure mediante New-AzResourceGroup.
New-AzResourceGroup -Name myResourceGroupAG -Location eastus
Configuración de una subred de doble pila y una subred de back-end
Configure las subredes llamadas myBackendSubnet y myAGSubnet mediante 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
Creación de una red virtual de doble pila
$VnetPrefix = @("10.0.0.0/16", "ace:cab:deca::/48")
$vnet = New-AzVirtualNetwork `
-Name myVNet `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-AddressPrefix $VnetPrefix `
-Subnet @($appgwSubnet, $backendSubnet)
Creación de direcciones IP públicas de front-end de Application Gateway
$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
Creación de las configuraciones y los puertos IP
Asocie el elemento myAGSubnet que creó anteriormente a la puerta de enlace de aplicaciones mediante New-AzApplicationGatewayIPConfiguration. Asigne el elemento myAGPublicIPAddress a la puerta de enlace de aplicaciones mediante 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
Creación de la configuración y el grupo de servidores back-end
Cree el grupo de servidores back-end llamado appGatewayBackendPool para la puerta de enlace de aplicaciones mediante New-AzApplicationGatewayBackendAddressPool. Configure los valores de los grupos de direcciones de los servidores back-end mediante New-AzApplicationGatewayBackendHttpSettings.
$backendPool = New-AzApplicationGatewayBackendAddressPool `
-Name myAGBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSetting `
-Name myPoolSettings `
-Port 80 `
-Protocol Http `
-CookieBasedAffinity Enabled `
-RequestTimeout 30
Creación del agente de escucha y la regla predeterminados
Es necesario un agente de escucha para que la puerta de enlace de aplicaciones enrute el tráfico de forma adecuada al grupo de servidores back-end. En este ejemplo, creará un agente de escucha básico que escucha el tráfico en la dirección URL raíz.
Cree un cliente de escucha llamado mydefaultListener mediante New-AzApplicationGatewayHttpListener con la configuración de front-end y el puerto de front-end que creó anteriormente. Es necesaria una regla para que el agente de escucha sepa qué grupo de servidores back-end se usa para el tráfico entrante. Cree una regla básica llamada rule1 mediante 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
Creación de la puerta de enlace de aplicaciones
Ahora que ha creado los recursos complementarios necesarios, puede especificar los parámetros de la puerta de enlace de aplicación mediante New-AzApplicationGatewaySku. La nueva puerta de enlace de aplicación se crea mediante New-AzApplicationGateway. Esta operación tarda unos minutos.
$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
Servidores back-end
Ahora que ha creado la puerta de enlace de aplicación, puede crear las máquinas virtuales de back-end para hospedar los sitios web. Un servidor back-end puede estar compuesto por NIC, conjuntos de escalado de máquinas virtuales, direcciones IP públicas e internas, nombres de dominio completos (FQDN) y servidores back-end multiinquilino como Azure App Service.
Creación de dos máquinas virtuales
En este ejemplo, se crearán dos máquinas virtuales que se usarán como servidores back-end para la puerta de enlace de aplicaciones. IIS se instala en las máquinas virtuales para comprobar que Azure ha instalado correctamente la puerta de enlace de aplicación. El conjunto de escalado se asigna al grupo de servidores back-end al configurar las opciones de dirección IP.
Para crear las máquinas virtuales, ejecute Get-AzApplicationGatewayBackendAddressPool para obtener la configuración del grupo de servidores back-end de Application Gateway recién creado. Esta información se usa para:
- Cree una interfaz de red con New-AzNetworkInterface.
- Cree una configuración de máquina virtual con New-AzVMConfig.
- Cree la máquina virtual con New-AzVM.
Nota:
Al ejecutar el ejemplo de código siguiente para crear las máquinas virtuales, Azure le pide credenciales. Escriba su nombre de usuario y contraseña. Esta operación tarda unos minutos.
$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
}
Búsqueda de la dirección IP pública de Application Gateway
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress6
Asignación de un nombre DNS a la dirección IPv6 de front-end
Un nombre DNS facilita las pruebas de la puerta de enlace de aplicación IPv6. Puede asignar un nombre DNS público usando su propio dominio y registrador o puede crear un nombre en azure.com.
Use los comandos siguientes para asignar un nombre en azure.com. El nombre se establece en la etiqueta que especifique más la región y más cloudapp.azure.com. En este ejemplo, el registro AAAA myipv6appgw se crea en el espacio de nombres eastus.cloudapp.azure.com:
$publicIp = Get-AzPublicIpAddress -Name myAGPublicIPAddress6 -ResourceGroupName myResourceGroupAG
$publicIp.DnsSettings = @{"DomainNameLabel" = "myipv6appgw"}
Set-AzPublicIpAddress -PublicIpAddress $publicIp
Prueba de la puerta de enlace de aplicaciones
Anteriormente, asignamos el nombre DNS myipv6appgw.eastus.cloudapp.azure.com a la dirección IPv6 pública de la puerta de enlace de aplicación. Para probar esta conexión:
- Emita una solicitud al front-end IPv6 con el cmdlet Invoke-WebRequest.
- Compruebe la respuesta. Una respuesta válida de myVM1 o de myVM2corrobora que la puerta de enlace de aplicación se ha creado correctamente y puede conectarse sin problemas con el back-end. Si emite el comando varias veces, la puerta de enlace equilibra la carga y responde a las solicitudes subsiguientes desde otro servidor back-end.
PS C:\> (Invoke-WebRequest -Uri myipv6appgw.eastus.cloudapp.azure.com).Content
myVM2
Importante
Si se produce un error en la conexión con el nombre DNS o la dirección IPv6, puede deberse a que no se pueden examinar direcciones IPv6 desde el dispositivo. Para comprobar si este es el problema, pruebe también la dirección IPv4 de la puerta de enlace de aplicaciones. Si la dirección IPv4 se conecta correctamente, es probable que no tenga una dirección IPv6 pública asignada al dispositivo. Si este es el caso, puede probar la conexión con una máquina virtual de pila dual.
Limpieza de recursos
Cuando ya no los necesite, puede usar el comando Remove-AzResourceGroup para quitar el grupo de recursos, la puerta de enlace de aplicaciones y todos los recursos relacionados.
Remove-AzResourceGroup -Name myResourceGroupAG