VPC設計に必要なn進数とCIDRとはなにか


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

はじめに

VPCやサブネットを設計や作成をする際にn進数やCIDRの知識が必要となります。
自分の知識が浅く理解を深めるためにも言語化して書いていきたいと思います。

n進数とは

n進数 = 数の数え方です。

10進数とは

10で桁が上がる考え方です。
日常生活では10進数が使われています。
例えば 0,1,2,3…..9 10になったときに桁があがります。
これが10進数の考え方です。

2進数とは

2で桁が上がる考え方です。
コンピューターの世界では、すべてのデータを2進数で表しています。
0と1の値しかありません。
0, 1 10と桁が上がり、 10, 11, 100と桁が上がります。

以下対応表になります。

2進数 10進数
0 0
1 1
10 2
11 3
100 4

16進数とは

16で桁が上がる考え方です。
16進数は1,2,3,4…9,A,B….F 10とF(15)のタイミングで10になる考え方です。

以下対応表になります。

16進数 10進数
1 1
2 2
3 3
9 9
A 10
B 11
F 15
10 16

2進数から10進数にする

10110110 を10進数に直してみます。
1×2^7 + 0×2^6 + 1×2^5 + 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
= 128 + 0 + 32 + 16 + 0 + 4 + 2 + 0
= 182 となります。

1×2^7を分解して考えてみます。
1×2^7の1は10110110の一番左側の1を示しています。
2^7 の2は2進数の2を示しています。10進数なら 1×10^7となります。
1×2^77は7桁目のことを示しています。一番左なので7です。
基本的に0から数えるので8ではなく、7になります。

図だとこういう風になります。
file

10進数から2進数にする

109を10進数から2進数に直してみます。

2) 109
2) 54 … 1
2) 27 … 0
2) 13 … 1
2) 6 … 1
2) 3 … 0
1 … 1

2進数の2で109を割っていきます。
余りを下から読んでいくと 1101101となり、変換ができています。
2の部分をn進数に応じて変えれば変換が可能になります。

IPアドレスの構成

基本的にはこの構成になります。
file
IPアドレスは二進数に直すと32桁あります。
file
32ビット全部1(2進数)で255.255.255.255(10進数)になります。
file

ネットワーク部

VPCを作成する場合で考えてみます。
VPCを作成した時にどのVPCか判別しなければなりません。
その判別ができるようにするためにあるのがネットワーク部です。

ホスト部

VPC内にも複数の端末(EC2など)が存在します。
それを識別するためにあるのがホスト部になります。

クラスとは

IPアドレスのネットワーク部とホスト部を決められたブロック単位で区切る方法です。
簡単ですがアドレス空間の利用に無駄が生じてしまいます。

クラス プライベートIPアドレスのクラス範囲
クラスA 10.0.0.0~10.255.255.255(10.0.0.0/8)
クラスB 172.16.0.0~172.31.255.255(172.16.0.0/12)
クラスC 192.168.0.0~192.168.255.255(192.168.0.0/16)

このような感じでIPアドレスのクラス範囲が事前に決められています。
これだと柔軟な設定が行えませんでした。
そこで柔軟に設定できるCIDRというものがでてきました。

CIDRとは

CIDRとは「Classless Inter-Domain Routing」の略です。
クラスを使わないIPアドレスの割り当てと、経路情報の集成を行う技術です。
以下の画像のようにCIDRを使用するときは「/」を使用してどこを区切るか指定します。
file
/16だと2進数で見た時の16個目の値までネットワーク部、それ以降がホスト部になります。
/16だと65536個IPアドレスを割り当てられます。
計算式は256^2です。
これで柔軟に割り当てを行うことができます。

サブネットマスクとは

ネットワークの範囲を定義するために使用します。
サブネットマスクはIPアドレスのネットワーク部を「1」、ホスト部を「0」で表します。
192.168.0.0で考えてみます。
以下の画像のようにネットワーク部とホスト部を区切ることができます。
file
ですが毎回サブネットマスクをすべて記載するのは面倒なのでこれをさらに簡易的に表記する方法があります。それが先ほど説明したCIDRになります。

サブネットとは

ネットワークを複数の小さなネットワークに分割したネットワークのことです。
VPC作成を例として考えます。
VPCのCIDR範囲を192.168.0.0/16でサブネットのCIDR範囲は192.168.0.0/24とします。
※サブネットのCIDR範囲はVPCより狭くないといけないです。
file
こうするとVPCのCIDR範囲の/16とサブネットのCIDR範囲/24の間に8ビット間が空きます。
そこがサブネット部になります。

実際にVPCとサブネットを作成してみる

上記の知識を使ってVPCとサブネットの作成を行っていこうと思います。

VPCの作成

今回のVPC CIDR範囲は192.168.0.0/16にしました。
file

サブネットの作成です。

先ほど作成したVPCを入力して、「IPv4 CIDRブロック」にあえて違うアドレスを入力してみます。
そうすると「CIDRアドレスがVPCのCIDRアドレス内にありません」とでます。
これは関連付けられているVPC内のアドレスではないのでエラーがでています。
file
図にすると以下のようになります。
VPCの中にサブネットを作成したいのにVPCの外にサブネットを作成しようとしています。
file

正しいアドレスを入力します。
こちらはもちろん関連付けられているVPC CIDR内ですのでエラーはでません。
file
図にすると以下のようになります。
こちらはしっかりVPCのCIDR範囲内にアドレスを指定しているのでエラーがでないです。
file

サブネットの中にEC2を入れてみる

VPCとサブネットを作成しました。
次はサブネット内にEC2を入れてみます。
EC2の作成は趣旨とは違うのでVPCの設定以外は省きます。
以下の画像のように作成したVPCとサブネットを設定しておいてください。
file
作成後EC2の概要をみてみるとプライベートIPv4addressが「192.168.0.9」になっていることが確認できます。これは先ほど作成したサブネットに入れたためこうなっています。
file
図にすると以下になります。
file

まとめ

VPCやサブネットの設計などをする際には絶対に必要になる知識です。
自分自身も言語化することで知識が深まりました。

Last modified: 2023-05-31

Author