0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS基礎】 VPC / EC2 基本的なアーキテクチャの構成

0
Last updated at Posted at 2025-12-16

はじめに

AWSの学習を進める中で、
基本的なネットワークアーキテクチャとしてよく登場する

  • Public Subnet と Private Subnet の違い
  • なぜ踏み台(Bastion Host)や NAT Gateway が必要なのか

といった点を、
机上の理解ではなく、実際に構築して理解したい と思い、本構成を作成しました。

本記事では、VPCの基本構成としてよく用いられる以下のリソースを使用します。

  • Public Subnet
  • Private Subnet
  • Bastion Host(踏み台EC2)
  • NAT Gateway
  • Elastic IP(EIP)

これらを用いて環境を構築し、
自分のPCから Private Subnet 上の EC2 へ踏み台経由で SSH 接続する
ところまでをゴールとします。


構成図

AWS入門_構成図.png

※ 上記構成図は、本記事で最終的に構築する構成を表しています。

  • VPC 内に Public Subnet / Private Subnet を作成
  • Public Subnet には踏み台 EC2 と NAT Gateway を配置
  • 踏み台 EC2 および NAT Gateway には Elastic IP を関連付け
  • Private Subnet には外部公開しない EC2 を配置
  • インターネットからの SSH 接続は踏み台 EC2 のみに制限
  • Private Subnet 上の EC2 は踏み台経由でのみ SSH 接続可能
  • Private Subnet 上の EC2 は NAT Gateway 経由でアウトバウンド通信のみ可能

対象読者

  • AWS を触り始めたばかりの方
  • VPC / Subnet / Route Table の関係がまだ曖昧な方
  • NAT Gateway や EIP の役割を実際に構築して理解したい方

ゴール構成

  • VPC を作成する
  • Public / Private Subnet を分離する
  • Internet Gateway / NAT Gateway を作成する
  • Elastic IP(EIP)を作成し、各リソースに関連付ける
  • Route Table を作成し、各 Subnet に関連付ける
  • Public Subnet に踏み台 EC2 を配置する
  • Private Subnet に EC2 を配置する
  • PC → 踏み台 EC2 → Private EC2 の SSH 接続を確認する
  • Private EC2 からインターネットへのアウトバウンド通信を確認する

構成概要

項目 内容
リージョン ap-northeast-1(東京)
VPC CIDR 10.0.0.0/21
Public Subnet 10.0.1.0/24
Private Subnet 10.0.2.0/24
EC2(Public) 踏み台 EC2(Bastion Host)
EC2(Private) アプリ用 EC2
NAT Gateway Public Subnet に配置
Elastic IP 踏み台 EC2 / NAT Gateway に使用
接続方式 SSH(踏み台経由)

なぜこの構成にするのか

Private Subnet 上の EC2 に直接パブリック IP を付与し、
インターネットから SSH 接続することも技術的には可能です。

しかし、その場合 EC2 が直接インターネットに晒されるため、
セキュリティリスクが高くなります。

そのため本構成では、以下の方針を採用しています。

  • 外部公開が必要なリソースのみを Public Subnet に配置
  • Private Subnet 上の EC2 はインターネットから直接アクセス不可
  • 管理アクセス(SSH)は踏み台 EC2 に集約
  • Private Subnet のアウトバウンド通信は NAT Gateway 経由に限定
  • パブリック IP は Elastic IP として明示的に管理

VPCの作成

サービス一覧から「VPC」を検索し、クリックします。
スクリーンショット 2025-12-13 19.42.11.png

「VPC を作成」をクリックします。
スクリーンショット 2025-12-13 19.42.44.png

以下のように設定します。
CIDR ブロックは 10.0.0.0/21 を指定します。
スクリーンショット 2025-12-13 19.43.03.png

VPC の作成が完了します。
スクリーンショット 2025-12-13 19.43.25.png


サブネットの作成

Public Subnet

以下のように設定します。

  • CIDR:10.0.1.0/24
  • AZ:ap-northeast-1a
  • パブリック IP の自動割り当て:無効

スクリーンショット 2025-12-13 19.44.42.png


Private Subnet

Public Subnet と同様の手順で作成します。(写真は割愛)

  • CIDR:10.0.2.0/24
  • AZ:ap-northeast-1a
  • パブリック IP の自動割り当て:無効

Internet Gatewayの作成

  • Internet Gateway を作成
  • 作成した VPC にアタッチ

スクリーンショット 2025-12-13 23.39.27.png
スクリーンショット 2025-12-13 23.40.11.png


ルートテーブルの作成と関連付け

ここでは、
Public Subnet 用Private Subnet 用
2 種類のルートテーブルを作成し、それぞれ適切なサブネットに関連付けます。


Public Subnet 用ルートテーブルの作成

Public Subnet からインターネットへ直接通信できるよう、
Internet Gateway を向いたルートを設定します。

Public Subnet 用のルートテーブルを作成します。

スクリーンショット 2025-12-13 23.40.56.png


サブネットへの関連付け

作成したルートテーブルを Public Subnet に関連付け します。
また、ルートの設定を以下の通りにします。

  • 宛先:0.0.0.0/0
  • ターゲット:Internet Gateway

スクリーンショット 2025-12-13 23.41.41.png
スクリーンショット 2025-12-13 23.41.59.png
スクリーンショット 2025-12-13 23.44.08.png


Public Subnet 設定後のリソースマップ

この時点で、
Public Subnet は Internet Gateway 経由で
インターネット通信が可能な状態になります。

スクリーンショット 2025-12-13 23.44.32.png


NAT Gatewayの作成

Private Subnet 上の EC2 が
インターネットへアウトバウンド通信のみ可能 となるよう、
NAT Gateway を作成します。

NAT Gateway は
Internet Gateway 経由で通信する必要があるため、必ず Public Subnet に配置 します。


設定内容

  • 配置先サブネット:Public Subnet
  • Elastic IP:NAT Gateway 用に割り当てた EIP を指定

スクリーンショット 2025-12-16 1.35.30.png


NAT Gateway の作成が完了したら、
次に Private Subnet 用ルートテーブル を作成し、
この NAT Gateway をルートのターゲットとして設定します。


Private Subnet 用ルートテーブルの作成

Private Subnet 上の EC2 は
直接インターネットに出さず、
NAT Gateway 経由でアウトバウンド通信のみ を許可します。

Private Subnet 用のルートテーブルを作成します。

スクリーンショット 2025-12-13 23.44.59.png


サブネットへの関連付け

このルートテーブルを Private Subnet に関連付け します。
またルートの設定を以下の通りにします。

  • 宛先:0.0.0.0/0
  • ターゲット:NAT Gateway

スクリーンショット 2025-12-17 0.39.11.png
スクリーンショット 2025-12-17 0.39.41.png


Private Subnet 設定後のリソースマップ

この時点で、

  • Public Subnet → Internet Gateway
  • Private Subnet → NAT Gateway

という 役割分離されたネットワーク構成 が完成します。

スクリーンショット 2025-12-17 0.43.41.png


EC2インスタンスの作成

ここから EC2 インスタンスを作成していきます。
まずは Public Subnet に配置する踏み台 EC2 を作成します。


共通設定

今回作成する EC2 は、以下の設定を共通とします。

  • AMI:Amazon Linux 2023
  • インスタンスタイプ:t2.micro
  • キーペア:新規作成(pem形式)

Public Subnet 配置 EC2(踏み台)の作成手順

EC2 サービスを検索し、クリックします。
スクリーンショット 2025-12-13 23.45.40.png

「インスタンスを起動」をクリックします。
スクリーンショット 2025-12-13 23.45.56.png


名前の設定

インスタンス名を設定します。

スクリーンショット 2025-12-13 23.46.11.png


AMI の設定

Amazon Linux 2023 を選択します。
スクリーンショット 2025-12-13 23.46.47.png


キーペアの設定

新しいキーペアを作成します。
※ 後ほど SSH 接続で使用するため、大切に保管してください。

スクリーンショット 2025-12-13 23.47.22.png


ネットワーク設定

  • VPC:今回作成した VPC
  • サブネット:Public Subnet
  • パブリック IP の自動割り当て:無効
    • ※ 後ほど Elastic IP を関連付けます
  • セキュリティグループ:踏み台 EC2 用 SG
  • SSH のソース:自分のグローバル IP

スクリーンショット 2025-12-13 23.48.05.png


ストレージ設定

ストレージはデフォルト設定のままで問題ありません。
スクリーンショット 2025-12-13 23.48.17.png


インスタンス作成完了

設定内容を確認し、インスタンスを起動します。
スクリーンショット 2025-12-13 23.48.26.png


Private Subnet 配置 EC2 の作成

踏み台 EC2 と同様の手順で、
Private Subnet に EC2 インスタンスを作成します。


踏み台EC2(Public Subnet)

  • 配置先:Public Subnet
  • パブリック IP 自動割り当て:無効
  • セキュリティグループ:踏み台 EC2 用 SG
  • Elastic IP:踏み台 EC2 用 EIP を関連付け

アプリ用EC2(Private Subnet)

  • 配置先:Private Subnet
  • パブリック IP:なし
  • セキュリティグループ:アプリ用 EC2 用 SG

ここまでで、
Public / Private それぞれに EC2 が配置された状態になります。

SSH接続および通信確認

以下の点を確認します。

  • 自分の PC から Public Subnet 上の EC2(踏み台)へ SSH 接続できること
  • 踏み台 EC2 経由で Private Subnet 上の EC2 へ SSH 接続できること
  • Private Subnet 上の EC2 からインターネットへアウトバウンド通信できること

① PC → Public Subnet(踏み台EC2)への SSH 接続

まず、秘密鍵のパーミッションを変更します。

chmod 400 test-ec2-key.pem

踏み台 EC2 の Elastic IP を指定して SSH 接続します。

ssh -i test-ec2-key.pem ec2-user@<踏み台EC2のElasticIP>

→ Public Subnet 上の踏み台 EC2 に SSH ログインできることを確認

② 踏み台EC2へ秘密鍵を転送(scp)

踏み台 EC2 から Private Subnet の EC2 へ SSH 接続するため、
秘密鍵を scp で踏み台 EC2 に転送します。

scp -i test-ec2-key.pem test-ec2-key.pem ec2-user@5<踏み台EC2のElasticIP>:/tmp

[ec2-user@ip-10-0-1-143 ~]$ cd /tmp
[ec2-user@ip-10-0-1-143 tmp]$ ls
test-ec2-key.pem

→ 秘密鍵が踏み台 EC2 に転送されたことを確認

③ Public Subnet → Private Subnet EC2 への SSH 接続

踏み台 EC2 から、
Private Subnet 上の EC2(プライベート IP)へ SSH 接続します。

ssh -i test-ec2-key.pem ec2-user@<アプリ用EC2のIP>

→ Private Subnet 上の EC2 に SSH 接続できることを確認

④ Private Subnet EC2 からインターネット通信の確認

Private Subnet 上の EC2 から、
NAT Gateway 経由でインターネット通信が可能かを確認します。

curl google.com

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>


ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=3.64 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=114 time=3.30 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=114 time=3.29 ms

→ Private Subnet 上の EC2 から NAT Gateway 経由で
インターネットへアウトバウンド通信できることを確認

まとめ

本記事では、AWS の基本的なネットワーク構成として、

  • Public / Private Subnet の分離
  • 踏み台 EC2 を用いた SSH 接続
  • NAT Gateway を利用したアウトバウンド通信制御

を実際に構築し、
通信が意図した経路で行われていることを確認しました。

単にリソースを作成するだけでなく、
「なぜこの構成にするのか」「どこで通信が制御されているのか」を
理解することが重要だと感じました。

AWS 初学者の方が、
VPC や Subnet、ルートテーブルの役割を理解する一助になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?