AWS VPC周りの設定を自分でやってみる(Part.2)— プライベートサブネットと NAT ゲートウェイの設定手順
目次
はじめに
「プライベートサブネットに置いた EC2 からインターネットに接続するにはどうすればよいか?」——前回(Part.1)では VPC・サブネット・インターネットゲートウェイを手動構築し、パブリックサブネット上の EC2 への SSH 接続を確認しました。しかしプライベートサブネットの EC2 は外部から直接アクセスできない反面、OS のアップデートなどでインターネットへの発信が必要になる場面があります。
本記事では NAT ゲートウェイを使ってその問題を解決する手順を解説します。パブリック IP を持たないプライベート EC2 がどのようにしてインターネットと通信するのか、実際に操作しながら理解できます。同じ構成を試してみたい方の参考になれば幸いです。
ネットワーク構成のおさらい
今回完成させるネットワーク構成は下図のとおりです。Part.1 で作成した VPC にプライベートサブネット向けの設定を追加します。

- パブリックサブネット(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(踏み台経由のアクセス用)

2. プライベートサブネットに EC2 を起動する
EC2 の起動ウィザードで、VPC は今回作成したものを選択し、サブネットはプライベートサブネットを指定します。セキュリティグループは手順1で作成したものを割り当てます。
プライベートサブネットではパブリック IP が付与されないため、自分の PC から直接 SSH 接続することはできません。

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

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

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

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

設定後「NAT ゲートウェイを作成」をクリックします。Available 状態になるまで数分かかります。
5. プライベートサブネットのルートテーブルに NAT ゲートウェイへのルートを追加する
NAT ゲートウェイを作成しただけではプライベート EC2 のトラフィックは届きません。プライベートサブネット用のルートテーブルに「VPC 外向きの通信を NAT ゲートウェイへ転送する」ルートを追加します。
現在のプライベートサブネット用ルートテーブルはこの状態です。

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

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

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

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

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







ディスカッション
コメント一覧
まだ、コメントがありません