【ITニュース解説】How EC2 Instance in Private Subnet Connects to the Internet in AWS
2025年09月19日に「Dev.to」が公開したITニュース「How EC2 Instance in Private Subnet Connects to the Internet in AWS」について初心者にもわかりやすく解説しています。
ITニュース概要
AWSでプライベートサブネットのEC2インスタンスはインターネットに直接繋がらないが、NAT Gatewayを使えば安全にアクセス可能だ。NAT Gatewayはパブリックサブネットに設置し、EC2のプライベートIPを自身のパブリックIPに変換して通信を仲介する。これにより、外部から見られずに必要なインターネット接続ができる。
ITニュース解説
AWS(Amazon Web Services)で、皆さんが作成した仮想サーバーであるEC2インスタンスをプライベートな場所に配置した場合、そのインスタンスは通常、インターネットに直接アクセスできない。しかし、時にはインターネット上の特定のサービスと通信する必要があるが、同時に外部からのアクセスは受け付けたくない、という状況がある。このような場合に役立つのが「NAT Gateway」というサービスである。
NAT Gatewayは、プライベートな環境にあるEC2インスタンスなどが、安全にインターネットにアクセスできるようにする仕組みである。外部からはインスタンスが見えないようにしながら、インスタンスが必要な情報をインターネットから取得したり、データを送信したりすることを可能にする。しかし、この仕組みがどのように動作し、トラフィックが実際にどのように流れるのかについて、多くの人が戸惑うことがあるため、その詳細な流れを追って解説する。
まず、NAT Gatewayをどのように作成するのかから説明する。NAT Gatewayを作成する上で最も重要なことは、それが必ず「パブリックサブネット」内に作成されなければならない、という点である。パブリックサブネットとは、そのルーティングテーブルに「インターネットゲートウェイ(IGW)」というインターネットへの出口が設定されているサブネットのことである。インターネットゲートウェイがなければ、パブリックサブネット自体がインターネットに接続できないため、NAT Gatewayもインターネットへ通信を転送できない。
NAT Gatewayをパブリックサブネット内に作成すると、AWSは自動的に「Elastic Network Interface(ENI)」と呼ばれる仮想ネットワークインターフェースをプロビジョニングする。このENIには、プライベートIPアドレスとパブリックIPアドレスの両方が割り当てられる。プライベートIPアドレスは、NAT Gatewayが作成されたパブリックサブネットのIPアドレス範囲から取得され、これはEC2インスタンスがIPアドレスを受け取る仕組みと非常によく似ている。NAT Gatewayが作成されると、それを特定のルーティングテーブルにリンクさせることができる。このルーティングテーブルを使用するサブネットは、NAT Gatewayを通じてインターネットにアクセスする設定となるため、実質的に「プライベートサブネット」として機能する。
次に、プライベートサブネット内のEC2インスタンスがNAT Gatewayを経由してインターネットに接続する際の具体的なトラフィックの流れを見ていく。例えば、プライベートなEC2インスタンスがGoogleのウェブサイトにアクセスしようとする場合、以下のような手順で通信が行われる。
まず、EC2インスタンスから通信が出発する。この際、最初に通過する必要があるのは、インスタンスに設定されている「セキュリティグループ」である。セキュリティグループは、インスタンスへの通信を許可するかどうかを制御する仮想的な防火壁であり、EC2インスタンスからインターネットへの出力(アウトバウンド)通信が許可されている必要がある。
セキュリティグループを通過した後、トラフィックはプライベートサブネットに設定されている「ネットワークアクセスコントロールリスト(NACL)」を通過する必要がある。NACLはサブネットレベルで通信を制御するもう一つの防火壁であり、セキュリティグループと同様に、インターネットへの出力トラフィック(0.0.0.0/0、つまりすべてのIPアドレスへの通信)が許可されている必要がある。
これらのセキュリティチェックを通過した後、インスタンスは目的のGoogleのウェブサイトがVPC(Virtual Private Cloud、AWS上の仮想ネットワーク)の外部にあると判断する。そのため、プライベートサブネットに設定されている「ルーティングテーブル」を参照し、インターネットへの経路を探す。このルーティングテーブルには、インターネット宛てのすべてのトラフィック(0.0.0.0/0)をNAT Gatewayへ転送するように設定されている必要がある。
これらの条件が満たされると、トラフィックはNAT Gatewayに到達する。NAT Gatewayはここで重要な役割を果たす。EC2インスタンスのプライベートIPアドレスを、自分自身に割り当てられているパブリックIPアドレスに変換(Network Address Translation, NAT)する。これにより、インターネット側からはEC2インスタンスの実際のプライベートIPアドレスは見えず、NAT GatewayのパブリックIPアドレスからの通信として認識されるため、プライバシーが保護される。
IPアドレス変換を終えたトラフィックは、インターネットへ向かう。しかし、NAT Gateway自体がパブリックサブネット内に存在するため、ここでも追加のチェックが必要となる。トラフィックは、まずパブリックサブネットのNACLを通過し、インターネットへの出力が許可されていることを確認される。次に、パブリックサブネットのルーティングテーブルを参照し、インターネットへのトラフィック(0.0.0.0/0)が「インターネットゲートウェイ」へ転送されるように設定されていることを確認する。
これらの全てのチェックとルーティングを通過した後、リクエストは最終的にインターネットゲートウェイに到達し、そこからインターネットへと出ていくことになる。
ここで理解しておくべき重要な点は、NAT Gatewayが機能するためには、それが配置されているパブリックサブネットのNACLとルーティングテーブルが適切に設定されている必要があるということだ。もしこれらの設定に変更が加えられた場合、それはパブリックサブネット内のリソースだけでなく、NAT Gatewayを介してインターネットに接続しようとする全てのプライベートサブネット内のリソースのインターネットアクセスに影響を与える可能性がある。このように、NAT GatewayはプライベートなEC2インスタンスが安全にインターネットと通信するための重要な役割を担っており、そのトラフィックの流れは複数のセキュリティ層とルーティング経路を通過して実現されるのである。