素早くサブネットマスク計算を行うコツ

ネットワーク サブネット計算

今回はネットワーク設計に不可欠なサブネットマスク計算を高速で行う方法をご紹介します。

そもそも、サブネットマスクって何者?

どこまでがネットワーク部で、どこからがホスト部かを分割した情報です。クラスのアドレスをそのまま割り当てるとIPアドレスが勿体ないので、マスクをかけて効率化します。

@see http://www.infraexpert.com/study/ip6.html

例えば、1つのネットワークに400台のホストを接続したいとします。クラスCでは1つのネットワークに最大「254台」までのホストしか接続できないので、クラスBのネットワークを採用する必要があります。しかしクラスBの場合、1つのネットワークに最大「65534」のホストを接続できますが、400台のホストを接続するのにクラスBのアドレスを使用するのはかなりIPアドレスの無駄です。そこでサブネットの出番。

今回の場合、先ずクラスCでは要件を満たせないのでクラスBを使用します。次に、クラスBの場合、1つのネットワークが大きいのでサブネット化をします。ホスト部が 8 ビットである場合、28 により 256 です。ホスト部が 9 ビットである場合 29 により512です。ネットワークアドレスとブロードキャストアドレスを差し引いて(-2)、ホスト部が9ビットなら最大「510台」のホストを接続できますし、無駄もありません。

@see http://www.infraexpert.com/study/ip6.html

192.168.11.1 , サブネットマスク255.255.255.0の場合

192.168.11.0がネットワーク部、192.168.11.1~254がホスト部となります。(※192.165.11.255はブロードキャストアドレスの為除く)

CIDR表記

192.168.11.1/24とも記述できます。CIDR表記といいます。

  • 255.0.0.0 ⇒ /8
  • 255.255.0.0 ⇒ /16
  • 255.255.255.0 ⇒ /24
  • 255.255.255.255 ⇒ /32

書き方が違っても同じ意味。ネットワーク構成図でお馴染みの表現なので覚えておきましょう。また、クラウドサービスを利用してネットワークを構築する場合はCIDR表記で設定するサービスが殆どです、必須の知識と言えます。

サブネットマスク計算のコツは簡単なパターンを覚える

覚えなければいけない数はそんなに多くないです。ゾロ目とかそういう簡単なのを覚えていきましょう。途中を忘れても、掛け算と同じで1つ覚えれば上下関係から正しい数を割り出せます。だから丸暗記と違って覚えやすいし、確かめ算も楽。

00000000

0000+0000

8bit部分を4bit+4bitに分けると覚えやすい!

前半4ケタ

128

128 64 32 16 8 4 2 1
1 0 0 0 0 0 0 0

192

128 64 32 16 8 4 2 1
1 1 0 0 0 0 0 0

224

128 64 32 16 8 4 2 1
1 1 1 0 0 0 0 0

240

128 64 32 16 8 4 2 1
1 1 1 1 0 0 0 0

16

128 64 32 16 8 4 2 1
0 0 0 1 0 0 0 0

48

128 64 32 16 8 4 2 1
0 0 1 1 0 0 0 0

112

128 64 32 16 8 4 2 1
0 1 1 1 0 0 0 0

240

128 64 32 16 8 4 2 1
1 1 1 1 0 0 0 0

後半4ケタ

8

128 64 32 16 8 4 2 1
0 0 0 0 1 0 0 0

12

128 64 32 16 8 4 2 1
0 0 0 0 1 1 0 0

14

128 64 32 16 8 4 2 1
0 0 0 0 1 1 1 0

15

128 64 32 16 8 4 2 1
0 0 0 0 1 1 1 1

上記を最低限覚えておきます。また、他のパターンも覚えればもっと計算が早くなります。

覚えるとどうなるのか

11110010の場合

前半1111の合算値が240であると覚えています。また、後半0010は2だということは2進数の並びからわかります。

11110010

= 1111+0010

= 240 + 2

= 242

上記のように高速計算できます。

00111111の場合

この場合前半0011は48、後半1111は15ということは覚えています。

00111111

= 0011+1111

= 48+15
= 63

素早く計算できるだけでなく、計算回数が少なくなるので精度があがります。

実際の計算例

  • IPアドレス:172.31.19.5
  • サブネットマスク:255.240.0.0

上記IPアドレスのサブネット番号(ネットワーク部)を求めてみましょう。

IPアドレス 172.31.19.5
サブネットマスク 255.240.0.0
サブネット番号 ?

2進数に変換する

IPアドレス 10101100 . 00011111 . 00010011 . 00000101
サブネットマスク 11111111 . 11110000 . 00000000 . 00000000

サブネット番号の計算では、上下で重複する1のみ採用する。(論理積)

10101100 . 00010000 . 00000000 . 00000000

上記になります。

これを数値に表すと

となり、サブネット番号は172.16.0.0となります。

IPアドレス 172.31.1.5
サブネットマスク 255.240.0.0
サブネット番号 172.16.0.0

このようにしてサブネット番号を求めることが出来ます。

より効率的にサブネット計算しよう

また、実際にサブネット番号を計算する場合、サブネットマスクの第3,第4オクテットが0ということは、IPアドレスの第3,第4オクテットも0になるので、0になるとわかっている部分は2進数に変換する必要がありません。

同じ理由で、サブネットマスクが255の場合は、同一オクテットのIPアドレスはサブネット番号の同一オクテットにそのまま代入できます。例題では、IPアドレス第1オクテットは172、サブネットマスクは255なので、サブネット番号に172がそのまま入ります。だから今回の場合は第2オクテットのIPアドレス31とサブネットマスクの240のみ考えれば良いのです。サブネットマスクとは?という理屈からすると当たり前な事ですが、ポイントとして抑えておきましょう。

サブネットマスク電卓ツール!

https://note.cman.jp/network/subnetmask.cgi

https://note.cman.jp/network/subnetmask.cgi

サブネットマスク計算を行ってくれる電卓もあります。サブネットマスクの意味を理解していれば、計算精度の高いツールを使うのは合理的。

先程の問題を入れてみよう!

簡単に割り出せました。便利ですね~!

お疲れ様です。

金広 優 (エンジニア)

この記事を書いた人:金広 優 (エンジニア)

システムガーディアン爆弾処理班。アクセス負荷対策やNginxへの移行案件が多いこの頃。IBM SoftLayerやAWSなどクラウド案件も多くなってきました。

この記事に関してのお問い合わせ
御連絡・ご返信は原則2営業日以内を予定しております。
お急ぎの場合は、お手数ですが下記電話でもご対応をしております。

システムガーディアン株式会社
受付時間:平日9:00~18:00
受付担当:坪郷(つぼごう)・加藤
電話:03-6758-9166