ちょっと話題の記事

[アップデート] Internet Gatewayに依存しないNAT Gateway(Private NAT Gateway)が作成できる様になりました

2021.06.11

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

しばたです。

今朝AWSから「AWS Removes NAT Gateway’s Dependence on Internet Gateway for Private Communications」という更新がアナウンスされました。

初見ではわかりくい内容ですが簡単に解説していきます。

どういうこと?

従来のNAT GatewayはPrivate subnetからのソースNATを行いつつEIP(グローバルIPアドレス)を使ってInternet Gatewayからインターネットアクセスを行うものでした。

簡単な例を出すと下図の様なPublic Subnet、Private Subnetがある構成で、

  • Public subnetにNAT Gatewayを配備
    • NAT Gatewayには必ずEIPが紐づく
  • Private subnetのデフォルトルートをNAT Gatewayに向ける
  • NAT GatewayはソースNATをしつつEIPからインターネットアクセスを行う

といった使われ方をしてきました。

今回の更新では「NAT GatewayからInternet Gatewayへの依存が取り除かれた」ということで、EIPを紐づけないソースNATを行うためだけのNAT Gatewayが作れる様になりました。

Public NAT Gateway と Private NAT Gateway

細かい話はドキュメントに書いてあるのでそちらを参照してほしいのですが、従来のNAT GatewayをPublic NAT Gateway、今回のEIPを紐づけないものをPrivate NAT Gatewayと分けて呼称する様になっています。

Private NAT Gateway のシナリオ

Private NAT Gatewayは純粋にソースNATをしたいときに使えるのでその用途は様々ですが、ドキュメントで紹介されているシナリオでは

Scenario: Allow access to your network from allow-listed IP addresses

Instead of assigning each instance a separate IP address from the IP address range that is allowed to access your on-premises network, you can create a subnet in your VPC with the allowed IP address range, create a private NAT gateway in the subnet, and route the traffic from your VPC destined for your on-premises network through the NAT gateway.

と、オンプレ環境へ対する通信を厳密にするケースが紹介されています。

簡単な例を出すと、例えばDirect Connectを経由してオンプレ環境とAWS環境を接続している(そしてオンプレ経由でないとインターネットアクセスできない)場合、従来であればオンプレ環境と疎通可能なサブネットすべてに対して各種ルーティング設定が必要でした。

  • オンプレ環境へアクセス可能なサブネットすべてにVGWへのルーティングが必要
  • Direct Connectに関連するルーティング設定も全サブネットを含める必要がある

これに対しPrivate NAT Gatewayを使うとオンプレ環境へ出ていく通信を集約することができます。

これによりDirect Connectに関連するルーティング設定はPrivate NAT Gatewayのあるサブネットに対してのみで済みますし、オンプレ環境上での通信制御はPrivate NAT GatewayのIPアドレスに対してのみ行うだけで済むことになります。

作ってみた

今回このPrivate NAT Gatewayを実際に試す良い環境を用意できなかったので単純にPrivate NAT Gatewayを作るところまで試してみます。
たぶん他の社員が良いユースケースで試してくれると思います。

マネジメントコンソールからNAT Gatewayを作成すると従来の設定の他に「Connectivity type」欄が増えており、ここでPublicPrivateを選ぶ形になります。

Publicの場合は従来通り紐づけるEIPを指定する必要があります。
Privateに切り替えると下図の様にEIPの指定欄が消え「この場合インターネットアクセスは出来ない」旨の警告が表示されます。

今回はこのままPrivateで作成します。
しばらく待って作成完了したPrivate NAT Gatewayはこんな感じです。

Connectivity type欄が増えた以外は何も変わらず単純に「EIPが設定されていない」NAT Gatewayとなります。

あとはこのPrivate NAT Gatewayをルートテーブル設定でよしなに扱ってください。

最後に

簡単ですが以上となります。

内容自体は非常にシンプルなものですがこの更新によりネットワーク設計の幅は大きく広がった印象を受けます。
今後さまざまなユースケースが増えていくと嬉しいですね。