次の方法で共有


Azure Firewall の SNAT プライベート IP アドレス範囲

Azure Firewall は、パブリック IP アドレスへのすべての送信トラフィックに対して SNAT 機能を提供します。 既定では、宛先の IP アドレスが IANA RFC 1918 のプライベート IP アドレスの範囲または IANA RFC 6598 の共有アドレス スペースに含まれているときは、Azure Firewall でネットワーク ルールによる SNAT を行いません。 アプリケーション ルールは、宛先 IP アドレスに関係なく、 透過的なプロキシ を使用して常に SNAT されます。

この既定の動作は、トラフィックをインターネットに直接ルーティングする場合に適しています。 ただし、既定の SNAT 動作をオーバーライドする必要がある場合があります。

  • 強制トンネリングを有効にした場合、インターネットにバインドされたトラフィックは AzureFirewallSubnet 内のファイアウォールのプライベート IP アドレスの 1 つに SNA 化され、オンプレミスのファイアウォールからソースが非表示になります。
  • 組織がプライベート ネットワークに対して IANA RFC 1918 または IANA RFC 6598 以外の登録済み IP アドレス範囲を使用している場合、Azure Firewall は AzureFirewallSubnet のファイアウォールのプライベート IP アドレスのいずれかにトラフィックを送信します。 パブリック IP アドレス範囲の SNAT が行われないように、Azure Firewall を構成することができます。 たとえば、個々の IP アドレスを x.x.x.x として指定し、IP アドレスの範囲を x.x.x.x/24として指定します。

Azure Firewall SNAT の動作は、次の方法で変更できます。

  • Azure Firewall が宛先 IP アドレスに関係なく、ネットワーク ルールによって処理されるトラフィックの SNAT を行わないように構成するには、プライベート IP アドレス範囲として 0.0.0.0/0 を使用します。 この構成では、Azure Firewall はトラフィックをインターネットに直接ルーティングできません。
  • 宛先アドレスに関係なくネットワーク 規則によって 処理される常に SNAT トラフィックをファイアウォールに構成するには、プライベート IP アドレス範囲として 255.255.255.255/32 を使用します。
  • Azure Firewall は、登録された範囲とプライベート範囲を 1 時間ごとに 自動学習 し、SNAT の学習されたルートを使用するように構成できます。 このプレビュー機能では、 Azure Firewall と同じ仮想ネットワークにデプロイされた Azure Route Server が必要です。

重要

  • プライベート アドレス範囲の構成は、ネットワーク ルールに対してのみ適用されます。 アプリケーション ルールは常に SNAT です。
  • 独自のプライベート IP アドレス範囲を指定し、既定の IANA RFC 1918 アドレス範囲を保持する場合は、カスタム リストに IANA RFC 1918 範囲が引き続き含まれていることを確認します。

SNAT のプライベート IP アドレスを構成するには、次の方法を使用します。 構成に適した方法を使用します。 ファイアウォール ポリシーに関連するファイアウォールでは、ポリシーで範囲を指定する必要があり、AdditionalProperties は使用しないでください。

メソッド クラシック ルールの使用 ファイアウォール ポリシーの使用
Azure portal サポート対象 サポート対象
Azure PowerShell 設定するPrivateRange 現在はサポートされていません
Azure CLI --private-ranges を構成する 現在はサポートされていません
ARM テンプレート ファイアウォール プロパティに AdditionalProperties を構成する ファイアウォール ポリシーに snat/privateRanges を構成する

SNAT のプライベート IP アドレス範囲を構成する - Azure PowerShell

クラシック ルール

Azure PowerShell を使用して、ファイアウォールのプライベート IP アドレス範囲を指定できます。

ファイアウォール ポリシーに関連するファイアウォールでは、ファイアウォールの PrivateRange プロパティは無視されます。 「SNAT」で説明されているように、firewallPolicies プロパティを使用する必要があります。

新しいファイアウォール

クラシック ルールを使用する新しいファイアウォールの場合は、次の Azure PowerShell コマンドレットを使用します。

$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 をデプロイするには、既存の仮想ネットワークとパブリック IP アドレスが必要です。 デプロイの詳細なガイドについては、「Azure PowerShell を使用して Azure Firewall のデプロイと構成を行う」を参照してください。
  • IANAPrivateRanges が Azure Firewall の現在の既定値に展開され、他の範囲が追加されます。 プライベート範囲の仕様で IANAPrivateRanges 既定値を保持するには、例に示すように、 PrivateRange の仕様に残る必要があります。

詳細については、「New-AzFirewall」をご覧ください。

既存のファイアウォール

クラシック ルールが使用される既存のファイアウォールを構成するには、次の Azure PowerShell コマンドレットを使用します。

$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 のデプロイと構成を行う」を参照してください。
  • IANAPrivateRanges が 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 では、API バージョン 2020-11-01 以降の 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] を選択します。

    [Edit Private IP Prefixes](プライベート IP プレフィックスの編集) ページが開きます。

  3. 既定では、 [IANAPrivateRanges] が構成されています。

  4. お使いの環境に合わせてプライベート IP アドレス範囲を編集し、 [保存] を選択します。

ファイアウォール ポリシー

  1. 対象のリソース グループを選択し、次にファイアウォール ポリシーを選択します。
  2. [設定] 列で [プライベート IP 範囲 (SNAT)] を選択します。
  3. [SNAT の実行] で、ご使用の環境で SNAT を実行する条件を選び、SNAT 構成をカスタマイズします。
  4. 適用を選択します。

自動学習 SNAT ルート (プレビュー)

登録された範囲とプライベート範囲の両方を 30 分ごとに自動学習するように Azure Firewall を構成できます。 これらの学習されたアドレス範囲はネットワークの内部にあると見なされるため、学習された範囲の宛先へのトラフィックは SNATed ではありません。 SNAT 範囲を自動学習するには、Azure Route Server を Azure Firewall と同じ仮想ネットワークにデプロイする必要があります。 ファイアウォールは、Azure Route Server に関連付け、Azure Firewall ポリシーで SNAT 範囲を自動学習するように構成する必要があります。 現在、ARM テンプレート、Azure PowerShell、または Azure portal を使用して、SNAT ルートの自動学習を構成できます。

自動学習 SNAT ルートは、仮想ネットワークのデプロイ (ハブ仮想ネットワーク) でのみ使用できます。 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 portal を使用して自動学習 SNAT ルート (プレビュー) を構成するには、次の手順に従います。

  1. サブネットを追加します

    • 既存のファイアウォール仮想ネットワークに RouteServerSubnet という名前のサブネットを追加します。
    • サブネットのサイズが /27 以上であることを確認します。
  2. ルート サーバーを展開する:

  3. ルート サーバーを関連付けます

    • ファイアウォールの Learned SNAT IP プレフィックス (プレビュー) ページで、ルート サーバーを追加します。
  4. ファイアウォール ポリシーを変更します

    • ファイアウォール ポリシーの [プライベート IP 範囲 (SNAT)] セクションで、自動学習 IP プレフィックス (プレビュー) を有効にします。
  5. 学習したルートを表示する:

    • 学習した SNAT IP プレフィックス (プレビュー) ページで、学習したルートを 確認します。

次のステップ