【AWS】VPCとは?初心者向け徹底解説!【アーキテクチャ設計】

  • このエントリーをはてなブックマークに追加
  • Pocket

こんにちは。iQeda [@iQeeeda] です。

AWS 初心者の方はまず EC2 や RDS 利用することが多いと思いますが、
なにはさておき VPC 作成しないとはじまりません!

…が、VPC では普段なじみのない用語・概念に遭遇すると思います。

今回、初心者にもわかりやすいように VPC の基礎について、実際の例をふまえて解説します!

実際に VPC とパブリックサブネットを作成して、
EC2 でサイト公開する手順も解説しているので、この記事のあとにどうぞ!

VPC とは

AWS の VPC (Virtual Private Cloud) について説明します。

  • AWS 上に作るプライベートな仮想ネットワーク (仮想 OS) のこと
  • VPC の中で AWS リソースを起動できる
    • たとえば VPC の中で EC2 インスタンスや RDS を起動できます
VPC なんか作ったことないけど、EC2 とか RDS 使ったことあるよ?

そんな人もいるかもしれませんが、それは AWS デフォルトの VPC が起動しているのです。

ネットワーク環境の構築で考慮すること

一般的なネットワーク環境を作る場合と同じく、VPC も以下の考慮が必要です。
※ 細かい用語はあとで説明します。

  • ネットワークレンジ
    • ネットワーク環境のノード数を踏まえて、どれくらいの大きさが必要か CIDR を決定する
  • サブネット
    • ノードの役割によってルールを決めてグループ分けされた VPC 内の帯域
      • ルール① インターネットの世界に公開するかどうか
        • → ネットに繋がるパブリックなサブネットにするか?
        • → 隔絶されたプライベートなサブネットにするか?
      • ルール② サブネット同士で通信させて良いか?悪いか?
        • ルーティングテーブルで通信設定する
          • サブネットに構築した EC2 などは VPC のルーターの指示を仰いで通信する
        • → ネットにも繋げる場合は Internet Gateway を設定
  • VPC の利用料金
    • いくら VPC を作成しても、それ自体の料金は無料
    • ただし、以下を利用する場合は料金が発生する
      • VPN 接続
      • NAT Gateway
        • → プライベートサブネットがネット接続したいときに必要

アーキテクチャ例と VPC 用語

具体例を踏まえて、VPC に登場する用語を解説します。
10.0.0.0/16 というネットワークレンジ VPC を作成して、以下アーキテクチャを構築するとします。

AZパブリックサブネット用途
1a10.0.11.0/24EC2
Web サーバ
プライベートサブネットへの踏み台サーバ
1c10.0.12.0/24Elastic Load Balancing
AZプライベートサブネット用途
1a10.0.21.0/24RDS
マスター
スレーブのレプリケーション
障害時、スレーブにフェイルオーバー
1c10.0.22.0/24RDS
スレーブ
リードレプリカ

サブネットとは

VPC の中に作るグループみたいなものであり、VPC で作った範囲を区分けする存在です。
よって VPC より IP アドレスの範囲は小さくなります。(見た目の数字は大きくなる)

ソースコード・Web サーバなど、ユーザが直接アクセスするリソースはパブリックサブネット
セキュリティが大事な DB サーバはプライベートサブネットに配置されることが多いです。

CIDR とは

VPC はアドレスの範囲を決めて作成します。たとえば 10.0.0.0/16 のように。
この数値郡のことを CIDR (サイダー) といい、仮想ネットワークの範囲を定義しています。

サブネットの「ネットワークレンジの /16/24 部分」をサブネットマスクといいます。この CIDR で IP アドレスの帯域を制限します。

普段意識する IP アドレス、たとえば 255.255.255.255 は十進法表記です。
実態は二進法で表すので 11111111.11111111.11111111.11111111 となります。
サブネットマスク /16 では、この二進法の左から 16 桁を「ロック」して、右半分の 16 桁を自由に指定して扱っていいよと許可するという意味になります。

サブネットマスク意味プライベート IP アドレス
/321 種類の IP アドレス帯を利用できる
2^0 = 1
255.255.255.255
これだけが使える
/2832 – 28 で 4 ビットのこと
= 4 ビット分の値 (16) が存在する
2^4 = 16
16 種類の IP アドレス帯を利用できる
255.255.255.240
最後の 240 〜 255 を使える
/2432 – 24 で 8 ビットのこと
= 8 ビット分の値 (256) が存在する
2^8 = 256
256 種類の IP アドレス帯を利用できる
255.255.255.0
後半 1 桁を自由に使える
※ 0 から 255
/1632 – 16 で 16 ビットのこと
= 16 ビット分の値 (65536) が存在する
2^16 = 65536
65536 種類の IP アドレス帯を利用できる
255.255.0.0
後半 2 桁を自由に使える
※ 0 から 255

厳密には AWS が事前に 5 つ分の IP アドレスを予約しているため、全部は使えません。
たとえば /24 の サブネットマスクを使っても (256 – 5) で 251 種類の IP アドレスしか利用できません。

CIDR による IP アドレスの個数については wikipedia が参考になりますよ。

CIDR のセオリー

VPC ではサブネットマスクを /16 で多めに IP アドレス確保しておき、
サブネットでは /24 で少なめに IP アドレス確保して使うのが定石です。

あとで IP アドレス足りなくなって困るよりは、多めに確保しておこうって考え方です。
/16 を指定しておくのは AWS 公式のベストプラクティスにもなっています。

…ですが、やみくもに IP アドレス確保しすぎてもガバガバ設計になってしまいます。

将来的にどれくらいプライベートな IP アドレスが必要になりそうか?

構築するシステムの要件を理解しておくことは重要です。

ロードバランサーの CIDR

最低 /27 のサブネットマスクであること、つまり最低 8 つの空き IP アドレスが必要となります。

サブネットの IP

サブネットの IP ですが、たとえば今回の 10.0.11.0/2410.0.12.0/24 のように、
自由に使える後半 2 桁 (0.0) の「最初の 0 の桁」に番号を割り当てることが多いです。

マルチ AZ とは

AZ はアベイラビリティゾーンの略です。物理的なサーバが置いてあるエリアのことです。

1 つの AZ だけに Web サービスを置いておくと、その AZ に障害があると止まってしまいます。
なので今回、AWS 東京リージョンの「1a」と「1c」という AZ の利用を想定しました。

東京リージョンの「1b」は現在廃止になっているので、選択できません。

ちなみに日本に住んでいるなら、リージョンは大体 ap-northeast-1 を指定することが多いと思いますが、これは Aisa Pacific の北東の略ですね。

パブリックサブネット

  • AZ: 1a
    • パブリックサブネット: 10.0.11.0/24
    • ルーティングテーブル
      • VPC 10.0.0.0/16 との通信を許可する
      • VPC 10.0.0.0/16 定義外の IP と通信する場合
        • Internet GW を利用する
  • AZ: 1c
    • パブリックサブネット: 10.0.12.0/24
    • ルーティングテーブル
      • VPC 10.0.0.0/16 との通信を許可する
      • VPC 10.0.0.0/16 定義外の IP と通信する場合
        • Internet GW を利用する

Internet Gateway とは

パブリックサブネットでは VPC の IP 10.0.0.0/16 以外にもアクセスしていいことにします。

つまり、インターネットの世界に繋がってもいいということです。
その場合 Internet GW (インターネットゲートウェイ) というものを利用します。

これは「インターネットの出入り口」だと思ってください。なので、これ自体は IP アドレスなどは持っていません。
※ Internet Gateway は VPC の内側ではなく、外側に存在するものです

プライベートサブネット

  • AZ: 1a
    • プライベートサブネット: 10.0.21.0/24
    • ルーティングテーブル
      • VPC 10.0.0.0/16 との通信しか許可しない
      • もし VPC 10.0.0.0/16 定義外の IP と通信したい場合
        • Nat GW を利用する
  • AZ: 1c
    • プライベートサブネット: 10.0.22.0/24
    • ルーティングテーブル
      • VPC 10.0.0.0/16 との通信しか許可しない
      • もし VPC 10.0.0.0/16 定義外の IP と通信したい場合
        • Nat GW を利用する

DB サーバがインターネットの世界に繋がる状態は大変危険です。
なので基本的には 10.0.0.0/16 の IP しか許さない定義をします。

NAT Gateway とは

しかし、プライベートサブネットで「なにかインストールしたい」場合もあると思います。
もし一時的にネット接続したい場合は NAT GW (ナットゲートウェイ) というものを使います。

これは「自動的にプライベート IP をグローバル IP に変換してくれる」装置と思ってください。サブネットにグローバル IP を付与してくれます。

【処理の流れ】
EC2 > Router > NAT Gateway > Internet Gateway

NAT Gateway の料金体系

詳しくは AWS の公式で調べてほしいのですが…

  • 1 時間利用で $0.062
  • 処理データ 1 GB 当たり $0.062

の課金となっており、Nat GW を繋ぎっぱなしにした場合、
1 ドル 120 円換算で「1 か月最大 5,400円 + データ通信料」位かかります。

VPN の料金体系

ちなみに VPN の料金は 1 時間で $0.048 となっています。
1 か月最大で 4,200 円くらいです。

ファイアウォール

セキュリティグループとは

インスタンス単位のファイアウォール。
EC2 とか RDS が稼働しているインスタスに対して設定する。

拒否設定はなくて、許可設定のみ。

ネットワーク ACL とは

サブネット単位のファイアウォール。あんまり使わない。
許可・拒否、どっちも可能。

お仕事ください!

僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。
なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。

カテゴリ「AWS」の最新記事

最新記事

コメント

  1. 通天閣 より:

    CIDRの/16って512台じゃなくて65536台やで

  2. タクマ™ より:

    コメントありがとうございます!
    すみません、まだまだ勉強不足で誤った情報を載せてしまいました。
    記事を修正いたしました。

コメントを残す

*