Azure Firewall の SNAT プライベート IP アドレス範囲
Azure Firewall は、パブリック IP アドレスへのすべての送信トラフィックに対して SNAT 機能を提供します。 既定では、宛先の IP アドレスが IANA RFC 1918 のプライベート IP アドレスの範囲または IANA RFC 6598 の共有アドレス スペースに含まれているときは、Azure Firewall でネットワーク ルールによる SNAT を行いません。 アプリケーション ルールには、宛先 IP アドレスに関係なく、透過プロキシを使用して常に SNAT が適用されます。
このロジックは、トラフィックをインターネットに直接ルーティングする場合に適しています。 ただし、既定の SNAT 動作をオーバーライドする必要があるシナリオがあります。
- 強制トンネリングを有効にした場合、インターネットへのトラフィックは SNAT によって AzureFirewallSubnet のいずれかのファイアウォール プライベート IP アドレスに変換され、ソースはオンプレミスのファイアウォールから隠されます。
- 組織がプライベート ネットワークに対して IANA RFC 1918 または IANA RFC 6598 の外の登録 IP アドレス範囲を使用している場合、Azure Firewall は、SNAT を使用して、トラフィックを AzureFirewallSubnet のいずれかのファイアウォール プライベート IP アドレスに変換します。 ただし、パブリック IP アドレス範囲の SNAT が行われないように、Azure Firewall を構成することができます。 たとえば、個々の IP アドレスを指定するには、
192.168.1.10
のように指定します。 IP アドレスの範囲を指定するには、192.168.1.0/24
のように指定します。
Azure Firewall SNAT の動作は、次の方法で変更できます。
Azure Firewall が宛先 IP アドレスに関係なく、ネットワーク ルールによって処理されるトラフィックの SNAT を行わないように構成するには、プライベート IP アドレス範囲として 0.0.0.0/0 を使用します。 この構成では、Azure Firewall がトラフィックをインターネットに直接ルーティングすることはできません。
ファイアウォールが宛先 IP アドレスに関係なく、ネットワーク ルールによって処理されるトラフィックの SNAT を常に行うように構成するには、プライベート IP アドレス範囲として 255.255.255.255/32 を使用します。
Azure Firewall は、登録された範囲とプライベート範囲を 1 時間ごとに自動学習し、SNAT に対して学習されたルートを使用するように構成できます。 このプレビュー機能では、Azure Firewall と同じ VNet に Azure Route Server をデプロイする必要があります。
重要
プライベート アドレス範囲の構成は、ネットワーク ルールに対してのみ適用されます。 現時点では、アプリケーション ルールでは常に SNAT が使用されます。
重要
独自のプライベート 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 アドレス範囲を指定できます。
Note
ファイアウォール ポリシーに関連するファイアウォールでは、ファイアウォールの PrivateRange
プロパティは無視されます。 「SNAT のプライベート IP アドレス範囲を構成する - ARM テンプレート」で説明されているように、firewallPolicies
で SNAT
プロパティを使用する必要があります。
新しいファイアウォール
クラシック ルールが使用される新しいファイアウォールの場合、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
Note
New-AzFirewall
を使用して Azure Firewall をデプロイするには、既存の VNet とパブリック IP アドレスが必要です。 デプロイの詳細なガイドについては、「Azure PowerShell を使用して Azure Firewall のデプロイと構成を行う」を参照してください。
Note
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
Note
Azure CLI コマンド az network firewall create
を使用して Azure Firewall をデプロイするには、パブリック IP アドレスと IP 構成を作成するための追加の構成手順が必要です。 デプロイの詳細なガイドについては、「Azure CLI を使用して Azure Firewall のデプロイと構成を行う」を参照してください。
Note
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 では、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 アドレス範囲を指定できます。
対象のリソース グループを選択し、ファイアウォールを選択します。
[概要] ページの [プライベート IP 範囲] で、既定値 [IANA RFC 1918] を選択します。
[Edit Private IP Prefixes](プライベート IP プレフィックスの編集) ページが開きます。
既定では、 [IANAPrivateRanges] が構成されています。
お使いの環境に合わせてプライベート IP アドレス範囲を編集し、 [保存] を選択します。
ファイアウォール ポリシー
対象のリソース グループを選択し、次にファイアウォール ポリシーを選択します。
[設定] 列で [プライベート IP 範囲 (SNAT)] を選択します。
適用を選択します。
自動学習 SNAT ルート (プレビュー)
登録された範囲とプライベート範囲の両方を 30 分ごとに自動学習するように Azure Firewall を構成できます。 そこで学習されるアドレス範囲は内部ネットワークと見なされるため、学習される範囲に宛てて送信されるトラフィックには SNAT が適用されません。 SNAT 範囲の自動学習を使用するには、Azure Firewall と同じ VNet に Azure Route Server がデプロイされている必要があります。 ファイアウォールは、Azure Route Server に関連付けられ、SNAT 範囲を自動学習するように Azure Firewall ポリシーで構成されている必要があります。 自動学習 SNAT ルートの構成には、現在、ARM テンプレート、Azure PowerShell、または Azure portal を使用できます。
Note
自動学習 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 を使用して構成する
ポータルを使用して、Route Server を Azure Firewall に関連付けて、自動学習 SNAT ルート (プレビュー) を構成できます。
ポータルから以下の作業を完了します。
- RouteServerSubnet という名前のサブネットを、既存のファイアウォール VNet に追加します。 このサブネットのサイズは、少なくとも /27 にします。
- Route Server を、既存のファイアウォール VNet にデプロイします。 Azure Route Server の詳細については、「クイックスタート: Azure portal を使用してルート サーバーを作成および構成する」を参照してください。
- ファイアウォールの [学習した SNAT IP プレフィックス (プレビュー)] ページに、ルート サーバーを追加します。
- ファイアウォール ポリシーに変更を加え、[プライベート IP 範囲 (SNAT)] セクションの [自動学習 IP プレフィックス (プレビュー)] を有効にします。
- 学習したルートは、[学習した SNAT IP プレフィックス (プレビュー)] ページで確認できます。
次のステップ
- Azure Firewall の強制トンネリングについて学習します。