Azure Firewall SNAT 개인 IP 주소 범위

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

이 논리는 트래픽을 인터넷으로 직접 라우팅하는 경우에 효과적입니다. 그러나 기본 SNAT 동작을 재정의하려는 시나리오가 있습니다.

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

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

  • 대상 IP 주소에 관계없이 네트워크 규칙에 따라 SNAT 트래픽을 처리하지 않도록 Azure Firewall을 구성하려면 0.0.0.0/0을 개인 IP 주소 범위로 사용합니다. 이 구성을 사용하면 Azure Firewall이 트래픽을 인터넷으로 직접 라우팅할 수 없습니다.

  • 대상 주소에 관계없이 항상 네트워크 규칙에 따라 SNAT를 처리하도록 방화벽을 구성하려면 255.255.255.255/32를 개인 IP 주소 범위로 사용합니다.

  • 등록된 범위와 프라이빗 범위를 매시간 자동 학습하고 SNAT에 대해 학습된 경로를 사용하도록 Azure Firewall을 구성할 수 있습니다. 이 미리 보기 기능에는 Azure Firewall과 동일한 VNet에 Azure Route Server가 배포되어 있어야 합니다.

Important

개인 주소 범위 구성은 네트워크 규칙에만 적용됩니다. 현재 애플리케이션 규칙은 항상 SNAT입니다.

Important

사용자 고유의 개인 IP 주소 범위를 지정하고 기본 IANA RFC 1918 주소 범위를 유지하려면 사용자 지정 목록에 여전히 IANA RFC 1918 범위가 포함되어 있어야 합니다.

다음 메서드를 사용하여 SNAT 개인 IP 주소를 구성할 수 있습니다. 구성에 적합한 메서드를 사용하여 SNAT 프라이빗 주소를 구성해야 합니다. 방화벽 정책과 연결된 방화벽은 정책에서 범위를 지정해야 하며 AdditionalProperties를 사용하지 않습니다.

메서드 클래식 규칙 사용 방화벽 정책 사용
Azure Portal 지원 지원
Azure PowerShell PrivateRange 구성 현재 지원되지 않음
Azure CLI --private-ranges 구성 현재 지원되지 않음
ARM 템플릿 방화벽 속성에서 AdditionalProperties 구성 방화벽 정책에서 snat/privateRanges 구성

SNAT 개인 IP 주소 범위 구성 - Azure PowerShell

클래식 규칙

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

참고 항목

방화벽 정책과 연결된 방화벽의 경우 방화벽 PrivateRange 속성을 무시합니다. SNAT 개인 IP 주소 범위 - ARM 템플릿 구성에서 설명한 대로 firewallPolicies에서 SNAT 속성을 사용해야 합니다.

새 방화벽

클래식 규칙을 사용하는 새 방화벽의 경우 Azure PowerShell cmdlet은 다음과 같습니다.

$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

참고 항목

New-AzFirewall을 사용하는 Azure Firewall을 배포하려면 기존 VNet 및 공용 IP 주소가 필요합니다. 전체 배포 가이드는 Azure PowerShell을 사용하여 Azure Firewall 배포 및 구성을 참조하세요.

참고 항목

IANAPrivateRanges는 Azure Firewall의 현재 기본값으로 확장되고 다른 범위는 Azure Firewall에 추가됩니다. IANAPrivateRanges를 개인 범위 사양에서 기본값으로 유지하려면 다음 예와 같이 PrivateRange 사양에 남아 있어야 합니다.

자세한 내용은 New-AzFirewall을 참조하세요.

기존 방화벽

기존 방화벽을 구성하려면 다음 Azure PowerShell cmdlet을 사용합니다.

$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 개인 IP 주소 범위 구성 - Azure CLI

클래식 규칙

Azure CLI를 사용하여 방화벽에 대한 개인 IP 주소 범위를 지정할 수 있습니다.

새 방화벽

클래식 규칙을 사용하는 새 방화벽의 경우 Azure CLI 명령은 다음과 같습니다.

az network firewall create \
-n <fw-name> \
-g <resourcegroup-name> \
--private-ranges 192.168.1.0/24 192.168.1.10 IANAPrivateRanges

참고 항목

Azure CLI 명령 az network firewall create를 사용하여 Azure Firewall을 배포하려면 공용 IP 주소 및 IP 구성을 생성하려면 추가 구성 단계가 필요합니다. 전체 배포 가이드는 Azure CLI를 사용하여 Azure Firewall 배포 및 구성을 참조합니다. 전체 배포 가이드는 Azure CLI를 사용하여 Azure Firewall 배포 및 구성을 참조하세요.

참고 항목

IANAPrivateRanges는 Azure Firewall의 현재 기본값으로 확장되고 다른 범위는 Azure Firewall에 추가됩니다. IANAPrivateRanges를 개인 범위 사양에서 기본값으로 유지하려면 다음 예와 같이 private-ranges 사양에 남아 있어야 합니다.

기존 방화벽

클래식 규칙을 사용하는 기존 방화벽을 구성하기 위한 Azure CLI 명령은 다음과 같습니다.

az network firewall update \
-n <fw-name> \
-g <resourcegroup-name> \
--private-ranges 192.168.1.0/24 192.168.1.10 IANAPrivateRanges

SNAT 개인 IP 주소 범위 구성 - ARM 템플릿

클래식 규칙

ARM 템플릿 배포 중에 SNAT를 구성하려면 additionalProperties 속성에 다음을 추가할 수 있습니다.

"additionalProperties": {
   "Network.SNAT.PrivateRanges": "IANAPrivateRanges , IPRange1, IPRange2"
},

방화벽 정책

방화벽 정책과 연결된 Azure Firewall은 2020-11-01 API 버전 이후 SNAT 프라이빗 범위를 지원하고 있습니다. 현재는 템플릿을 사용하여 방화벽 정책에서 SNAT 프라이빗 범위를 업데이트할 수 있습니다. 다음 샘플에서는 항상 SNAT 네트워크 트래픽을 수행하도록 방화벽을 구성합니다.

{ 

            "type": "Microsoft.Network/firewallPolicies", 
            "apiVersion": "2020-11-01", 
            "name": "[parameters('firewallPolicies_DatabasePolicy_name')]", 
            "location": "eastus", 
            "properties": { 
                "sku": { 
                    "tier": "Standard" 
                }, 
                "snat": { 
                    "privateRanges": "[255.255.255.255/32]" 
                } 
            } 

SNAT 개인 IP 주소 범위 구성 - Azure Portal

클래식 규칙

Azure Portal을 사용하여 방화벽에 대한 개인 IP 주소 범위를 지정할 수 있습니다.

  1. 리소스 그룹을 선택한 다음 방화벽을 선택합니다.

  2. 개요 페이지의 개인 IP 범위에서 기본값 IANA RFC 1918을 선택합니다.

    다음과 같이 개인 IP 접두사 편집 페이지가 열립니다.

    Screenshot of edit private IP prefixes.

  3. 기본적으로 IANAPrivateRanges가 구성됩니다.

  4. 사용자 환경에 대한 개인 IP 주소 범위를 편집하고 저장을 선택합니다.

방화벽 정책

  1. 리소스 그룹을 선택한 다음, 방화벽을 선택합니다.

  2. 설정 열에서 개인 IP 범위(SNAT)를 선택합니다.

  3. SNAT 구성을 사용자 지정하려면 SNAT 수행에서 환경에 대해 SNAT를 수행할 조건을 선택합니다. Screenshot of Private IP ranges (SNAT).

  4. 적용을 선택합니다.

SNAT 경로 자동 학습(미리 보기)

등록된 범위와 프라이빗 범위를 30분마다 자동으로 학습하도록 Azure Firewall을 구성할 수 있습니다. 이러한 학습된 주소 범위는 네트워크 내부로 간주되므로 학습된 범위의 대상에 대한 트래픽은 SNAT되지 않습니다. SNAT 범위를 자동 학습하려면 Azure Route Server를 Azure Firewall과 동일한 VNet에 배포해야 합니다. 방화벽은 Azure Route Server와 연결되고 Azure Firewall 정책에서 SNAT 범위를 자동 학습하도록 구성되어야 합니다. 현재 ARM 템플릿, Azure PowerShell 또는 Azure Portal을 사용하여 자동 학습 SNAT 경로를 구성할 수 있습니다.

참고 항목

SNAT 경로 자동 학습은 VNet 배포(허브 가상 네트워크)에서만 사용할 수 있습니다. VWAN 배포(보안 가상 허브)에서는 사용할 수 없습니다. Azure Firewall 아키텍처 옵션에 대한 자세한 내용은 Azure Firewall Manager 아키텍처 옵션은 무엇인가요?를 참조하세요.

ARM 템플릿을 사용하여 구성

다음 JSON을 사용하여 자동 학습을 구성할 수 있습니다. Azure Firewall은 Azure Route Server와 연결되어야 합니다.

	  "type": "Microsoft.Network/firewallPolicies",
         "apiVersion": "2022-11-01",
	"name": "[parameters('firewallPolicies_DatabasePolicy_name')]", 
            "location": "eastus", 
            "properties": { 
                "sku": { 
                    "tier": "Standard" 
                }, 
                "snat": { 
                     "autoLearnPrivateRanges": "Enabled"
                } 
            } 

다음 JSON을 사용하여 Azure Route Server를 연결합니다.

  "type": "Microsoft.Network/azureFirewalls",
  "apiVersion": "2022-11-01",
  "name": "[parameters('azureFirewalls_testFW_name')]",
  "location": "eastus",
  "properties": {
    "sku": {
      "name": "AZFW_VNet",
      "tier": "Standard"
    },
    "threatIntelMode": "Alert",
    "additionalProperties": {
      "Network.RouteServerInfo.RouteServerID": "[parameters'virtualHubs_TestRouteServer_externalid')]"
    },
    ...
  }

Azure PowerShell을 사용하여 구성

  • RouteServerId를 사용하여 새 방화벽을 만듭니다.

    # specify RouteServerId Uri
    $routeServerId="/subscriptions/your_sub/resourceGroups/testRG/providers/Microsoft.Network/virtualHubs/TestRS"
    
    # Create AzureFirewall 
    $azureFirewall = New-AzFirewall -Name $azureFirewallName -ResourceGroupName `
       $rgname -Location $location -RouteServerId $routeServerId 
    
    # Get firewall and confirm if RouteServerId is included on the response under additional properties (Network.RouteServerInfo.RouteServerID) 
    Get-AzFirewall -Name $azureFirewallName -ResourceGroupName $rgname 
    
  • RouteServerId를 사용하여 기존 방화벽 업데이트

    # specify RouteServerId Uri 
    $routeServerId="/subscriptions/ your_sub /resourceGroups/testRG/providers/Microsoft.Network/virtualHubs/TestRS"
    
    # Get firewall 
    $azFirewall = Get-AzFirewall -Name $azureFirewallName -ResourceGroupName $rgname 
    
    # Update the response with RouteServerId and do firewall SET 
    $azFirewall.RouteServerId = $routeServerId 
    Set-AzFirewall -AzureFirewall $azFirewall
    
    # Do firewall Get and confirm if routeServerId is updated 
    Get-AzFirewall -Name $azureFirewallName -ResourceGroupName $rgname
    
    
  • 제공된 SNAT 매개 변수를 사용하여 새 방화벽 정책 만들기

    # If AutoLearnPrivateRange parameter is provided, auto learn will be enabled, if not it will be disabled 
    $snat = New-AzFirewallPolicySnat -PrivateRange $privateRange -AutoLearnPrivateRange
    
    # Create AzureFirewallPolicy (with SNAT) 
    $azureFirewallPolicy = New-AzFirewallPolicy -Name $azureFirewallPolicyName `
       -ResourceGroupName $rgname -Location $location -Snat $snat
    
    # Get AzureFirewallPolicy and verify 
    Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname 
    
    
  • SNAT를 사용하여 기존 방화벽 정책 업데이트

    $snat = New-AzFirewallPolicySnat -PrivateRange $privateRange2 
    
    # Set AzureFirewallPolicy 
    $azureFirewallPolicy.Snat = $snat 
    Set-AzFirewallPolicy -InputObject $azureFirewallPolicy 
    
    # Do Get and Verify 
    Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname 
    
  • 방화벽 학습 접두사 가져오기

      Get-AzFirewallLearnedIpPrefix -Name $azureFirewallName -ResourceGroupName $rgname 
    

Azure Portal을 사용하여 구성

포털을 사용하여 경로 서버를 Azure Firewall과 연결하여 자동 학습 SNAT 경로(미리 보기)를 구성할 수 있습니다.

포털을 사용하여 다음 작업을 완료합니다.

  • RouteServerSubnet이라는 서브넷을 기존 방화벽 VNet에 추가합니다. 서브넷의 크기는 /27 이상이어야 합니다.
  • 기존 방화벽 VNet에 Route Server를 배포합니다. Azure Route Server에 대한 자세한 내용은 빠른 시작: Azure Portal을 사용하여 Route Server 만들기 및 구성을 참조하세요.
  • 학습된 SNAT IP 접두사(미리 보기) 방화벽에 경로 서버를 추가합니다. Screenshot showing firewall add a route server.
  • 방화벽 정책을 수정하여 개인 IP 범위(SNAT) 섹션에서 자동 학습 IP 접두사(미리 보기)를 사용하도록 설정합니다. Screenshot showing firewall policy Private IP ranges (SNAT) settings.
  • 학습된 SNAT IP 접두사(미리 보기) 페이지에서 학습된 경로를 볼 수 있습니다.

다음 단계