Cloud NAT の使用

このページでは、Cloud NAT を構成する方法を説明します。Cloud NAT を設定する前に、Cloud NAT の概要をご覧ください。

前提条件

Cloud NAT を設定する前に、次の手順を行う必要があります。

IAM 権限を取得する

roles/compute.networkAdmin ロールにより、Cloud Router での NAT ゲートウェイの作成、NAT IP アドレスの予約と割り当て、トラフィックが NAT ゲートウェイによるネットワーク アドレス変換を使用する必要があるサブネットワーク(サブネット)の指定を行う権限を取得できます。

Google Cloud の設定

始める前に、Google Cloud で次の項目を設定します。

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Cloud SDK をインストールして初期化します。

このページの gcloud コマンドライン ツールの手順では、コマンドを発行する前にプロジェクト ID を設定済みであることを前提としています。

  1. プロジェクト ID は、次のコマンドで設定できます。

    gcloud config set project PROJECT_ID
    
  2. すでに設定されているプロジェクト ID を表示することもできます。

    gcloud config list --format='text(core.project)'
    

使用シナリオとサンプル コマンド

NAT の作成

シンプルな構成を作成する

この構成では、あるリージョンに NAT サービスを提供するために必要な外部 IP アドレスが自動的に割り振られます。そのリージョンのどのサブネットにも外部 IP アドレスを持たない VM インスタンスは、NAT 経由でインターネットにアクセスできます。また、すべてのログタイプに対してロギングをオンにします。

自動割り振りを使用すると、Google Cloud はプロジェクト内の IP アドレスを自動的に予約します。これらのアドレスは、プロジェクトの静的 IP アドレス割り振りを減らします。

ゲートウェイのエンドポイントに依存しないマッピングを有効または無効にできます。設定については、エンドポイント マッピングの設定をご覧ください。

Console

  1. Google Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. [開始] または [NAT ゲートウェイを作成] をクリックします。

  3. [ゲートウェイ名] を入力します。

  4. [VPC ネットワーク] を選択します。

  5. NAT ゲートウェイの [リージョン] を設定します。

  6. リージョンの Cloud Router を選択または作成します。

  7. [ロギング、最小ポート、タイムアウト] をクリックして対象セクションを開きます。

  8. [Stackdriver Logging] で [変換とエラー] を選択します。これにより、すべてのログが Cloud Logging に送信されます。

  9. [作成] をクリックします。

gcloud

gcloud compute routers nats create NAT_CONFIG \
    --router=NAT_ROUTER \
    --auto-allocate-nat-external-ips \
    --nat-all-subnet-ip-ranges \
    --enable-logging

次のように置き換えます。

  • NAT_CONFIG: NAT 構成の名前
  • NAT_ROUTER: Cloud Router の名前

Terraform

Terraform モジュールを使用して、NAT ゲートウェイを持つ Cloud Router を作成できます。

module "cloud_router" {
  source  = "terraform-google-modules/cloud-router/google"
  version = "~> 0.4"
  project = var.project_id # Replace this with your project ID in quotes
  name    = "my-cloud-router"
  network = "default"
  region  = "us-central1"

  nats = [{
    name = "my-nat-gateway"
  }]
}

作成される NAT ゲートウェイは、次のデフォルト値を使用します。

enable_endpoint_independent_mapping = true
icmp_idle_timeout_sec               = 30
min_ports_per_vm                    = 0
nat_ip_allocate_option              = "AUTO_ONLY"
source_subnetwork_ip_ranges_to_nat  = "ALL_SUBNETWORKS_ALL_IP_RANGES"
tcp_established_idle_timeout_sec    = 1200
tcp_transitory_idle_timeout_sec     = 30
udp_idle_timeout_sec                = 30
log_config {
    enable = true
    filter = "ALL"
}

NAT の IP アドレスを指定する

各 IP アドレスは、予約済みの静的 IP アドレス リソースの名前です。

Console

  1. Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. [開始] または [NAT ゲートウェイを作成] をクリックします。

  3. [ゲートウェイ名] を入力します。

  4. [VPC ネットワーク] を選択します。

  5. NAT ゲートウェイの [リージョン] を設定します。

  6. リージョンの Cloud Router を選択または作成します。

  7. [NAT IP アドレス] を [手動] に設定します。

  8. NAT に使用する予約された静的外部 IP アドレスを選択または作成します。

  9. 追加の IP アドレスを指定する場合は、[IP アドレスの追加] をクリックし、予約した静的外部 IP アドレスを選択または作成します。

  10. [作成] をクリックします。

gcloud

gcloud compute routers nats create NAT_CONFIG \
    --router=NAT_ROUTER \
    --nat-all-subnet-ip-ranges \
    --nat-external-ip-pool=IP_ADDRESS1,IP_ADDRESS2

次のように置き換えます。

  • NAT_CONFIG: NAT 構成の名前
  • NAT_ROUTER: Cloud Router の名前
  • IP_ADDRESS1: NAT に使用する静的外部 IP アドレス。
  • IP_ADDRESS2: NAT に使用する別の静的外部 IP アドレス

NAT のサブネット範囲を指定する

デフォルトでは、特定の VPC ネットワークのリージョン内で、すべてのサブネットのすべてのプライマリ IP 範囲とセカンダリ IP 範囲に対して NAT が機能します。NAT を使用できるプライマリおよびセカンダリ サブネット範囲を制限できます。

Console

  1. Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. [開始] または [NAT ゲートウェイを作成] をクリックします。

  3. [ゲートウェイ名] を入力します。

  4. [VPC ネットワーク] を選択します。

  5. NAT ゲートウェイの [リージョン] を設定します。

  6. リージョンの Cloud Router を選択または作成します。

  7. [NAT マッピング] で、[ソース] を [カスタム] に設定します。

  8. サブネットを選択します。

  9. [IP 範囲] のプルダウン リストで、含めるサブネット IP 範囲を選択します。

  10. [OK] をクリックします。

  11. 追加の範囲を指定する場合は、[サブネットと IP 範囲の追加] をクリックします。

  12. [作成] をクリックします。

gcloud

gcloud compute routers nats create NAT_CONFIG \
    --router=NAT_ROUTER \
    --auto-allocate-nat-external-ips \
    --nat-custom-subnet-ip-ranges=SUBNETS

次のように置き換えます。

  • NAT_CONFIG: NAT 構成の名前
  • NAT_ROUTER: Cloud Router の名前
  • SUBNETS: サブネットのカンマ区切りのリスト

NAT の VM ごとに異なるデフォルトの最小ポート数を指定する

Console

  1. Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. [開始] または [NAT ゲートウェイを作成] をクリックします。

  3. [ゲートウェイ名] を入力します。

  4. [VPC ネットワーク] を選択します。

  5. NAT ゲートウェイの [リージョン] を設定します。

  6. リージョンの Cloud Router を選択または作成します。

  7. [ロギング、最小ポート数、タイムアウト] をクリックします。

  8. [VM インスタンスあたりの最小ポート数] に異なる値に設定します。

  9. [作成] をクリックします。

gcloud

gcloud compute routers nats create NAT_CONFIG \
    --router=NAT_ROUTER \
    --auto-allocate-nat-external-ips \
    --min-ports-per-vm=128

次のように置き換えます。

  • NAT_CONFIG: NAT 構成の名前
  • NAT_ROUTER: Cloud Router の名前

詳細については、ポートと接続をご覧ください。

NAT に異なるタイムアウトを指定する

Console

  1. Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. [開始] または [NAT ゲートウェイを作成] をクリックします。

  3. [ゲートウェイ名] を入力します。

  4. [VPC ネットワーク] を選択します。

  5. NAT ゲートウェイの [リージョン] を設定します。

  6. リージョンの Cloud Router を選択または作成します。

  7. [ロギング、最小ポート数、タイムアウト] をクリックします。

  8. 必要に応じてタイムアウトを変更します。

  9. [作成] をクリックします。

gcloud

gcloud compute routers nats create NAT_CONFIG \
    --router=NAT_ROUTER \
    --auto-allocate-nat-external-ips \
    --nat-custom-subnet-ip-ranges=SUBNETS \
    --udp-idle-timeout=60s \
    --icmp-idle-timeout=60s \
    --tcp-established-idle-timeout=60s \
    --tcp-transitory-idle-timeout=60s

次のように置き換えます。

  • NAT_CONFIG: NAT 構成の名前
  • NAT_ROUTER: Cloud Router の名前
  • SUBNETS: サブネットのカンマ区切りのリスト

NAT の更新

NAT に関連付けられたサブネットと IP アドレス リソースを変更する

Console

  1. Google Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. NAT ゲートウェイをクリックします。

  3. [編集] をクリックします。

  4. [NAT マッピング] で、[ソース] を [カスタム] に設定します。

  5. サブネットを選択します。

  6. [IP 範囲] のプルダウン リストで、含めるサブネット IP 範囲を選択します。

  7. 追加の範囲を指定する場合は、[サブネットと IP 範囲の追加] をクリックします。

  8. [NAT IP アドレス] プルダウン リストをクリックし、[自動] または [手動] を選択します。

  9. [手動] を選択した場合は、外部 IP アドレスを指定します。

  10. 高可用性のために手動 IP アドレスを使用する場合は、[IP アドレスの追加] をクリックし、2 つ目のアドレスを追加します。

  11. [保存] をクリックします。

gcloud

gcloud compute routers nats update NAT_CONFIG \
    --router=NAT_ROUTER \
    --nat-external-ip-pool=IP_ADDRESS2,IP_ADDRESS3 \
    --nat-custom-subnet-ip-ranges=SUBNETS:range1

次のように置き換えます。

  • NAT_CONFIG: NAT 構成の名前
  • NAT_ROUTER: Cloud Router の名前
  • IP_ADDRESS2: 手動外部 IP アドレス
  • IP_ADDRESS3: 別の手動外部 IP アドレス
  • SUBNETS: サブネットのカンマ区切りのリスト

NAT に関連付けられた外部 IP アドレスの変更

特定のゲートウェイの外部 IP アドレスのリストを変更できます。その場合、Google Cloud は古いアドレスを削除し、新しいアドレスを追加します。古い IP アドレスに対する既存の接続は、直ちに終了します。これらの IP アドレスで新しい接続を禁止し、既存の接続を継続できるようにする場合は、NAT に関連付けられた外部 IP アドレスをドレインするをご覧ください。

Console

  1. Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. NAT ゲートウェイをクリックします。

  3. [編集] をクリックします。

  4. [NAT IP アドレス] プルダウン リストをクリックし、[自動] または [手動] を選択します。

  5. [手動] を選択した場合は、外部 IP アドレスを指定します。

  6. 高可用性のために、[IP アドレスの追加] をクリックし、2 つ目のアドレスを追加します。

  7. [保存] をクリックします。

gcloud

gcloud compute routers nats update NAT_CONFIG \
    --router=NAT_ROUTER \
    --nat-external-ip-pool=IP_ADDRESS2,IP_ADDRESS3

次のように置き換えます。

  • NAT_CONFIG: NAT 構成の名前
  • NAT_ROUTER: Cloud Router の名前
  • IP_ADDRESS2: 手動外部 IP アドレス
  • IP_ADDRESS3: 別の手動外部 IP アドレス

NAT に関連付けられた外部 IP アドレスをドレインする

手動で構成した IP アドレスを削除する前に、そのアドレスをドレインすることで、既存の接続の中断を防ぐことができます。IP アドレスをドレインすると、既存の接続がすべて期限切れになるまで続行できます。ログを表示して、既存の接続のステータスを確認できます。

ドレインされた IP アドレスで新しい接続は許可されません。ただし、その IP アドレスは NAT 構成に関連付けられたままになります。

NAT 構成には少なくとも 1 つの有効なアドレスが必要です。つまり、構成内のすべての IP アドレスをドレインすることはできません。

NAT IP アドレスの状態を確認するには、NAT ステータスを表示します。

Console

  1. Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. NAT ゲートウェイをクリックします。

  3. [編集] をクリックします。

  4. [NAT IP アドレス] で、IP アドレスの横にある [IP ドレイン] の値を [オン] に設定します。

  5. [保存] をクリックします。

gcloud

アドレスをドレインするには、同じコマンドでアドレスをアクティブ プールからドレインプールに移動する必要があります。1 つのコマンドでドレインプールに追加せずにアクティブ プールから削除すると、IP アドレスはサービスから削除され、既存の接続はすぐに終了します。

IP アドレスをドレインプールからアクティブ プールに移動すると、IP アドレスのドレインは取り消されます。両方のプールから NAT IP アドレスを削除すると、NAT 構成から IP アドレスの接続が切断されます。

このコマンドでは、NAT 構成の他のフィールドは変更されません。

gcloud compute routers nats update NAT_CONFIG \
    --router=NAT_ROUTER \
    --nat-external-ip-pool=IP_ADDRESS3 \
    --nat-external-drain-ip-pool=IP_ADDRESS2

ここで

  • --nat-external-ip-pool=IP_ADDRESS3: アクティブ プールを更新して、IP_ADDRESS2 を除外します。
  • --nat-external-drain-ip-pool=IP_ADDRESS2: IP_ADDRESS2 をドレインプールへ追加します。

次のように置き換えます。

  • NAT_CONFIG: NAT 構成の名前
  • NAT_ROUTER: Cloud Router の名前
  • IP_ADDRESS3: IP アドレス
  • IP_ADDRESS2: 別の IP アドレス

NAT に関連付けられた VM ごとに割り当てられるデフォルトの最小ポート数を変更する

Console

  1. Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. NAT ゲートウェイをクリックします。

  3. [編集] をクリックします。

  4. [ロギング、最小ポート数、タイムアウト] をクリックします。

  5. [VM インスタンスあたりの最小ポート数] フィールドを変更します。

  6. [保存] をクリックします。

gcloud

このコマンドでは、NAT 構成の他のフィールドは変更されません。

gcloud compute routers nats update NAT_CONFIG \
    --router=NAT_ROUTER \
    --min-ports-per-vm=128

次のように置き換えます。

  • NAT_CONFIG: NAT 構成の名前
  • NAT_ROUTER: Cloud Router の名前

詳細については、ポートと接続をご覧ください。

NAT に関連付けられた接続タイムアウトの変更

Console

  1. Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. NAT ゲートウェイをクリックします。

  3. [編集] をクリックします。

  4. [ロギング、最小ポート数、タイムアウト] をクリックします。

  5. タイムアウトを必要な値に修正します。

  6. [保存] をクリックします。

gcloud

このコマンドでは、NAT 構成の他のフィールドは変更されません。

gcloud compute routers nats update NAT_CONFIG \
    --router=NAT_ROUTER \
    --udp-idle-timeout=60s \
    --icmp-idle-timeout=60s \
    --tcp-established-idle-timeout=60s \
    --tcp-transitory-idle-timeout=60s

次のように置き換えます。

  • NAT_CONFIG: NAT 構成の名前
  • NAT_ROUTER: Cloud Router の名前

関連付けられた NAT の接続タイムアウトをデフォルト値にリセットする

Console

  1. Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. NAT ゲートウェイをクリックします。

  3. [編集] をクリックします。

  4. [ロギング、最小ポート数、タイムアウト] をクリックします。

  5. リセットするユーザー定義の値をすべて削除します。

  6. [保存] をクリックします。

削除された値はデフォルト値にリセットされます。

gcloud

このコマンドでは、NAT 構成の他のフィールドは変更されません。

gcloud compute routers nats update NAT_CONFIG \
    --router=NAT_ROUTER \
    --clear-udp-idle-timeout \
    --clear-icmp-idle-timeout \
    --clear-tcp-established-idle-timeout \
    --clear-tcp-transitory-idle-timeout

次のように置き換えます。

  • NAT_CONFIG: NAT ゲートウェイの名前
  • NAT_ROUTER: Cloud Router の名前

エンドポイント マッピングの設定

ゲートウェイのエンドポイントに依存しないマッピングを有効または無効にできます。デフォルトでは無効になっています。エンドポイントに依存しないマッピングを有効から無効(または無効から有効)に切り替えても、既存の接続は中断されません。

Console

  1. Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. NAT ゲートウェイをクリックします。

  3. [編集] をクリックします。

  4. [詳細構成] をクリックします。

  5. エンドポイントに依存しないマッピングを有効にするには、[エンドポイントに依存しないマッピングの有効化] チェックボックスをオンにします。エンドポイントに依存しないマッピングを無効にするには、チェックボックスをオフにします。

  6. [保存] をクリックします。

gcloud

既存のゲートウェイの更新

gcloud compute routers nats update NAT_CONFIG \
    --router=NAT_ROUTER \
    [--enable-endpoint-independent-mapping | --no-enable-endpoint-independent-mapping]

次のように置き換えます。

  • NAT_CONFIG: NAT 構成の名前
  • NAT_ROUTER: Cloud Router の名前

ロギングを構成する

既存のゲートウェイのロギングを追加(有効化)、変更、削除する方法については、ロギングの構成をご覧ください。

NAT の削除

これにより、Cloud Router から NAT 構成が削除されます。ルーター自体は削除されません。

Console

  1. Google Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. 削除するゲートウェイ構成の横にあるチェックボックスをオンにします。

  3. メニュー)で、[削除] をクリックします。

gcloud

gcloud compute routers nats delete NAT_CONFIG --router=NAT_ROUTER

次のように置き換えます。

  • NAT_CONFIG: NAT 構成の名前
  • NAT_ROUTER: Cloud Router の名前

NAT 構成、IP:port-ranges、ステータスを表示する

Console

  1. Google Cloud Console で、[Cloud NAT] ページに移動します。

    [Cloud NAT] ページに移動

  2. NAT ゲートウェイの詳細、マッピング情報、構成の詳細を表示するには、NAT ゲートウェイの名前をクリックします。

  3. NAT ステータスを表示するには、NAT ゲートウェイの [ステータス] 列を調べます。

gcloud

gcloud compute routers nats describe NAT_CONFIG --router=NAT_ROUTER

次のように置き換えます。

  • NAT_CONFIG: NAT 構成の名前
  • NAT_ROUTER: Cloud Router の名前
gcloud compute routers get-nat-mapping-info

既存の routers get-status コマンドで NAT ステータスが表示されます。

gcloud compute routers get-status

割り当てと上限

特定の割り当てまたは上限はリソースごとに計算されます。割り当てと上限は、プロジェクトごと、ネットワークごと、リージョンごと、またはその他のリソースごとに適用されます。詳細については、割り当てページをご覧ください。

設定例

次の例は、Google Cloud で Cloud NAT をテストする方法を示しています。

次のステップ