Grow up

生活とプログラミング

AWS EC2 + RDS サーバー環境の構築からCIDRを学ぶ

はじめに

EC2 + RDS の環境構築に成功したので復習をしてみます。
構築するうえでCIDRを理解することに一番時間がかかりました。
そのため、今回は CIDR Block に重点をおいてまとめたいと思います。

CIDR とは

「Classless Inter-Domain Routing」の略でサイダーと読みます。
ネットワーク部とホスト部を任意の値で区切れる事が特徴です。
任意の値で区切れるため、IPアドレスを効率的に使用できます。

ネットワーク部とホスト部はビット単位で区切られるので、
分かり易いように下の図では10進数のIPアドレスを2進数表記にしています。

f:id:knkomko:20190820123943p:plain:w450
f:id:knkomko:20190820204127p:plain:w450

例1をCIDRで書き表すと「123.45.67.89/23」になります。
「/23」がネットワーク部のビット数を表しています。

CIDRからホスト部を知るにはIPアドレスの全長からネットワーク部を引きます。
「123.45.67.89/23」でホスト部を求めると、IPアドレスの全長32ビットから
ネットワーク部の23ビットを引いた残りの9ビットがホスト部になります。

ネットワーク部が一致するIPアドレスは同じネットワークのIPアドレスです。
ホスト部はデバイスを識別する為にデバイスごと一意の値が割り当てられます。

クラスフルとは

ちなみにCIDRが使われる前は「クラスフル」が一般的でした。
クラスフルではネットワーク部とホスト部を決められた値で区切ります。
ホストアドレスが大きいと使われないIPアドレスがでる事がデメリットです。

f:id:knkomko:20190820123943p:plain:w450
f:id:knkomko:20190820204102p:plain:w450

AWS EC2 + RDS 構築手順

以下のサイトを参考に構築を行いました。
【AWS 再入門】EC2 + RDS によるミニマム構成なサーバー環境を構築してみよう – PSYENCE:MEDIA

サイトを参考に構築手順を書き出すと以下の8つになります。

1. VPCの作成
2. Subnet の作成
3. Internet Gateway の作成
4. Route Table の作成
5. Security Group の作成
6. DBSubnet Group の作成
7. RDSインスタンスの新規立ち上げ
8. EC2インスタンスの新規立ち上げ

1. VPCの作成、2.Subnetの作成 でCIDRを設定します。
CIDRを設定する2つの手順を抜粋して解説をまとめます。
その他の解説ついては参考サイトをご確認ください。

1.VPCの作成

VPCはデータの転送経路となる仮想のネットワーク環境を用意できます。
CIDRを設定するのですが、IPアドレスはEC2やRDSごとに必要になるため
IPアドレスが枯渇するとEC2やRDSが増やせなくなるため注意が必要です。

今回CIDRには 10.0.0.0/16 を指定していました。
設定したCIDRからホスト部を求めた結果は以下の通りです。

f:id:knkomko:20190816131056p:plain:w550

10.0.0.0/16 では 64,770 個のIPアドレスが使えます。
使用できるIPアドレスは、ホストアドレスの範囲 10. 0. 0. 1~10. 0.255.254 です。

IPアドレス・サブネットマスク計算ツール

上記のようなサイトを活用する事で簡単に計算ができます。

2.Subnet の作成

サブネットとは「1つのネットワークを複数のネットワークに分割する」です。
サブネットとは - コトバンク

外部に公開するEC2用のサブネットと、外部に公開しないRDS用のサブネットを作成しています。
EC2はWebアプリを配置して全世界からアクセスするために公開をして
RDSはEC2からアクセス出来ればよいので外部に公開していません。
①サブネット化 のメリットの理解 – ランスルネット

今回サブネットは3つに分けるため、それぞれにCIDRを指定します。
サブネットのホスト部をそれぞれ求めてみます。

public subnet: web-server の CIDR Block は 10.0.0.0/24 なので使用可能なIPアドレスの範囲は 10.0.0.1 ~ 10.0.0.254 で 254個です。
f:id:knkomko:20190816161111p:plain:w550

private subnet: db1 の CIDR Block は 10.0.1.0/24 なので使用可能なIPアドレスの範囲は 10.0.1.1 ~ 10.0.1.254 で 254個です。
f:id:knkomko:20190816161152p:plain:w550

private subnet: db2 の CIDR Block は 10.0.2.0/24 なので使用可能なIPアドレスの範囲は 10.0.2.1 ~ 10.0.2.254 で 254個です。
f:id:knkomko:20190816161441p:plain:w550

まとめ

EC2 + RDS を使用する場合にはVPC内に3つのサブネットを作成するため「10.0.0.1~10.0.255.254」のIPアドレスが使用できるようにCIDR Blockを「/16」と指定していた事が分かりました。
IPアドレス領域を有効活用するためにCIDRを使用しているため、IPアドレス領域に無駄が生じないようCIDRを設定することが重要です。