こんにちは。iQeda [@iQeeeda] です。
AWS 初心者の方はまず EC2 や RDS 利用することが多いと思いますが、
なにはさておき VPC 作成しないとはじまりません!
…が、VPC では普段なじみのない用語・概念に遭遇すると思います。
今回、初心者にもわかりやすいように VPC の基礎について、実際の例をふまえて解説します!
目次
実際に VPC とパブリックサブネットを作成して、
EC2 でサイト公開する手順も解説しているので、この記事のあとにどうぞ!
VPC とは
AWS の VPC (Virtual Private Cloud) について説明します。
- AWS 上に作るプライベートな仮想ネットワーク (仮想 OS) のこと
- VPC の中で AWS リソースを起動できる
- たとえば VPC の中で EC2 インスタンスや RDS を起動できます
そんな人もいるかもしれませんが、それは AWS デフォルトの VPC が起動しているのです。
ネットワーク環境の構築で考慮すること
一般的なネットワーク環境を作る場合と同じく、VPC も以下の考慮が必要です。
※ 細かい用語はあとで説明します。
- ネットワークレンジ
- ネットワーク環境のノード数を踏まえて、どれくらいの大きさが必要か CIDR を決定する
- サブネット
- ノードの役割によってルールを決めてグループ分けされた VPC 内の帯域
- ルール① インターネットの世界に公開するかどうか
- → ネットに繋がるパブリックなサブネットにするか?
- → 隔絶されたプライベートなサブネットにするか?
- ルール② サブネット同士で通信させて良いか?悪いか?
- → ルーティングテーブルで通信設定する
- サブネットに構築した EC2 などは VPC のルーターの指示を仰いで通信する
- → ネットにも繋げる場合は Internet Gateway を設定
- → ルーティングテーブルで通信設定する
- ルール① インターネットの世界に公開するかどうか
- ノードの役割によってルールを決めてグループ分けされた VPC 内の帯域
- VPC の利用料金
- いくら VPC を作成しても、それ自体の料金は無料
- ただし、以下を利用する場合は料金が発生する
- VPN 接続
- NAT Gateway
- → プライベートサブネットがネット接続したいときに必要
アーキテクチャ例と VPC 用語
具体例を踏まえて、VPC に登場する用語を解説します。10.0.0.0/16
というネットワークレンジ VPC を作成して、以下アーキテクチャを構築するとします。
AZ | パブリックサブネット | 用途 |
---|---|---|
1a | 10.0.11.0/24 | EC2 Web サーバ プライベートサブネットへの踏み台サーバ |
1c | 10.0.12.0/24 | Elastic Load Balancing |
AZ | プライベートサブネット | 用途 |
---|---|---|
1a | 10.0.21.0/24 | RDS マスター スレーブのレプリケーション 障害時、スレーブにフェイルオーバー |
1c | 10.0.22.0/24 | RDS スレーブ リードレプリカ |
サブネットとは
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 アドレス |
---|---|---|
/32 | 1 種類の IP アドレス帯を利用できる ※ 2^0 = 1 | 255.255.255.255 これだけが使える |
/28 | 32 – 28 で 4 ビットのこと = 4 ビット分の値 (16) が存在する ※ 2^4 = 1616 種類の IP アドレス帯を利用できる | 255.255.255.240 最後の 240 〜 255 を使える |
/24 | 32 – 24 で 8 ビットのこと = 8 ビット分の値 (256) が存在する ※ 2^8 = 256256 種類の IP アドレス帯を利用できる | 255.255.255.0 後半 1 桁を自由に使える ※ 0 から 255 |
/16 | 32 – 16 で 16 ビットのこと = 16 ビット分の値 (65536) が存在する ※ 2^16 = 6553665536 種類の 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 アドレス確保しすぎてもガバガバ設計になってしまいます。
構築するシステムの要件を理解しておくことは重要です。
ロードバランサーの CIDR
最低 /27
のサブネットマスクであること、つまり最低 8 つの空き IP アドレスが必要となります。
サブネットの IP
サブネットの IP ですが、たとえば今回の 10.0.11.0/24
や 10.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 を利用する
- VPC
- パブリックサブネット:
- AZ: 1c
- パブリックサブネット:
10.0.12.0/24
- ルーティングテーブル
- VPC
10.0.0.0/16
との通信を許可する - VPC
10.0.0.0/16
定義外の IP と通信する場合- Internet GW を利用する
- VPC
- パブリックサブネット:
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 を利用する
- VPC
- プライベートサブネット:
- AZ: 1c
- プライベートサブネット:
10.0.22.0/24
- ルーティングテーブル
- VPC
10.0.0.0/16
との通信しか許可しない - もし VPC
10.0.0.0/16
定義外の IP と通信したい場合- Nat GW を利用する
- VPC
- プライベートサブネット:
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」の最新記事
CIDRの/16って512台じゃなくて65536台やで
コメントありがとうございます!
すみません、まだまだ勉強不足で誤った情報を載せてしまいました。
記事を修正いたしました。