AWS

【AWS解説】インターネットゲートウェイとNATゲートウェイとは何か?違いをわかりやすく説明!

インターネットゲートウェイとNATゲートウェイの違い

インターネットゲートウェイとは?

インターネットゲートウェイとは、VPCが外部のネットワークと接続するために必要となるAWSのコンポーネントです。そもそも、VPC内のインスタンスというのは、このインターネットゲートウェイがなければ同じVPC内のインスタンスとしかやり取りすることができません。もちろん、インターネットにもつながりません。VPC内のインスタンスがインターネットに接続したり、オンプレのシステムと接続したりすることを可能にするゲートウェイが、インターネットゲートウェイなのです。

インターネットゲートウェイと直接やり取りできるのはパブリックサブネット内のインスタンスで、プライベートサブネット内のインスタンスはインターネットゲートウェイとは直接接続しません。

パブリックサブネットとインターネットゲートウェイとの接続

つまり、インターネットゲートウェイを理解するには、まずパブリックサブネットとプライベートサブネットへの理解が不可欠です。以下で詳しく見ていきましょう。

パブリックサブネットとプライベートサブネットの違い

パブリックサブネットとは?(外部ネットワークへの接続方法)

パブリックサブネットとは、インターネットやVPC外部のネットワークにアクセスすることのできるサブネットのことです。

しかし、VPCにインターネットゲートウェイをアタッチするだけでは、パブリックサブネットが外部ネットワークに接続することはできません。パブリックサブネットのルーティングテーブルに、デフォルトゲートウェイとしてインターネットゲートウェイを追加しなければいけません。

詳しく説明していきます。

パブリックサブネットのルーティングテーブルにインターネットゲートウェイを追加

まず、パブリックサブネットをもつVPCを作成すると、そのパブリックサブネットのルーティングテーブルに自動的に以下が追加されます。

10.0.0.0/16local
ルーティングテーブル

これの意味するところは、VPC内(10.0.0.0/16)インスタンスへの接続は、インターネットゲートウェイを介さない(local)で可能であるということです。

しかし、このままではVPC内への接続しかできません。そこで、ルーティングテーブルにいかを追加します。

10.0.0.0/16local
0.0.0.0/0igw
ルーティングテーブル

ここで、インターネットゲートウェイのIDをigwと設定しています。上記の意味するところは、全ての通信(0.0.0.0/0)は、インターネットゲートウェイへ向かう(igw)ということです。
ルーティングテーブルは上から順番に適用されるので、local向け以外の通信はインターネットゲートウェイに向かう設定になりました。これで、パブリックサブネットからインターネットへ接続することが可能になります。

このように、パブリックサブネットとは、ルーティングテーブルにデフォルトゲートウェイとしてインターネットゲートウェイを追加することで、インターネットに接続できるようになったサブネットのことです。

プライベートサブネットとは?

プライベートサブネットとは、パブリックサブネットの逆つまりインターネットに直接接続できないサブネットのことです。プライベートサブネット内のインスタンスには、同じVPC内のインスタンスからしかアクセスできません。

では、プライベートサブネット内のインスタンスがインターネットに接続したいときどのように接続すればいいのでしょうか。その時に使うのがNATゲートウェイです。

それでは、NATゲートウェイについて説明します。

NATゲートウェイとは?

NATゲートウェイとは、プライベートサブネット内のインスタンスがVPC外部ネットワークへ接続するために必要なコンポーネントです。プライベートサブネットは、直接インターネットゲートウェイに接続することはできません。その代わり、プライベートサブネット内のNATゲートウェイを経由し、NAT変換を行うことで、インターネットに接続することができるのです。

NATゲートウェイを用いたプライベートサブネットとインターネットゲートウェイとの接続

このときもやはり、プライベートサブネット内のインスタンスのデフォルトゲートウェイにはNATゲートウェイを設定する必要があります。

インターネットゲートウェイとNATゲートウェイの可用性の違い

ここでは、インターネットゲートウェイとNATゲートウェイの可用性の違いについて解説します。

前述したように、インターネットゲートウェイとはVPCにアタッチして使います。一つのAvailability Zone(AZ)がダウンしてもほかのAZではそのインターネットゲートウェイを利用することができます。つまり、インターネットゲートウェイはVPCに対して一つアタッチされていればVPC内の可用性は保たれます。

一方、NATゲートウェイとはAZにアタッチして使います。NATゲートウェイがアタッチされたあるAZがダウンしたとき、ほかのAZにもNATゲートウェイがアタッチされていなければNAT変換をすることができません。つまり、一つのAZに対して一つのNATゲートウェイがアタッチされていないと、VPC内の可用性は保たれません。

このように、インターネットゲートウェイとNATゲートウェイとでは、アタッチされる場所が違うことから障害に備える対応が異なってきます。

まとめ

今回は、インターネットゲートウェイとNATゲートウェイについて、使い方や可用性の観点から違いを説明してきました。簡単にまとめると以下の通りです。

インターネットゲートウェイとNATゲートウェイの違い

【インターネットゲートウェイ】
■VPC内のパブリックサブネットが、VPC外部ネットワークへ接続するためのコンポーネント
■VPCにアタッチして利用する
■一つVPCに対して一つのインターネットゲートウェイをアタッチする

【NATゲートウェイ】
■VPC内のプライベートサブネットが、VPC外部ネットワークへ接続するためのコンポーネント
■AZにアタッチして利用する
■一つのAZに対して一つのNATゲートウェイをアタッチする