Azure Firewall は、パブリック IP アドレスへのすべての送信トラフィックに対して SNAT 機能を提供します。 既定では、宛先 IP アドレスが IANA RFC 1918 または IANA RFC6598 ごとの共有アドレス空間のプライベート IP アドレス範囲にある場合、Azure Firewall はネットワーク規則で SNAT を使用しません。 アプリケーション ルールでは、宛先 IP アドレスに関係なく、 透過的なプロキシ を介して常に SNAT が使用されます。
この既定の動作は、トラフィックをインターネットに直接ルーティングする場合に適しています。 ただし、既定の SNAT 動作をオーバーライドする必要がある場合があります。
- 強制トンネリングを有効にした場合、Azure Firewall SNAT は、AzureFirewallSubnet 内のいずれかのファイアウォールのプライベート IP アドレスにインターネットにバインドされたトラフィックを送信し、オンプレミスのファイアウォールからソースを非表示にします。
- 組織がプライベート ネットワークに対して 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で登録済みおよびプライベートIPアドレスの範囲を定期的に自動的に学習するように設定するには、自動学習SNATルートを有効にしてください。 学習されたアドレス範囲は内部として扱われ、その範囲に向かうトラフィックはSNAT処理されません。
重要
- プライベート アドレス範囲の構成は、ネットワーク ルールに対してのみ適用されます。 アプリケーション ルールでは常に SNAT が使用されます。
- 独自のプライベート IP アドレス範囲を指定し、既定の IANA RFC 1918 アドレス範囲をそのまま使用する場合は、カスタム リストに IANA RFC 1918 の範囲がまだ含まれていることを確認してください。
以下の表はサポートされている構成方法を示しています。 ファイアウォール ポリシーに関連するファイアウォールでは、ポリシーで範囲を指定する必要があり、AdditionalProperties は使用しないでください。
| メソッド | クラシック ルール | ファイアウォール ポリシー |
|---|---|---|
| Azure PowerShell | サポートされている | サポートしていません |
| Azure CLI | サポートされている | サポートしていません |
| ARM テンプレート | サポートされている | サポートされている |
| Azure portal | サポートされている | サポートされている |
SNATプライベートIPアドレス範囲の設定
設定方法を選びましょう。 Azure PowerShell と Azure CLI は classic ルールのみをサポートしています。 SNAT範囲をファイアウォールポリシーで設定するには、ARMテンプレートまたはAzureポータルを使いましょう。
Azure PowerShell を使用して、ファイアウォールのプライベート IP アドレス範囲を指定します。
注
ファイアウォール ポリシーに関連するファイアウォールでは、ファイアウォールの PrivateRange プロパティは無視されます。
ARMテンプレートタブで説明されているfirewallPoliciesの中でSNATプロパティを使用する必要があります。
新しいファイアウォール
クラシックルールを使用する新しいファイアウォールの場合は、 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
注
-
New-AzFirewallを使用して Azure Firewall をデプロイするには、既存の仮想ネットワークとパブリック IP アドレスが必要です。 完全なデプロイ ガイドについては、 Azure PowerShell を使用した Azure Firewall のデプロイと構成に関するページを参照してください。 -
IANAPrivateRangesは Azure Firewall の現在の既定値に展開され、他の範囲は 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 Policyで自動学習SNATを有効にする必要があります。
- Azure Firewall アーキテクチャ オプションの詳細については、「Azure Firewall Manager のアーキテクチャのオプション」を参照してください
VNet ファイアウォール
VNetのデプロイでは、自動学習SNATルートを有効にする前にAzure Route Serverを展開し関連付ける必要があります。
前提条件:
- ファイアウォールの仮想ネットワーク内に RouteServerSubnet というサブネットがあり、サイズは少なくとも/27です。
- Azure Route Serverはファイアウォールと同じ仮想ネットワークに展開されています。 展開手順については、「Quickstart: Azure portal を使ってルートサーバーを作成・設定」をご覧ください。
以下の例では、変数名($azureFirewallName、 $rgname、 $locationなど)を自分の値に置き換えます。
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 $rgnameGet-AzFirewallとSet-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 $rgnameNew-AzFirewallPolicySnatとNew-AzFirewallPolicyを使って、Auto-learnを有効にして新しいファイアウォールポリシーを作成します。
# 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 $rgnameNew-AzFirewallPolicySnatとSet-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 $rgnameGet-AzFirewallLearnedIpPrefixを使って学習済みプレフィックスを検証します。
Get-AzFirewallLearnedIpPrefix -Name $azureFirewallName -ResourceGroupName $rgname
vHubファイアウォール
vHubのデプロイメントでは、Azure Route Serverはすでにデプロイされ、デフォルトで関連付けられています。 ファイアウォールポリシーでオートラーニングを有効にするだけで十分です。
以下の例では、変数名($azureFirewallName、 $rgname、 $locationなど)を自分の値に置き換えます。
New-AzFirewallPolicySnatとNew-AzFirewallPolicyを使って、Auto-learnを有効にして新しいファイアウォールポリシーを作成します。
# 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 $rgnameNew-AzFirewallPolicySnatとSet-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仮想ハブは Get-AzVirtualHub で取得し、ファイアウォールポリシーは Get-AzFirewallPolicyで取得します。
$Hub = Get-AzVirtualHub -ResourceGroupName $rgname -Name $virtualHubName $azureFirewallPolicy = Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgnameNew-AzFirewallHubPublicIpAddressおよびNew-AzFirewallHubIpAddressを使ってパブリックIP設定を作成します。
$azureFirewallPIPs = New-AzFirewallHubPublicIpAddress -Count 1 $azureFirewallHubIPs = New-AzFirewallHubIpAddress -PublicIP $azureFirewallPIPsNew-AzFirewallを使って自動学習ポリシーでvHubファイアウォールを作成します。
$azureFirewall = New-AzFirewall -Name $azureFirewallName ` -ResourceGroupName $rgname ` -Location $location ` -VirtualHubId $Hub.Id ` -FirewallPolicyId $azureFirewallPolicy.Id ` -SkuName "AZFW_Hub" ` -HubIPAddress $azureFirewallHubIPs ` -SkuTier $FirewallTierGet-AzFirewallLearnedIpPrefixを使って学習済みプレフィックスを検証します。
Get-AzFirewallLearnedIpPrefix -Name $azureFirewallName -ResourceGroupName $rgname