Usługa SNAT dla zakresów prywatnych adresów IP w usłudze Azure Firewall

Usługa Azure Firewall zapewnia funkcję SNAT dla całego ruchu wychodzącego do publicznych adresów IP. Domyślnie usługa Azure Firewall nie używa protokołu SNAT z regułami sieciowymi, gdy docelowy adres IP znajduje się w prywatnym zakresie adresów IP dla protokołu IANA RFC 1918 lub współużytkowanej przestrzeni adresowej na IANA RFC 6598. Reguły aplikacji zawsze używają protokołu SNAT za pośrednictwem przezroczystego serwera proxy niezależnie od docelowego adresu IP.

To domyślne zachowanie jest odpowiednie podczas kierowania ruchu bezpośrednio do Internetu. Istnieją jednak scenariusze, w których może być konieczne zastąpienie domyślnego zachowania SNAT:

  • Jeśli włączysz wymuszone tunelowanie, usługa Azure Firewall wykonuje SNAT dla ruchu internetowego przechodzącego przez zaporę, zmieniając jego adres wyjściowy na jeden z prywatnych adresów IP w podsieci AzureFirewallSubnet, co ukrywa źródło przed zaporą w lokalnej infrastrukturze.
  • Jeśli twoja organizacja używa zarejestrowanych zakresów adresów IP poza protokołem IANA RFC 1918 lub IANA RFC 6598 dla sieci prywatnych, usługa Azure Firewall SNATs ruchu do jednego z prywatnych adresów IP zapory w podsieci AzureFirewallSubnet. Możesz skonfigurować usługę Azure Firewall, aby nie stosować SNAT do twojego zakresu publicznych adresów IP. Na przykład określ pojedynczy adres IP jako x.x.x.x lub zakres adresów IP jako x.x.x.x/24.

Zachowanie SNAT usługi Azure Firewall można zmienić w następujący sposób:

  • Aby skonfigurować usługę Azure Firewall tak, aby nigdy nie wykonywała SNAT na ruchu przetwarzanym przez reguły sieciowe niezależnie od docelowego adresu IP, użyj zakresu prywatnych adresów IP 0.0.0.0/0. Dzięki tej konfiguracji usługa Azure Firewall nie może kierować ruchu bezpośrednio do Internetu.
  • Aby skonfigurować zaporę tak, aby reguły sieciowe zawsze stosowały SNAT na ruchu niezależnie od adresu docelowego, użyj zakresu prywatnych adresów IP 255.255.255.255/32.
  • Aby skonfigurować Azure Firewall tak, by automatycznie uczył się rejestrowanych i prywatnych zakresów adresów IP w regularnych odstępach czasu, włącz automatyczne uczenie się tras SNAT. Nauczone zakresy adresów są traktowane jako wewnętrzne, a ruch przeznaczony do tych zakresów nie jest zaznaczany SNAT-em.

Ważne

  • Konfiguracja zakresu adresów prywatnych dotyczy tylko reguł sieci. Reguły aplikacji zawsze używają protokołu SNAT.
  • Jeśli chcesz określić własne zakresy prywatnych adresów IP i zachować domyślne zakresy adresów IANA RFC 1918, upewnij się, że lista niestandardowa nadal zawiera zakres IANA RFC 1918.

Poniższa tabela przedstawia obsługiwane metody konfiguracji. Zapory powiązane z polityką zapory muszą określać zakres w tej polityce i nie używać AdditionalProperties.

Metoda Reguły klasyczne Zasady zapory
Azure PowerShell Supported Niewspierane
Azure CLI Supported Niewspierane
szablon usługi ARM Supported Supported
Azure Portal Supported Supported

Konfiguruj prywatne zakresy adresów IP w SNAT

Wybierz metodę konfiguracji. Azure PowerShell i Azure CLI obsługują tylko klasyczne reguły. Aby skonfigurować zakresy SNAT za pomocą polityki zapory, użyj szablonu ARM lub portalu Azure.

Użyj programu Azure PowerShell, aby określić zakresy prywatnych adresów IP dla zapory.

Uwaga

Właściwość zapory PrivateRange jest ignorowana dla zapór skojarzonych z polityką zarządzania zaporą sieciową. Musisz użyć właściwości SNAT w firewallPolicies, zgodnie z opisem na karcie Szablon ARM.

Nowa zapora

Aby utworzyć nową zaporę korzystającą z klasycznych reguł, użyj polecenia New-AzFirewall, aby ją utworzyć:

$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

Uwaga

  • Wdrażanie usługi Azure Firewall przy użyciu programu New-AzFirewall wymaga istniejącej sieci wirtualnej i publicznego adresu IP. Aby uzyskać pełny przewodnik wdrażania, zobacz Wdrażanie i konfigurowanie usługi Azure Firewall przy użyciu programu Azure PowerShell.
  • IANAPrivateRanges Rozwija się do bieżących wartości domyślnych w usłudze Azure Firewall, a pozostałe zakresy są do niego dodawane. Aby zachować domyślny element IANAPrivateRanges w specyfikacji zakresu prywatnego, musi on pozostać w specyfikacji PrivateRange, jak pokazano w przykładzie.

Istniejąca zapora

Aby skonfigurować istniejącą zaporę używającą klasycznych reguł, pobierz zaporę za pomocą Get-AzFirewall i zaktualizuj ją za pomocą 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

Automatyczne uczenie się tras SNAT

Możesz skonfigurować Azure Firewall tak, aby automatycznie uczył się zarówno rejestrowanych, jak i prywatnych zakresów co 30 minut. Te poznane zakresy adresów są wewnętrzne dla sieci, więc ruch do miejsc docelowych w poznanych zakresach nie jest poddawany SNAT. Zarówno wdrożenia sieci wirtualnej (VNet), jak i wdrożenia zabezpieczonych wirtualnych hub (vHub) obsługują automatyczne uczenie się tras SNAT.

Uwaga

  • Auto-learn SNAT wymaga, aby Azure Firewall był powiązany z Azure Route Server.
  • W przypadku wdrożeń VNet musisz wdrożyć Azure Route Server w tej samej sieci wirtualnej co Azure Firewall.
  • Dla wdrożeń vHub Azure Route Server jest już domyślnie wdrożony i powiązany.
  • Dla obu modeli wdrożenia musisz włączyć automatyczne uczenie się SNAT w polityce Azure Firewall po zakończeniu powiązania.
  • Aby uzyskać więcej informacji na temat opcji architektury usługi Azure Firewall, zobacz Co to są opcje architektury usługi Azure Firewall Manager?

Zapora VNet

W przypadku wdrożeń VNet musisz wdrożyć i skojarzyć Azure Route Server przed włączeniem automatycznego uczenia się tras SNAT.

Wymagania wstępne:

W poniższych przykładach zastąp nazwy zmiennych ($azureFirewallName, $rgname, $location, itd.) własnymi wartościami.

  1. Stwórz nową zaporę z identyfikatorem Route Server, używając 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. Połącz Route Server z istniejącą zaporą, używając Get-AzFirewall i 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. Utwórz nowe zasady zapory z włączonym automatycznym uczeniem za pomocą New-AzFirewallPolicySnat i 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. Zaktualizuj istniejącą politykę zapory za pomocą SNAT, używając New-AzFirewallPolicySnat i 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. Zweryfikowaj wyuczone prefiksy, używając Get-AzFirewallLearnedIpPrefiks.

    Get-AzFirewallLearnedIpPrefix -Name $azureFirewallName -ResourceGroupName $rgname
    

Zapora vHub

Dla wdrożeń vHub Azure Route Server jest już domyślnie wdrożony i powiązany. Wystarczy włączyć automatyczne uczenie w polityce zapory.

W poniższych przykładach zastąp nazwy zmiennych ($azureFirewallName, $rgname, $location, itd.) własnymi wartościami.

  1. Utwórz nowe zasady zapory z włączonym automatycznym uczeniem za pomocą New-AzFirewallPolicySnat i 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. Zaktualizuj istniejącą politykę zapory za pomocą SNAT, używając New-AzFirewallPolicySnat i 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. Pobierz wirtualny hub korzystając z Get-AzVirtualHub , a politykę zapory za pomocą Get-AzFirewallPolicy.

    $Hub = Get-AzVirtualHub -ResourceGroupName $rgname -Name $virtualHubName
    $azureFirewallPolicy = Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
    
  4. Stwórz publiczną konfigurację IP, używając New-AzFirewallHubPublicIpAddress oraz New-AzFirewallHubIpAddress.

    $azureFirewallPIPs = New-AzFirewallHubPublicIpAddress -Count 1
    $azureFirewallHubIPs = New-AzFirewallHubIpAddress -PublicIP $azureFirewallPIPs
    
  5. Stwórz zaporę vHub z polityką auto-learn, używając 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. Zweryfikowaj wyuczone prefiksy, używając Get-AzFirewallLearnedIpPrefiks.

    Get-AzFirewallLearnedIpPrefix -Name $azureFirewallName -ResourceGroupName $rgname
    

Następne kroki