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 アドレス範囲を指定できます。
対象のリソース グループを選択し、ファイアウォールを選択します。
[概要] ページの [プライベート IP 範囲] で、既定値 [IANA RFC 1918] を選択します。
[Edit Private IP Prefixes](プライベート IP プレフィックスの編集) ページが開きます。
既定では、 [IANAPrivateRanges] が構成されています。
お使いの環境に合わせてプライベート IP アドレス範囲を編集し、 [保存] を選択します。
ファイアウォール ポリシー
- 対象のリソース グループを選択し、次にファイアウォール ポリシーを選択します。
- [設定] 列で [プライベート IP 範囲 (SNAT)] を選択します。
- [SNAT の実行] で、ご使用の環境で SNAT を実行する条件を選び、SNAT 構成をカスタマイズします。
- 適用を選択します。
自動学習 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 ルート (プレビュー) を構成するには、次の手順に従います。
サブネットを追加します。
- 既存のファイアウォール仮想ネットワークに RouteServerSubnet という名前のサブネットを追加します。
- サブネットのサイズが /27 以上であることを確認します。
ルート サーバーを展開する:
- 既存のファイアウォール仮想ネットワークにルート サーバーをデプロイします。
- 詳細な手順については、「 クイック スタート: Azure portal を使用して Route Server を作成して構成する」を参照してください。
ルート サーバーを関連付けます。
- ファイアウォールの Learned SNAT IP プレフィックス (プレビュー) ページで、ルート サーバーを追加します。
ファイアウォール ポリシーを変更します。
- ファイアウォール ポリシーの [プライベート IP 範囲 (SNAT)] セクションで、自動学習 IP プレフィックス (プレビュー) を有効にします。
学習したルートを表示する:
- 学習した SNAT IP プレフィックス (プレビュー) ページで、学習したルートを 確認します。
次のステップ
- Azure Firewall の強制トンネリングについて学習します。