Intervalos de direcciones IP privadas para SNAT en Azure Firewall

Azure Firewall proporciona capacidad SNAT para todo el tráfico saliente a las IP públicas. De forma predeterminada, Azure Firewall no usa SNAT con reglas de red cuando la dirección IP de destino está en un intervalo de direcciones IP privadas por IANA RFC 1918 o espacio de direcciones compartido por IANA RFC 6598. Las reglas de aplicación siempre usan SNAT a través de un proxy transparente independientemente de la dirección IP de destino.

Este comportamiento predeterminado es adecuado al enrutar el tráfico directamente a Internet. Sin embargo, hay escenarios en los que es posible que tenga que invalidar el comportamiento predeterminado de SNAT:

  • Si habilita la tunelización forzada, los SNAT de Azure Firewall enlazan el tráfico enlazado a Internet a una de las direcciones IP privadas del firewall en AzureFirewallSubnet, ocultando el origen del firewall local.
  • Si su organización utiliza rangos de direcciones IP registradas fuera de los estándares IANA RFC 1918 o IANA RFC 6598 para redes privadas, Azure Firewall SNATea el tráfico a una de las direcciones IP privadas del firewall en AzureFirewallSubnet. Puede configurar Azure Firewall de modo que no aplique SNAT al intervalo de direcciones IP públicas. Por ejemplo, especifique una dirección IP individual como x.x.x.x o un intervalo de direcciones IP como x.x.x.x/24.

Puede cambiar el comportamiento de SNAT de Azure Firewall de las maneras siguientes:

  • Para configurar Azure Firewall para nunca aplicar SNAT al tráfico procesado por las reglas de red, independientemente de la dirección IP de destino, use 0.0.0.0/0 como intervalo de direcciones IP privadas. Con esta configuración, Azure Firewall no puede enrutar el tráfico directamente a Internet.
  • Para configurar el firewall para que el tráfico SNAT sea siempre procesado por reglas de red independientemente de la dirección de destino, use 255.255.255.255/32 como intervalo de direcciones IP privadas.
  • Para configurar Azure Firewall y que aprenda automáticamente los rangos de direcciones IP registradas y privadas a intervalos regulares, habilita rutas SNAT de aprendizaje automático. Los rangos de direcciones aprendidos se tratan como internos y el tráfico destinado a estos rangos no se registra con SNAT.

Importante

  • La configuración del intervalo de direcciones privadas solo se aplicará a las reglas de red. Las reglas de aplicación siempre usan SNAT.
  • Si desea especificar sus propios intervalos de direcciones IP privadas y mantener los intervalos de direcciones RFC 1918 de IANA predeterminados, asegúrese de que la lista personalizada todavía incluye el intervalo de RFC 1918 de IANA.

La siguiente tabla muestra los métodos de configuración soportados. Los firewalls asociados a una directiva de firewall deben especificar el intervalo de la directiva y no usar AdditionalProperties.

Método Reglas clásicas Directiva de firewall
Azure PowerShell Soportado No soportado
CLI de Azure Soportado No soportado
Plantilla ARM Soportado Soportado
Azure Portal Soportado Soportado

Configurar rangos de direcciones IP privadas SNAT

Elige tu método de configuración. Azure PowerShell y CLI de Azure solo soportan reglas clásicas. Para configurar rangos SNAT con una política de cortafuegos, utiliza una plantilla ARM o el portal de Azure.

Use Azure PowerShell para especificar intervalos de direcciones IP privadas para el firewall.

Nota

La propiedad PrivateRange del firewall se omite para los firewalls asociados a una directiva de firewall. Debes usar la SNAT propiedad en firewallPolicies tal y como se describe en la pestaña de plantilla ARM .

Nuevo firewall

Para un nuevo cortafuegos que use reglas clásicas, crea el cortafuegos usando New-AzFirewall:

$azFw = @{
   Name               = '<fw-name>'
   ResourceGroupName  = '<resourcegroup-name>'
   Location           = '<location>'
   VirtualNetworkName = '<vnet-name>'
   PublicIpName       = '<public-ip-name>'
   PrivateRange       = @("IANAPrivateRanges", "192.168.1.0/24", "192.168.1.10")
}

New-AzFirewall @azFw

Nota

  • La implementación de Azure Firewall mediante New-AzFirewall requiere una red virtual existente y una dirección IP pública. Para obtener una guía de implementación completa, consulte Implementación y configuración de Azure Firewall mediante Azure PowerShell.
  • IANAPrivateRanges se expande a los valores predeterminados actuales en Azure Firewall, mientras que los otros intervalos se agregan a él. Para mantener el valor predeterminado de IANAPrivateRanges en su especificación de intervalo privado, debe permanecer en la especificación de PrivateRange, tal como se muestra en el ejemplo.

Firewall existente

Para configurar un cortafuegos existente que use reglas clásicas, consigue el cortafuegos usando Get-AzFirewall y actualízalo usando Set-AzFirewall:

$azfw = Get-AzFirewall -Name '<fw-name>' -ResourceGroupName '<resourcegroup-name>'
$azfw.PrivateRange = @("IANAPrivateRanges", "192.168.1.0/24", "192.168.1.10")
Set-AzFirewall -AzureFirewall $azfw

Aprendizaje automático de rutas SNAT

Puedes configurar Azure Firewall para que aprenda automáticamente tanto los rangos registrados como los privados cada 30 minutos. Estos intervalos de direcciones aprendidos son internos de la red, por lo que el tráfico a los destinos de los intervalos aprendidos no es SNATed. Tanto los despliegues de red virtual (VNet) como los despliegues de hub virtual seguro (vHub) soportan rutas SNAT de aprendizaje automático.

Nota

  • Auto-learn SNAT requiere que Azure Firewall esté asociado con Azure Route Server.
  • Para despliegues de VNet, debes desplegar Azure Route Server en la misma red virtual que Azure Firewall.
  • Para despliegues de vHub, Azure Route Server ya está desplegado y asociado por defecto.
  • Para ambos modelos de despliegue, debes activar el auto-learn SNAT en la política de Azure Firewall una vez completada la asociación.
  • Para más información acerca de las opciones de arquitectura de Azure Firewall, consulte ¿Cuáles son las opciones de arquitectura de Azure Firewall Manager?

Firewall VNet

Para despliegues de VNet, necesitas desplegar y asociar Azure Route Server antes de habilitar rutas SNAT de aprendizaje automático.

Requisitos previos:

En los siguientes ejemplos, sustituye los nombres de las variables ($azureFirewallName, $rgname, $location, etc.) por tus propios valores.

  1. Crea un nuevo firewall con un ID de Servidor de Ruta usando New-AzFirewall.

    # Specify the Route Server resource ID
    $routeServerId="/subscriptions/your_sub/resourceGroups/testRG/providers/Microsoft.Network/virtualHubs/TestRS"
    
    # Create the firewall
    $azureFirewall = New-AzFirewall -Name $azureFirewallName `
        -ResourceGroupName $rgname `
        -Location $location `
        -RouteServerId $routeServerId
    
    # Verify the Route Server ID is set
    Get-AzFirewall -Name $azureFirewallName -ResourceGroupName $rgname
    
  2. Asocia un Servidor de Rutas con un firewall existente usando Get-AzFirewall y Set-AzFirewall.

    # Specify the Route Server resource ID
    $routeServerId="/subscriptions/your_sub/resourceGroups/testRG/providers/Microsoft.Network/virtualHubs/TestRS"
    
    # Get the firewall
    $azFirewall = Get-AzFirewall -Name $azureFirewallName -ResourceGroupName $rgname
    
    # Associate the Route Server and update the firewall
    $azFirewall.RouteServerId = $routeServerId
    Set-AzFirewall -AzureFirewall $azFirewall
    
    # Verify the Route Server ID is updated
    Get-AzFirewall -Name $azureFirewallName -ResourceGroupName $rgname
    
  3. Crea una nueva política de cortafuegos con auto-learning activado usando New-AzFirewallPolicySnat y New-AzFirewallPolicy.

    # Include AutoLearnPrivateRange to enable auto-learn
    $snat = New-AzFirewallPolicySnat -PrivateRange $privateRange -AutoLearnPrivateRange
    
    # Create the firewall policy with SNAT configuration
    $azureFirewallPolicy = New-AzFirewallPolicy -Name $azureFirewallPolicyName `
        -ResourceGroupName $rgname `
        -Location $location `
        -Snat $snat
    
    # Verify the firewall policy
    Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
    
  4. Actualiza una política de cortafuegos existente con SNAT usando New-AzFirewallPolicySnat y Set-AzFirewallPolicy.

    $snat = New-AzFirewallPolicySnat -PrivateRange $privateRange2 -AutoLearnPrivateRange
    
    # Update the firewall policy
    $azureFirewallPolicy.Snat = $snat
    Set-AzFirewallPolicy -InputObject $azureFirewallPolicy
    
    # Verify the update
    Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
    
  5. Verifica los prefijos aprendidos usando Get-AzFirewallLearnedIpPrefix.

    Get-AzFirewallLearnedIpPrefix -Name $azureFirewallName -ResourceGroupName $rgname
    

cortafuegos de vHub

Para despliegues de vHub, Azure Route Server ya está desplegado y asociado por defecto. Solo necesitas activar el autoaprendizaje en tu política de cortafuegos.

En los siguientes ejemplos, sustituye los nombres de las variables ($azureFirewallName, $rgname, $location, etc.) por tus propios valores.

  1. Crea una nueva política de cortafuegos con auto-learning activado usando New-AzFirewallPolicySnat y New-AzFirewallPolicy.

    # Include AutoLearnPrivateRange to enable auto-learn
    $snat = New-AzFirewallPolicySnat -PrivateRange $privateRange -AutoLearnPrivateRange
    
    # Create the firewall policy with SNAT configuration
    $azureFirewallPolicy = New-AzFirewallPolicy -Name $azureFirewallPolicyName `
        -ResourceGroupName $rgname `
        -Location $location `
        -Snat $snat
    
    # Verify the firewall policy
    Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
    
  2. Actualiza una política de cortafuegos existente con SNAT usando New-AzFirewallPolicySnat y Set-AzFirewallPolicy.

    $snat = New-AzFirewallPolicySnat -PrivateRange $privateRange2 -AutoLearnPrivateRange
    
    # Update the firewall policy
    $azureFirewallPolicy.Snat = $snat
    Set-AzFirewallPolicy -InputObject $azureFirewallPolicy
    
    # Verify the update
    Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
    
  3. Consigue el hub virtual usando Get-AzVirtualHub y la política de firewall usando Get-AzFirewallPolicy.

    $Hub = Get-AzVirtualHub -ResourceGroupName $rgname -Name $virtualHubName
    $azureFirewallPolicy = Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
    
  4. Crea una configuración de IP pública usando New-AzFirewallHubPublicIpAddress y New-AzFirewallHubIpAddress.

    $azureFirewallPIPs = New-AzFirewallHubPublicIpAddress -Count 1
    $azureFirewallHubIPs = New-AzFirewallHubIpAddress -PublicIP $azureFirewallPIPs
    
  5. Crea el firewall de vHub con la política de auto-aprendizaje usando New-AzFirewall.

    $azureFirewall = New-AzFirewall -Name $azureFirewallName `
        -ResourceGroupName $rgname `
        -Location $location `
        -VirtualHubId $Hub.Id `
        -FirewallPolicyId $azureFirewallPolicy.Id `
        -SkuName "AZFW_Hub" `
        -HubIPAddress $azureFirewallHubIPs `
        -SkuTier $FirewallTier
    
  6. Verifica los prefijos aprendidos usando Get-AzFirewallLearnedIpPrefix.

    Get-AzFirewallLearnedIpPrefix -Name $azureFirewallName -ResourceGroupName $rgname
    

Pasos siguientes