コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB
サブネットマスクと CIDR
相手が同じ町内かどうかで、届け方が変わる
手紙を出すとき、同じ町内の相手なら自分で歩いて投函できます。遠方なら郵便局に預けるしかありません。ネットワークもまったく同じ判断を、通信のたびにしています。
相手が自分と同じ網の中にいるなら、間の機器に渡せばそのまま届きます。外にいるなら、外への出口である機器に預けるしかありません。この「同じ町内か」の線引きを決めているのがサブネットマスクです。
番号の上何ビットまでが町名か
IP アドレスは、上位のビットが「どの網か」を、残りが「その網の中の何台目か」を表します。どこで区切るかは番号を見ただけでは決まらないので、別に指定します。
192.168.1.50/24 と書いてあれば、上位 24 ビットまでが網を表す部分です。つまり 192.168.1 までが町名で、末尾の 50 が番地にあたります。同じ町内は 192.168.1.0 から 192.168.1.255 の 256 個ですが、先頭と末尾は特別な用途に予約されているので、機器に配れるのは 254 個です。
この /24 という書き方を CIDR 表記と呼びます。昔は番号の先頭ビットを見て A、B、C といったクラスに自動で振り分けていましたが、区切りが 3 通りしかなく無駄が大きいため、いまは使われていません。区切る位置を自由に決められるようになった、というのが CIDR の要点です。
/24なら網が 24 ビット、機器は 254 台まで/16なら網が 16 ビット、機器は 65,534 台まで
引いている 2 は、先頭と末尾の予約分です。
同じ町内かどうかの判定は、この区切り位置を使って行われます。自分の番号と相手の番号の両方から、網を表す部分だけを取り出して見比べ、一致すれば同じ町内です。/24 なら 192.168.1.50 と 192.168.1.200 は一致するので直接届けられます。192.168.2.10 は一致しないので、出口へ預けることになります。同じ 192.168 で始まっていても別の町内、という点が引っかかりやすいところです。
大きいまま使わず、わざわざ小さく割る
1 つの大きな網をそのまま使えばよさそうですが、実際は小さく割って使います。理由は 2 つあります。
1 つは、全員宛の呼びかけが届く範囲を狭めるためです。網の中には全員に一斉に届くタイプの通信があり、これは同じ網の中だけを飛び回ります。6 万台が同じ網にいると、この呼びかけだけで回線が埋まってしまいます。
もう 1 つは、境界を作るためです。経理の機器と開発の機器を別の網に置けば、その境目に関所を置いて通信を選別できます。同じ網の中にいると、間に何も挟めません。
クラウドでも同じ考え方が使われます。まず /16 の広い範囲を確保し、その中を用途ごとに /24 で切り分けていく設計が定番です。慣れるまでは /24 と /16 の 2 つだけ体に入れておけば、たいていの設定画面は読めるようになります。
割り方を間違えたときの痛みも知っておいてください。あとから機器が増えて /24 に収まらなくなっても、範囲を広げるには番号を振り直すしかありません。だから最初は使う予定より広めに確保します。逆に広げすぎると、別の網とつなぐときに範囲がぶつかって困ります。将来つなぐ可能性のある相手と重ならないよう、先に地図を決めておくのが実務の作法です。
復習ミニクイズ
/24 のサブネットで利用可能なホスト数は何台ですか