AWS VPC周りの設定を自分でやってみる(Part.2)— プライベートサブネットと NAT ゲートウェイの設定手順

2026年6月23日

はじめに

「プライベートサブネットに置いた EC2 からインターネットに接続するにはどうすればよいか?」——前回(Part.1)では VPC・サブネット・インターネットゲートウェイを手動構築し、パブリックサブネット上の EC2 への SSH 接続を確認しました。しかしプライベートサブネットの EC2 は外部から直接アクセスできない反面、OS のアップデートなどでインターネットへの発信が必要になる場面があります。

本記事では NAT ゲートウェイを使ってその問題を解決する手順を解説します。パブリック IP を持たないプライベート EC2 がどのようにしてインターネットと通信するのか、実際に操作しながら理解できます。同じ構成を試してみたい方の参考になれば幸いです。

ネットワーク構成のおさらい

今回完成させるネットワーク構成は下図のとおりです。Part.1 で作成した VPC にプライベートサブネット向けの設定を追加します。

VPC 全体構成図:パブリック・プライベートサブネットと NAT ゲートウェイの配置
  • パブリックサブネット(my-new-gear-1a-public):10.0.10.0/24 / AZ: ap-northeast-1a
  • プライベートサブネット(my-new-gear-1c-private):10.0.20.0/24 / AZ: ap-northeast-1c
  • 今回追加:プライベートサブネット用セキュリティグループ・EC2・NATゲートウェイ・ルートテーブルの設定

プライベートサブネット環境の構築手順

1. プライベートサブネット用セキュリティグループを作成する

課題:プライベートサブネットへの通信は、パブリックサブネットの EC2 からのみに限定したい。
解決策:ソースに IP アドレスではなくパブリックサブネットのセキュリティグループ ID を指定することで、許可する通信元を絞り込む。

EC2 コンソールのセキュリティグループメニューから新規作成します。インバウンドルールには次の2つを設定し、ソースにはパブリックサブネット用のセキュリティグループを指定します。

  • タイプ:全てのICMP – IPv4(Ping の確認用)
  • タイプ:SSH(踏み台経由のアクセス用)
プライベートサブネット用セキュリティグループの作成画面:ソースにパブリックSGを指定

2. プライベートサブネットに EC2 を起動する

EC2 の起動ウィザードで、VPC は今回作成したものを選択し、サブネットはプライベートサブネットを指定します。セキュリティグループは手順1で作成したものを割り当てます。

プライベートサブネットではパブリック IP が付与されないため、自分の PC から直接 SSH 接続することはできません。

プライベートサブネット上で起動した EC2 の詳細画面:パブリック IP が未割り当て

3. パブリック EC2 からプライベート EC2 への Ping・SSH 接続を確認する

パブリックサブネットの EC2(踏み台)から、プライベートサブネットの EC2 へ Ping を実行します。セキュリティグループが正しく設定されていれば、問題なく応答が返ってきます。

パブリック EC2 からプライベート EC2 への Ping 確認:正常に応答が返っている

SSH でアクセスするには、プライベート EC2 の秘密鍵をパブリック EC2 へ転送する必要があります。WinSCP などの SCP クライアントを使うと手軽に送れます。秘密鍵を転送後、踏み台経由で SSH 接続できることを確認してください。

ここで ping 8.8.8.8 を実行すると、応答がないことがわかります。プライベートサブネットにはまだインターネットへの経路がないためです。

プライベート EC2 から ping 8.8.8.8 が失敗している:NAT ゲートウェイ未設定のため

4. NAT ゲートウェイを作成する

課題:プライベートサブネットの EC2 はパブリック IP を持たないため、そのままではインターネットへ発信できない。
解決策:パブリックサブネットに NAT ゲートウェイを配置し、プライベート EC2 の発信トラフィックを代理でルーティングする。

VPC コンソールの「NAT ゲートウェイ」メニューから作成します。

VPC コンソールの NAT ゲートウェイ一覧画面

設定のポイントは2つです。

  • サブネット:インターネットゲートウェイと接続されたパブリックサブネットを必ず選択する(プライベートサブネットに置くと機能しない)
  • Elastic IP:NAT ゲートウェイが外部通信に使う固定パブリック IP。手持ちがなければ「Elastic IP を割り当て」から作成する
NAT ゲートウェイ作成画面:パブリックサブネットと Elastic IP を設定する

設定後「NAT ゲートウェイを作成」をクリックします。Available 状態になるまで数分かかります。

5. プライベートサブネットのルートテーブルに NAT ゲートウェイへのルートを追加する

NAT ゲートウェイを作成しただけではプライベート EC2 のトラフィックは届きません。プライベートサブネット用のルートテーブルに「VPC 外向きの通信を NAT ゲートウェイへ転送する」ルートを追加します。

現在のプライベートサブネット用ルートテーブルはこの状態です。

プライベートサブネット用ルートテーブル:VPC 内通信のみが設定されている状態

「ルートを編集」から 0.0.0.0/0 の宛先に NAT ゲートウェイを指定します。

ルートテーブル編集画面:0.0.0.0/0 の宛先に NAT ゲートウェイを追加

保存後のルートテーブルは次のようになります。

ルートテーブル更新後:VPC 内通信と NAT ゲートウェイへのルートが追加された状態

動作確認:プライベート EC2 からインターネット接続を確認する

再度、踏み台経由でプライベート EC2 に SSH 接続し、ping 8.8.8.8 を実行します。今度は正常に応答が返り、インターネット接続できていることを確認できました。

ping 8.8.8.8 成功:プライベート EC2 から NAT ゲートウェイ経由でインターネット接続できている

プライベートサブネットなのに外部通信して大丈夫?と感じるかもしれませんが、問題ありません。プライベート EC2 はパブリック IP を持っていないため、インターネット側から直接アクセスされる心配はありません。NAT ゲートウェイは「内から外への発信」だけを仲介し、外部から内への接続は通しません。

完成したネットワーク構成は次のとおりです。

完成したネットワーク構成図:パブリック・プライベートサブネットと NAT ゲートウェイが揃った状態

まとめ:プライベートサブネットと NAT ゲートウェイで学べること

2回にわたって VPC を一から構築した作業で得られた知見をまとめます。

  • プライベートサブネットはパブリック IP を持たず、外部から直接到達できないため踏み台 EC2 経由でアクセスする
  • セキュリティグループのソースに IP ではなく別のセキュリティグループ IDを指定すると、許可する通信元をグループ単位で管理できる
  • NAT ゲートウェイは必ずパブリックサブネットに配置し、Elastic IP(固定パブリック IP)を割り当てる
  • プライベートサブネットのルートテーブルに 0.0.0.0/0 → NAT GW のルートを追加することでインターネット発信が可能になる
  • 作業後は EC2 の停止・NAT ゲートウェイの削除・不要な Elastic IP の解放を忘れずに行う(NATゲートウェイは稼働時間で課金される)