Azure Firewall SNAT 개인 IP 주소 범위

Azure Firewall은 공용 IP 주소에 대한 모든 아웃바운드 트래픽에 SNAT 기능을 제공합니다. 기본적으로 대상 IP 주소가 IANA RFC 1918당 개인 IP 주소 범위 또는 IANA RFC 6598 당 공유 주소 공간에 있는 경우 Azure Firewall은 네트워크 규칙과 함께 SNAT를 사용하지 않습니다. 애플리케이션 규칙은 대상 IP 주소에 관계없이 투명 프록시 를 통해 항상 SNAT를 사용합니다.

이 기본 동작은 트래픽을 인터넷으로 직접 라우팅할 때 적합합니다. 그러나 기본 SNAT 동작을 재정의해야 하는 시나리오가 있습니다.

  • 강제 터널링을 사용하도록 설정하면 Azure Firewall SNAT가 AzureFirewallSubnet에 있는 방화벽의 개인 IP 주소 중 하나에 인터넷 바인딩된 트래픽을 연결하여 온-프레미스 방화벽에서 원본을 숨깁니다.
  • 조직에서 개인 네트워크에 대해 IANA RFC 1918 또는 IANA RFC 6598 이외의 등록된 IP 주소 범위를 사용하는 경우 Azure Firewall은 AzureFirewallSubnet에서 방화벽의 개인 IP 주소 중 하나에 트래픽을 SNAT합니다. 공용 IP 주소 범위를 SNAT하지 않도록 Azure 방화벽을 구성할 수 있습니다. 예를 들어 개별 IP 주소를 다음과 같이 x.x.x.xx.x.x.x/24지정하거나 IP 주소 범위를 지정합니다.

다음과 같은 방법으로 Azure Firewall SNAT 동작을 변경할 수 있습니다.

  • 대상 IP 주소에 관계없이 네트워크 규칙에 따라 SNAT 트래픽을 처리하지 않도록 Azure Firewall을 구성하려면 0.0.0.0/0을 개인 IP 주소 범위로 사용합니다. 이 구성을 사용하면 Azure Firewall에서 트래픽을 인터넷으로 직접 라우팅할 수 없습니다.
  • 대상 주소에 관계없이 항상 네트워크 규칙에 따라 SNAT 트래픽을 처리하도록 방화벽을 구성하려면 255.255.255.255/32를 개인 IP 주소 범위로 사용합니다.
  • Azure Firewall이 정기적으로 등록된 IP 및 개인 IP 주소 범위를 자동으로 학습하도록 설정하려면 자동 학습 SNAT 경로를 활성화하세요. 학습된 주소 범위는 내부로 간주되며, 이 범위로 향하는 트래픽은 SNAT로 처리되지 않습니다.

중요한

  • 개인 주소 범위 구성은 네트워크 규칙에만 적용됩니다. 애플리케이션 규칙은 항상 SNAT를 사용합니다.
  • 기본 IANA RFC 1918 주소 범위를 유지하면서 자체 프라이빗 IP 주소 범위를 지정하려면, 사용자 지정 목록에 IANA RFC 1918 범위가 여전히 포함되어 있는지 확인하세요.

다음 표는 지원되는 구성 방법을 보여줍니다. 방화벽 정책과 연결된 방화벽은 정책에서 범위를 지정해야 하며 AdditionalProperties를 사용하지 않습니다.

메서드 클래식 규칙 방화벽 정책
Azure PowerShell Supported 지원되지 않음
Azure CLI Supported 지원되지 않음
ARM 템플릿 Supported Supported
Azure Portal Supported Supported

SNAT 사설 IP 주소 범위 설정

구성 방식을 선택하세요. Azure PowerShell and Azure CLI는 classic rules만 지원합니다. 방화벽 정책으로 SNAT 범위를 설정하려면 ARM 템플릿이나 Azure 포털을 사용하세요.

Azure PowerShell을 사용하여 방화벽에 대한 개인 IP 주소 범위를 지정합니다.

참고

방화벽 정책과 연결된 방화벽의 경우 방화벽 PrivateRange 속성을 무시합니다. SNAT 탭에 설명된 대로 firewallPolicies에서 속성을 사용해야 합니다.

새 방화벽

클래식 규칙을 사용하는 새로운 방화벽의 경우, 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

참고

  • Azure Firewall을 사용하여 New-AzFirewall 배포하려면 기존 가상 네트워크 및 공용 IP 주소가 필요합니다. 전체 배포 가이드는 Azure PowerShell을 사용하여 Azure Firewall 배포 및 구성을 참조하세요.
  • IANAPrivateRanges 는 다른 범위가 추가되는 동안 Azure Firewall의 현재 기본값으로 확장됩니다. 프라이빗 범위 사양에서 기본값을 유지하려면 IANAPrivateRanges을 사양의 PrivateRange에 예제와 같이 포함시켜야 합니다.

기존 방화벽

클래식 규칙을 사용하는 기존 방화벽을 구성하려면 Get-AzFirewall을 사용하여 방화벽을 가져온 다음 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

SNAT 경로 자동 학습

Azure Firewall을 설정하면 등록된 범위와 개인 범위를 30분마다 자동 학습할 수 있습니다. 이러한 학습된 주소 범위는 네트워크 내부이므로 학습된 범위의 대상에 대한 트래픽은 SNAT되지 않습니다. 가상 네트워크(VNet) 배포와 보안 가상 허브(vHub) 배포 모두 자동 학습 SNAT 경로를 지원합니다.

참고

  • Auto-learn SNAT은 Azure Firewall이 Azure Route Server와 연관되어야 합니다.
  • VNet 배포를 위해서는 Azure Route Server를 Azure Firewall과 동일한 가상 네트워크에 배포해야 합니다.
  • vHub 배포의 경우, 기본적으로 Azure Route Server가 배포되고 연동되어 있습니다.
  • 두 배포 모델 모두 연관 완료 후 Azure Firewall 정책에서 자동 학습 SNAT을 활성화해야 합니다.
  • Azure Firewall 아키텍처 옵션에 대한 자세한 내용은 Azure Firewall Manager 아키텍처 옵션은 무엇인가요?를 참조하세요.

VNet 방화벽

VNet 배포의 경우, 자동 학습 SNAT 경로를 활성화하기 전에 Azure Route Server를 배포하고 연관해야 합니다.

사전 요구 사항:

다음 예들에서는 변수 이름($azureFirewallName, $rgname, , $location등)을 자신의 값으로 대체하세요.

  1. New-AzFirewall을 사용해 Route Server ID를 가진 새 방화벽을 생성하세요.

    # 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. Get-AzFirewallSet-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. New-AzFirewallPolicySnatNew-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. New-AzFirewallPolicySnatSet-AzFirewallPolicy를 사용하여 기존 방화벽 정책을 SNAT으로 업데이트하세요.

    $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. Get-AzFirewallLearnedIpPrefix를 사용하여 학습된 접두사를 검증하세요.

    Get-AzFirewallLearnedIpPrefix -Name $azureFirewallName -ResourceGroupName $rgname
    

vHub 방화벽

vHub 배포의 경우, 기본적으로 Azure Route Server가 배포되고 연동되어 있습니다. 방화벽 정책에서 자동 학습만 활성화하면 됩니다.

다음 예들에서는 변수 이름($azureFirewallName, $rgname, , $location등)을 자신의 값으로 대체하세요.

  1. New-AzFirewallPolicySnatNew-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. New-AzFirewallPolicySnatSet-AzFirewallPolicy를 사용하여 기존 방화벽 정책을 SNAT으로 업데이트하세요.

    $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. 가상 허브는 Get-AzVirtualHub 를 사용하고, 방화벽 정책은 Get-AzFirewallPolicy를 사용해 얻으세요.

    $Hub = Get-AzVirtualHub -ResourceGroupName $rgname -Name $virtualHubName
    $azureFirewallPolicy = Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
    
  4. New-AzFirewallHubPublicIpAddressNew-AzFirewallHubIpAddress를 사용하여 공용 IP 구성을 생성하세요.

    $azureFirewallPIPs = New-AzFirewallHubPublicIpAddress -Count 1
    $azureFirewallHubIPs = New-AzFirewallHubIpAddress -PublicIP $azureFirewallPIPs
    
  5. New-AzFirewall을 사용해 자동 학습 정책으로 vHub 방화벽을 생성하세요.

    $azureFirewall = New-AzFirewall -Name $azureFirewallName `
        -ResourceGroupName $rgname `
        -Location $location `
        -VirtualHubId $Hub.Id `
        -FirewallPolicyId $azureFirewallPolicy.Id `
        -SkuName "AZFW_Hub" `
        -HubIPAddress $azureFirewallHubIPs `
        -SkuTier $FirewallTier
    
  6. Get-AzFirewallLearnedIpPrefix를 사용하여 학습된 접두사를 검증하세요.

    Get-AzFirewallLearnedIpPrefix -Name $azureFirewallName -ResourceGroupName $rgname
    

다음 단계