【AWS】VPC・サブネット・IGWの作成方法をわかりやすく解説!

AWSを使ってインフラ構築をする際に、まず最初に出てくるのが「VPC」「サブネット」「インターネットゲートウェイ」「ルートテーブル」という用語。

この記事では、以下の内容を図を用いてわかりやすく解説しています。この記事を読めば、AWSでインターネット接続可能な環境を構築することができます。

  • VPCとは?
    • VPCを作成するリージョンを選ぶ
    • VPCを作成する方法
  • サブネットとは?
    • VPCにサブネットを作成する方法
  • インターネットゲートウェイとは?
    • インターネットゲートウェイを作成して、VPCにアタッチする方法
  • ルートテーブルとは?
    • ルートテーブルにルートを追加する方法
    • ルートテーブルとサブネットを関連付ける方法

VPCとは?

VPC(Amazon Virtual Private Cloud)は、AWS上に構築できる自分専用のネットワーク空間です。例えるなら「自分の家のLAN(ローカルネットワーク)」のようなものです。

このVPCの中には、EC2(仮想サーバー)やRDS(データベース)などのAWSリソースを自由に配置することができ、インターネット接続の有無、アクセス制御、IPアドレスの割り当てなどを細かく設定できます。

VPCの特徴

  • 他のユーザーとは完全に隔離されているため、安全性が高い
  • ネットワーク構成を自由にカスタマイズ可能
  • VPCの作成自体には料金はかからない(通信などには課金あり)

【補足】AWSアカウント作成直後の状態

AWSアカウントを作った直後は以下のような状態になっています。

AWSアカウント作成直後の状態01

AWSのアカウントを作成した直後は、すぐに使い始められるように「デフォルトVPC」や「デフォルトサブネット」などが自動で用意されています。ただし、これらはあくまでお試しや初期設定用のものであり、セキュリティ面の制限もあるため、本番環境ではあまり使われないため、上図では割愛しています。

この記事では、以下の構成を作成します。

AWSアカウント作成直後の状態02

この構成を作成するためには、以下の作業を行う必要があります。

  • 新規にVPCを作成する
  • そのVPC内にサブネット(ここではパブリックサブネット)を作成する
  • インターネットへ接続するためのインターネットゲートウェイを作成して、VPCにアタッチする
  • ルートテーブルにルートを追加し、サブネットに関連付ける

これらの作業を行うことでインターネット接続可能な環境が整います。では、まずVPCの作成から行いましょう。

ステップ1:VPCを作成するリージョンを選ぶ

VPCは「どのリージョンに作成するか」を最初に決める必要があります。

今回は日本からの利用を想定して、「アジアパシフィック(東京)」リージョンを使用します。AWSマネジメントコンソール右上の「リージョン選択プルダウン」から、「アジアパシフィック(東京)」を選択して東京リージョンに切り替えます。

VPCを作成するリージョンを選ぶ

ステップ2:VPCを作成する

VPCを作成します。AWSマネジメントコンソールにログインし、上部の検索バーで「VPC」を検索して開きます。

VPCを作成する01

VPCを作成」をクリックします。

VPCを作成する02

VPC作成画面が開きます。以下の内容を入力し、「VPCを作成」をクリックします。

  • 作成するリソース
    • VPCのみ」を選択します。
  • 名前タグ
    • my-vpc-01など、わかりやすい名前を入力します。
    • AWSでは多くのリソースを扱うため、意味のある名前をつけておくと管理が楽になります。
  • IPv4 CIDR ブロック
    • VPCのIPv4アドレス範囲をCIDR形式で入力します。
    • ここでは、10.0.0.0/16を入力しています。
    • なお、AWS上に構築するシステムでは、次のプライベートIPアドレスの範囲内で、/16/28のCIDRブロックを指定する必要があります。使える範囲は、以下の3つです
      • 10.0.0.010.255.255.255 (10.0.0.0/8プレフィックス)
      • 172.16.0.0172.31.255.255 (172.16.0.0/12プレフィックス)
      • 192.168.0.0192.168.255.255 (192.168.0.0/16プレフィックス)
    • 実際のシステムでは他のネットワークと接続する可能性もあるため、他システムと重複しないIP範囲を選ぶのが重要です。
    • IPv4アドレス範囲はVPC作成後は大きくできないので、大きめに設定することをおすすめします。
  • IPv6 CIDR ブロック
    • AWSが用意しているIPv6アドレスを割り当てられますが、今回は特に使用しないため「IPv6 CIDR ブロックなし」にチェックを入れます。
  • テナンシー
    • 仮想インスタンスをどんな物理ホスト(サーバー)で動かすかを決める設定です。
    • デフォルト(共有)」を選択します。デフォルトでは、他のユーザーと同じ物理ホストの中で仮想インスタンスが動きます。十分セキュリティも保たれていて、コストも安くすみます。
    • 「専有(Dedicated)」にすると物理ホストを自分だけで使う設定になります。コストが高くなるので、特別な理由がなければ「デフォルト(共有)」で十分です。
VPCを作成する03

VPCが作成されました。「お使いのVPC」をクリックしましょう。

VPCを作成する04

VPCの一覧が表示されます。今回作成したVPC(my-vpc-01)が追加されていることが分かります。

VPCを作成する05

これでVPCの作成が完了です。

今回、10.0.0.0/16というCIDRブロックを指定してVPCを作成しました。この設定により、最大で65,536個のIPアドレスをこのVPC内で利用できるようになります。なお、今の構成は以下のようになっています。

VPCを作成する06

補足

  • VPCを作成すると同時に、トラフィックの流れ(通信経路)を管理するための「デフォルトルートテーブル」が自動的に作られます。ただし、このルートテーブルに登録されているルールは、「同じVPC内の通信だけ許可する」という最低限のルールのみです。そのため、このままではインターネットへの通信などはできません。インターネットには接続するには、「インターネットゲートウェイの作成」と「ルートの追加」が必要になります。後ほど「インターネットゲートウェイの作成」と「ルートの追加」について説明します。
  • また、「ネットワークACL(アクセスコントロールリスト)」という、通信を制御するもう一つのリソースも自動作成されています。これは、VPC内のサブネットごとに通信の許可・拒否を設定するものですが、今回は設定を変更しないため説明は省略します。
  • さらに、「セキュリティグループ」も自動的に作成されます。これは、インスタンス単位で通信を制御するためのファイアウォールのような機能です。デフォルトでは、同じセキュリティグループに所属するインスタンス間の通信のみがインバウンド(受信)で許可され、アウトバウンド(送信)はすべての通信が許可されています。セキュリティグループはステートフルであるため、インバウンドで許可された通信に対する応答はアウトバウンドでも自動的に許可されます。今回は設定を変更しないため説明は省略します。

サブネットとは?

VPCは指定したIPアドレスの範囲(CIDRブロック)を使ってネットワークを構成します。たとえば、先ほどのステップで指定した10.0.0.0/16では、VPC全体で65,536個のIPアドレスを使えることになります。ただし、全てのインスタンスをこのVPCに置くと、管理が煩雑になってしまいます。

そこでIPアドレスの範囲をより小さく分割して、論理的なグループとして扱えるようにしたものが「サブネット(Subnet)」です。このサブネットの中に、EC2インスタンス(仮想サーバー)やRDSインスタンス(データベース)などのAWSリソースを配置します。

サブネットを使うことで、ネットワークを可視化・分類・制御しやすくなります。例えば、「外部と通信するエリア(パブリックサブネット)」と「外部からは隔離されたエリア(プライベートサブネット)」などに分けることができます。今回は、インターネットに接続できる「パブリックサブネット」を作成します。

ステップ3:VPCにサブネットを作成する

「VPC」の画面の左メニューで「サブネット」をクリックします。

VPCにサブネットを作成する01

画面右側にサブネットの一覧が表示されます。ここで「サブネットを作成」ボタンをクリックします。

VPCにサブネットを作成する02

サブネット作成画面が開きます。以下の内容を入力し、「サブネットを作成」をクリックします。

  • VPC ID
    • サブネットをどのVPCに作成するかを指定します。
    • ここでは前のステップで作成したVPC(例:my-vpc-01)を選択します。
  • サブネット名
    • サブネットに付ける名前を入力します。
    • ここでは、public-my-subnet-1aと入力しました。
    • 名前は任意ですが、管理しやすくするためにも以下のような命名がおすすめです。
      • public-subnet-1a(インターネット接続可能なサブネットで、アベイラビリティゾーン「1a」用)
      • private-subnet-1c(インターネット接続しないサブネットで、アベイラビリティゾーン「1c」用)
  • アベイラビリティゾーン
    • サブネットを配置するアベイラビリティゾーン(AZ)を選びます。東京リージョンは4つのAZで構成されていますが、通常使用できるのは以下の3つとなります。
      • ap-northeast-1a
      • ap-northeast-1c
      • ap-northeast-1d
    • ここでは、ap-northeast-1aを選択しました。
  • IPv4 サブネット CIDR ブロック
    • このサブネットで使用するIPアドレスの範囲をCIDR形式で指定します。
    • ここでは、10.0.1.0/24(→約256個のIPアドレスを利用可能)を入力しました。
    • 「サブネットで使用するIPアドレスの範囲」は「VPCで指定したIPアドレスの範囲内(ここでは、10.0.0.0/16)」に収まっていればOKです。
VPCにサブネットを作成する03

サブネット(ここでは、public-my-subnet-1a)が作成されました。

VPCにサブネットを作成する04

今の構成は以下のような状態になっています。

VPCにサブネットを作成する05

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

ここまでで、以下の構成が整いました。

  • VPC(仮想ネットワーク空間)の作成
  • サブネット(小さなネットワーク単位)の作成

しかし、このままではインターネットとの通信ができません。なぜなら、インターネットへの出入り口となる「インターネットゲートウェイ(Internet Gateway)」がないからです。

インターネットゲートウェイは、VPC内のリソース(EC2など)と、外部のインターネットとの間で通信を可能にするために必要です。たとえば、VPC内にEC2インスタンスを立ち上げてWebサーバーとして公開したい場合、このインターネットゲートウェイを通じてインターネットからアクセスされることになります。

ではインターネットゲートウェイを作成していきましょう。

ステップ4:インターネットゲートウェイを作成して、VPCにアタッチする

VPC画面の左メニューで「インターネットゲートウェイ」をクリックします。

インターネットゲートウェイを作成して、VPCにアタッチする01

画面右側にインターネットゲートウェイの一覧が表示されます。「インターネットゲートウェイを作成」をクリックします。

インターネットゲートウェイを作成して、VPCにアタッチする02

インターネットゲートウェイ作成画面が開きます。以下の内容を指定し、「インターネットゲートウェイを作成」をクリックします。

  • 名前タグ
    • igw-my-vpc-01など、管理しやすいように、名前を付けておきましょう。
    • ここでは、my-internet-gatewayを入力しています。
インターネットゲートウェイを作成して、VPCにアタッチする03

インターネットゲートウェイが作成されました。しかし、この時点では「detached(未接続)」の状態になっています。つまり、まだどのVPCにも接続(アタッチ)されておらず、単体では機能していません。続けてVPCへのアタッチを実施するので、画面上部バーの「VPCへアタッチ」をクリックします。

インターネットゲートウェイを作成して、VPCにアタッチする04

インターネットゲートウェイをアタッチするVPC(my-vpc-01)を選択し、「インターネットゲートウェイのアタッチ」をクリックします。

インターネットゲートウェイをVPCに接続する作業を「アタッチ」と呼びます。

インターネットゲートウェイを作成して、VPCにアタッチする05

インターネットゲートウェイのアタッチが完了しました。インターネットゲートウェイの状態が「Attached」になればVPCとの紐付けが完了です。これで、VPCにインターネットとの出入口が接続され、ルートテーブルを正しく設定すれば、VPC内のリソースから外部インターネットへの通信が可能になります。

インターネットゲートウェイを作成して、VPCにアタッチする06

なお、今の構成は以下のような状態になっています。

インターネットゲートウェイを作成して、VPCにアタッチする07

ルートテーブルとは?

前のステップで、VPCにインターネットゲートウェイをアタッチすることができました。これにより、VPCからインターネットへ出ていくための出入口が確保された状態になりました。

しかし、現在のままではまだインターネット通信はできません。なぜなら、「どこ宛ての通信を、どこに流すか」というルール(ルーティング情報)がルートテーブルに設定されていないからです。

ルートテーブル(Route Table)は、ネットワーク内の通信の“道順”を決めるための設定です。たとえば、以下のようなルールを定義できます。

  • 「自分と同じネットワーク内(VPC内)への通信 → そのまま内部通信」
  • 「インターネット上(外部)への通信(例:GoogleやGitHubなど) → インターネットゲートウェイを通す」

VPC作成時にはデフォルトのルートテーブルが自動的に1つ作成されており、それが新しく作成されたサブネットに自動で関連付けられています。しかし、デフォルトのルートテーブルには、「VPC内のIPアドレス宛の通信はVPC内で完結する」という最小限のルールしか設定されていません。つまり、現状ではこうなっています。

  • 自分と同じネットワーク内(VPC内)への通信 → OK
  • インターネット上(外部)の通信 → NG(ルートがないため通れない)

そこで、インターネット通信を可能にするために、「全ての外部宛て通信(0.0.0.0/0)は、インターネットゲートウェイを通す」というルールを追加していきます。

ステップ5:ルートテーブルにルートを追加する

VPC画面の左メニューで「ルートテーブル」をクリックします。VPCを作成した際に自動的に作成されたVPCの「デフォルトルートテーブル」を選択後、画面下ペインで「ルート」タブをクリックして、「ルートを編集」をクリックします。

ルートテーブルにルートを追加する01

ここでは、デフォルトルートテーブルに追加のルートを登録しています。しかし、新規作成するサブネットは自動的にデフォルトルートテーブルへ関連付けられるため、インターネットへ通信しないプライベートサブネットを作る可能性がある場合はおすすめしません。新規でルートテーブルを作成することをおすすめします。

ルート編集画面が開きます。ルート編集画面を開くと、現時点では1つだけのルート情報が登録されているのが確認できます。それは、10.0.0.0/16(今回作成したVPCのIPアドレス範囲)に対するルートです。このルートのターゲットは「local(ローカル)」となっています。これは、VPC内での通信はそのまま可能という意味です。ただし、それ以外のすべての通信(たとえば 送信先が8.8.8.81.1.1.1 など)において、インターネット上の外部サーバーにアクセスしようとすると、「その通信先のルートが定義されていないため、すべて破棄される(届かない)」という状態になっています。つまり今のままでは、VPCの中の通信はOKだけど、インターネットには一切出ていけないという構成になっているということです。なので、ルートを追加して、VPC内宛以外の通信に関してはインターネットゲートウェイへ向くように設定します。「ルートを追加」をクリックします。

ルートテーブルにルートを追加する02

新規追加された枠で送信先に「0.0.0.0/0」と入力し、ターゲットに「インターネットゲートウェイ」を選択します。

ルートテーブルにルートを追加する03

自動的にターゲットに「igw-」と入力されるので、選択肢の中から先ほど作成したインターネットゲートウェイ(ここでは、my-internet-gateway)を選択し、「変更を保存」をクリックします。これでVPC内宛以外の通信に関してはインターネットゲートウェイへ向くように設定できました。

ルートテーブルにルートを追加する04

0.0.0.0/0はデフォルトルートといって、ルートテーブルに登録されているどのアドレスにも一致しない場合のルートです。10.0.0.0/16以外を除くすべてのIPv4アドレスのターゲットをインターネットゲートウェイにしているので、VPC内宛以外の通信に関してはインターネットゲートウェイへ向きます。

インターネットゲートウェイへのルートが追加されていることが確認できます。

ルートテーブルにルートを追加する05

ステップ6:ルートテーブルとサブネットを関連付ける

前のステップで、インターネットゲートウェイへのルート(経路)をルートテーブルに追加しました。これで「インターネットに出ていくための道」は整いましたが、このままではまだ通信できません。

AWSでは、「どのサブネットがどのルートテーブルを使うか」を明示的に指定する必要があります。いくらルートテーブルに「インターネットに出るルート」が設定されていても、サブネットがそのルートテーブルを使っていなければ、インターネット通信は行われません。

ルートテーブルとサブネットの関連付けを行いましょう。作成したVPCのルートテーブルを選択後、画面下ペインで「サブネットの関連付け」タブをクリック後、「サブネットの関連付けを編集」をクリックします。

ルートテーブルとサブネットを関連付ける01

今回作成したサブネット(ここでは、public-my-subnet-1a)を選択し、「関連付けを保存」をクリックします。

ルートテーブルとサブネットを関連付ける02

ルートテーブルにサブネットを関連付けることができました。

ルートテーブルとサブネットを関連付ける03

今の構成は以下のような状態になっています。

ルートテーブルとサブネットを関連付ける04

本記事のまとめ

この記事では以下の内容を説明しました。

  • VPCとは?
    • VPCを作成するリージョンを選ぶ
    • VPCを作成する方法
  • サブネットとは?
    • VPCにサブネットを作成する方法
  • インターネットゲートウェイとは?
    • インターネットゲートウェイを作成して、VPCにアタッチする方法
  • ルートテーブルとは?
    • ルートテーブルにルートを追加する方法
    • ルートテーブルとサブネットを関連付ける方法

お読み頂きありがとうございました。あとは、このネットワーク内にEC2を起動すれば、インターネットからアクセスできるサーバーが立ち上がります!

スポンサーリンク