[アップデート] NAT ゲートウェイに複数の IP アドレスを関連付け出来るようになりました

2023.02.02

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

本日のアップデートで NAT ゲートウェイに複数の IP アドレスを関連付け出来るようになりました。

追加の IP アドレスを含めると最大 8 つまで IP アドレスを NAT ゲートウェイに設定することが出来ます。
Public な NAT ゲートウェイであれば Elastic IP アドレスで、Private な NAT ゲートウェイであればプライベート IPv4 アドレスを指しています。

従来は NAT ゲートウェイあたりの同時接続数が 55,000 が上限でした。
この閾値を超えた場合、宛先への新しい接続は失敗し ErrorPortAllocation メトリクスが記録されていました。

従来は解決方法として以下の方法がありました。

  • AZ でクライアントを分散する
  • メトリクスを監視してアイドル状態の接続を閉じるようにアプリケーション側で対応
  • クライアントが作成出来る接続数を制限する
  • NAT ゲートウェイを通さずに VPC エンドポイントで良いものはそちらを利用する

今回、複数の IP アドレスを追加することで 1 つの IP アドレスあたり 55,000 まで処理出来ることになり、最大の 8 つまで設定すると 440,000 が 1 つの NAT ゲートウェイで接続出来るようになります。

設定方法

パブリック NAT ゲートウェイ

設定方法ですが、本日時点でマネジメントコンソールからでは NAT ゲートウェイの新規作成時には追加の IP アドレスを設定することが出来ません。

NAT ゲートウェイの作成後に「セカンダリ IPv4 アドレスの関連付けを編集」メニューから追加する必要があります。

セカンダリ IPv4 アドレスという形で追加の IP アドレスを設定します。
前提として NAT ゲートウェイのステータスが Available である必要があります。

各 IP アドレスごとに自動割り当てかカスタムか選択が出来ます。
カスタムの場合は NAT ゲートウェイに割り当てるセカンダリプライベート IPv4 アドレスを明示的に定義します。

マネジメントコンソールからも設定したセカンダリ IPv4 アドレスが確認可能です。

NAT ゲートウェイやルートテーブルなどは特に追加の設定はなく、利用者側でアウトバウンド時にどの IP アドレスを使うのかというのはコントロールできなさそうです。

プライベート NAT ゲートウェイ

プライベート NAT ゲートウェイの場合も同様にセカンダリ IPv4 アドレスとしてプライベートアドレスを追加することが出来ます。
ここでは自動割り当ての数を入力するか、あるいはカスタムで明示的にプライベート IP アドレスを指定します。

解除方法

関連付けと同じ方法で NAT ゲートウェイに割り当て済みのセカンダリ IPv4 アドレスを解除することが出来ます。

「接続ドレイン期間」で、接続中の場合に IP アドレスを強制的に開放するまでの待機時間を秒単位で入力することが出来ます。
省略した場合はデフォルトの 350 秒が設定されます。

Elastic IP アドレスの上限緩和

プライベート NAT ゲートウェイの場合は気にする必要はないですが、パブリック NAT ゲートウェイの場合は最初から 8 つまで設定出来るわけではなく、NAT ゲートウェイあたり Elastic IP アドレスは 2 つまでと制限されています。

上限を緩和せずに関連付けしようとした場合は次のようになります。

こちらは上限緩和が必要です。

本日時点では次のドキュメントより AWS Support Center から上限緩和をリクエストする必要があるとの記載があります。

Name Default Adjustable
Elastic IP addresses per public NAT gateway 2 Yes. To request a quota increase up to 8, contact the AWS Support Center as described in AWS service quotas in the AWS General Reference.

サポートセンターへのリクエスト方法はアカウント管理者へご確認ください。

ENI 上の関連付け状態

セカンダリ IPv4 アドレスはプライマリと同一の ENI に関連付けされています。
プライベートの場合は ENI コンソールから、パブリックの場合は Elastic IP コンソールからも確認が出来ます。

プライベート

ENI のコンソールから確認が可能です。

パブリック

ENI のコンソールからはセカンダリのプライベート IP アドレスのみ確認が出来ます。

Elastic IP コンソールから対象 ENI との関連付けが確認出来ました。

価格

本機能の利用にあたって追加の費用が発生するという旨はドキュメント上記述はありませんでした。
ドキュメントどおりであれば従来どおり NAT ゲートウェイの起動時間と転送データ量と考えて良さそうです。

When you provision a NAT gateway, you are charged for each hour that your NAT gateway is available and each Gigabyte of data that it processes. For more information

ただ、IP アドレスの追加によって NAT ゲートウェイが 2 台分請求されたよ、みたいなのはつらいので、セカンダリ IPv4 アドレスを追加した状態で少し観察して使用量の結果をこちらに追記したいと思います。

さいごに

本日は NAT ゲートウェイに複数の IP アドレスを関連付け出来るようになったので設定方法や制限などを確認してみました。

冒頭紹介したナレッジセンターのような問題が生じた際の新たな解決方法のひとつになりそうです。
上限緩和についてはそのうち Service Quotas でもサポートされると嬉しいですね。