跳到主要内容

AzureにおけるNATとIPアドレス管理

Azureネットワークにおいて、IPアドレスの管理とNAT(Network Address Translation)の理解は、セキュアでスケーラブルなアーキテクチャを構築するために不可欠です。本ドキュメントでは、Public IP、Private IP、SNAT、DNAT、およびNAT Gatewayについて、Azureリソースを用いた実装の観点から解説します。

IPアドレスの種類

Public IP Address (パブリックIPアドレス)

インターネットから直接アクセス可能なIPアドレスです。Azureでは Public IP Address リソースとして管理されます。

  • SKU: Basic と Standard がありますが、現在は Standard SKU が推奨されます(Availability Zones対応、デフォルトでセキュア)。
  • 割り当て方法: Static(静的)と Dynamic(動的)がありますが、Standard SKUはStaticのみです。

Private IP Address (プライベートIPアドレス)

Azure Virtual Network (VNet) 内でのみ有効なIPアドレスです。VMやLoad Balancerのフロントエンドなどに割り当てられます。

  • 割り当て: サブネットのCIDR範囲から自動的に割り当てられます(DHCP)。
  • 固定化: 必要に応じて、ネットワークインターフェース (NIC) の設定で特定のIPを静的に割り当てることができます。

NAT (Network Address Translation) の種類

SNAT (Source Network Address Translation)

内部ネットワーク(Private IP)から外部ネットワーク(インターネットなど)へ通信する際に、送信元IPアドレスを変換する技術です。Azureでは「アウトバウンド接続」に関連します。

AzureにおけるSNATの実装方式

  1. Azure NAT Gateway (推奨)

    • サブネットに関連付けることで、そのサブネットからのすべてのアウトバウンド通信を特定のPublic IP経由で行います。
    • SNATポート枯渇(SNAT Port Exhaustion)のリスクを最小限に抑えます。
  2. Load Balancer Outbound Rules

    • Standard Load Balancerを使用して、アウトバウンド通信のルールを明示的に定義します。
  3. Default Outbound Access (非推奨)

    • 明示的な設定がない場合にAzureが自動的に割り当てるIPを使用しますが、セキュリティと信頼性の観点から推奨されません。

DNAT (Destination Network Address Translation)

外部ネットワークから内部ネットワークへ通信する際に、宛先IPアドレス(通常はPublic IP)を内部のPrivate IPへ変換する技術です。Azureでは「インバウンド接続」に関連します。

AzureにおけるDNATの実装方式

  1. Azure Firewall

    • ファイアウォールのPublic IPへのアクセスを、バックエンドの特定のVMやサービスのPrivate IPとポートに転送します。
  2. Azure Load Balancer (Inbound NAT Rules)

    • Load BalancerのフロントエンドIPの特定ポートへのアクセスを、特定のバックエンドVMのポートに転送します(例: LBのポート50001へのSSHアクセスをVM1のポート22へ転送)。

Azure NAT Gateway の実装

Azure NAT Gatewayは、最も推奨されるアウトバウンド接続の方法です。

特徴

  • 完全マネージド: スケーリングや冗長性が自動管理されます。
  • ゾーン冗長: Availability Zonesに対応しています。
  • 固定IP: アウトバウンド通信の送信元IPを固定できます(ホワイトリスト登録に便利)。

構築手順の概要

  1. Public IP Prefix または Public IP Address の作成

    • Standard SKUのPublic IPを作成します。
  2. NAT Gateway リソースの作成

    • 作成したPublic IPを紐付けます。
    • アイドルタイムアウト設定などを調整します(デフォルト4分)。
  3. サブネットへの関連付け

    • VNet内の対象サブネット設定で、作成したNAT Gatewayを選択します。
    • これにより、そのサブネット内のリソース(VM, AKSノードなど)は自動的にNAT Gateway経由でインターネットに出るようになります。

実践的な構成例 (Bicep)

以下は、NAT Gatewayを作成し、サブネットに関連付けるBicepコードの例です。

// Public IP for NAT Gateway
resource natPublicIP 'Microsoft.Network/publicIPAddresses@2023-04-01' = {
name: 'pip-nat-gateway-prod'
location: resourceGroup().location
sku: {
name: 'Standard'
}
properties: {
publicIPAllocationMethod: 'Static'
}
}

// NAT Gateway
resource natGateway 'Microsoft.Network/natGateways@2023-04-01' = {
name: 'ng-prod-01'
location: resourceGroup().location
sku: {
name: 'Standard'
}
properties: {
publicIpAddresses: [
{
id: natPublicIP.id
}
]
idleTimeoutInMinutes: 4
}
}

// Virtual Network & Subnet Association
resource vnet 'Microsoft.Network/virtualNetworks@2023-04-01' = {
name: 'vnet-prod-01'
location: resourceGroup().location
properties: {
addressSpace: {
addressPrefixes: [
'10.0.0.0/16'
]
}
subnets: [
{
name: 'snet-app'
properties: {
addressPrefix: '10.0.1.0/24'
natGateway: {
id: natGateway.id
}
}
}
]
}
}

まとめ

  • Public IP / Private IP: 外部公開用と内部通信用。Standard SKUの利用が基本。
  • SNAT: 内部から外部への通信。Azure NAT Gateway の利用がベストプラクティス。
  • DNAT: 外部から内部への通信。Azure FirewallやLoad Balancerで制御。

適切なNAT構成を選択することで、SNATポート枯渇を防ぎ、セキュリティと可用性の高いネットワークを構築できます。