IPアドレスとプレフィックス長を入れると、ネットワークアドレス・ブロードキャスト・使えるホストの範囲を計算するツールです。2進数とAND演算も表示するので、手計算の答え合わせに使えます。
使い方
- 「計算」タブでIPアドレスを入力し、右のプルダウンでプレフィックス長を選びます。
192.168.10.100/26のように一括で貼り付けても、10.0.0.1 255.255.255.0のようにマスク表記を続けても認識します。 - ネットワークアドレス、ブロードキャスト、使えるホストの範囲と台数、ワイルドカードマスク、アドレスの種別(プライベート/グローバル、クラス)が表示されます。
- 下の「2進数とAND演算」で、ネットワーク部が青、ホスト部が赤で色分けされます。マスクとANDを取るとホスト部が 0 になる様子がそのまま見えます。
- 「分割」タブでは、あるネットワークを指定サイズで分割した一覧が出ます。「必要な台数から選ぶ」に台数を入れると、収容できる最小のサイズを自動で選びます。
- 「VLSM」タブにセグメント名と必要台数を並べて「割り当てる」を押すと、大きい順に詰めた割り当て表と、残った未使用領域が出ます。
何に使えるか
設計時のアドレス割り当てと、その場での確認が主な用途です。
- 拠点ごとの必要台数から、切り出すサイズを決める(VLSMタブ)
- 既存の設定値を見て、そのセグメントに空きがどれだけあるかを調べる
- 障害対応中に「このアドレスとゲートウェイは同じサブネットか」をすぐ判断する(「同じサブネット?」タブ)
- 設定値のレビューで、機器に付けたアドレスがネットワークアドレスやブロードキャストになっていないかを確かめる
もうひとつの用途が研修です。ネットワーク研修 IPアドレスとサブネット計算の演習問題は、このアプリで答え合わせができます。2進数の色分けとAND演算の表示があるので、暗算で出した答えがなぜそうなるのかを目で確認できます。先に自分で計算してから開くのが、研修での正しい使い方です。
技術メモ
HTML・CSS・JavaScript のみで、外部ライブラリもCDNも使っていません。計算はすべてブラウザ内で完結し、入力したアドレスがサーバへ送られることはありません。index.html 1枚で完結しています。
アドレスの計算は、ドット区切りの文字列を32bitの整数に直してから行っています。JavaScript のビット演算は符号付き32bitとして扱われるため、>>> 0 で符号なしに戻す処理を挟んでいます。マスク表記からプレフィックス長を求める際は、255.255.0.255 のような1が連続しないマスクを不正として弾いています。
VLSMの割り当ては、必要台数から各セグメントのサイズを決めたあと、大きい順に並べ替えてから先頭に詰めています。小さいものから割り当てると、あとで大きなブロックが取れなくなるためです。割り当て位置はブロックの境界に合わせる必要があるので、直前の割り当ての終端から境界まで切り上げてから配置しています。
台数からサイズを自動選択するとき、2台のセグメントには /31 ではなく /30 を割り当てるようにしました。/31 はネットワークアドレスとブロードキャストを持たない対向2台専用の特殊なプレフィックス(RFC 3021)で、機器が対応していない場合があるためです。手動で /31 や /32 を選んだ場合は、それぞれの扱いに合わせた結果を表示します。
動作環境の制約はとくにありません。スマートフォンでも使えますが、分割やVLSMの表は横に長いため、画面の広い端末のほうが見やすくなります。