ふんばりフロントエンジニアのブログ

新米フロントエンジニアの備忘録です。ふんばり温泉タオル欲しい...

サブネットの重複?範囲内にしろ?VPCのサブネットの切り方についての備忘録

今回はAWSの中でもなんかとっつきにくいVPCの話です。

私もネットワーク系弱いので、結構しんどいのですがなんだかんだ理解できたようなので備忘録として残します。

VPCとかサブネットとかそもそも意味がわからん、という方は下記の記事がとてもよく理解できると思います。
avinton.com


では、サブネットの切り方について。
まず、VPCのネットワークアドレスを設定してみましょう。

10.0.0.0/16

サブネットの計算はhttps://note.cman.jp/network/subnetmask.cgiが便利です。

このように設定すると、

ネットワークアドレス: 10.0.0.0
ホストアドレス: 10.0.0.1~10.0.255.254

となります。
ホストアドレスというのは実際に割り当てることのできるIPアドレスのことを指します。

さて、肝心のサブネットは次の二つの要件を満たす必要があります。

1. VPCのホストアドレス範囲内であること(10.0.0.1~10.0.255.254)
2. サブネット同士でホストアドレス範囲が重複しないこと

では、早速1を満たすためにサブネットを設定してみましょう。

// サブネットA
10.0.0.0/16

ホストアドレスは「10.0.0.1~10.0.255.254」となります。
当然、VPCのホストアドレスと同じ範囲なので作成自体は成功します。(わかる方はもうアカンとわかる)
では、もう一つサブネットを作成する場合はどうなるか...

// サブネットB
10.0.1.0/24

ホストアドレスは「10.0.1.1~10.0.1.254」となります。
そして、ここで作成は失敗します。
なぜなら、2の条件である「サブネット同士でIPアドレス範囲が重複しないこと」という条件を満たしていないため。
上記を見比べてみるとわかるのですが、サブネットBの範囲ってサブネットAの範囲に含まれちゃっていますよね。

上記の失敗原因は、まず「最初の段階でVPC内の利用可能なホストアドレスを全て占有してしまっている」ことが原因です。
なので、サブネットは重複しないようにあらかじめある程度のゆとりを持たせることが大事だと思います。

上記を踏まえて、サブネットを作成する場合は、下記のようにすると1,2の条件を満たすことができます。

//サブネットA
10.0.1.0/24
→ 10.0.1.1~10.0.1.254
//サブネットB
10.0.2.0/24
→ 10.0.2.1~10.0.2.254

上記のように第三オクテットを固定にすれば、検証はしてませんが最大で255個までサブネットを作成することができると思います。

なんだかイマイチ勉強しにくいネットワーク部分ですが、ともに頑張りましょう!

〜余談〜

IPアドレスとは?

構成としては、ネットワークアドレス + ホストアドレス。

192.168.1.4

上記のIPアドレスだと「192.168.1」までがネットワークアドレス、「4」がホストアドレスとなる。
つまり、「192.168.1」まで分かればどこのネットワークに属しているかがわかる。
二進数で表すと、下記のような8bitのオクテット4つで表示される。

11000000.10101000.00000001.00000000	
サブネットマスクとは

サブネットマスクとは、そのIPで、いくつのIPアドレスを発行するかを決めるもの。

192.168.1.0/24

上記のような表示を「プレフィクス表示」という。
最後の「/24」はどこから範囲を許容するかを表しており、「/24」の場合は下記となる。

192.168.1.1 〜 192.168.1.255

つまり、/24は「192.168.1」までは固定で、残り8ビット(0〜255)までの範囲を許容している。
よくIP制限をかける際に、下記のような表記を見かける。

192.168.1.1/32

これはIPアドレスの完全一致を表すことになる。(余っているビットがないので)