サブネットマスクを頭の中で計算するのをやめて、人生を取り戻す方法
どのチームにも、「/26のアドレス数は?」と聞くと電卓のような速度で答え、IPアドレスが特定のネットワーク範囲に含まれているかどうかを即座に判断できる人がいます。私はそういう人間ではありません。ネットワークを扱う必要があるたびに、Pythonを開いてビットの操作を始めます。それはcidr.xyzに出会うまででした。
これは一体何なのか
cidr.xyzは、yuvadmという開発者が作成したCIDR計算機兼サブネット可視化ツールです。このプロジェクトはしばらく前から存在しています:リポジトリは2015年12月に作成され、それ以来約850スターと238フォークを獲得しています。サービス自体はcidr.xyzで公開されており、完全にブラウザ上で動作します。
アイデアは驚くほどシンプルです:IPアドレスとマスク(CIDR表記または従来の255.255.255.0形式)を入力すると、そのペアから抽出できるすべての情報がページ上に即座に表示されます。入力直後の最初の行は、設定ファイルに直接貼り付けられる使用可能なCIDR接尾辞です。
計算機が表示するもの
例を使って説明します。マスク/22でアドレス10.0.13.37を入力します。出力は以下の通りです:
- ネットワークアドレスとブロードキャストアドレス
- 最初と最後の使用可能ホストアドレス
- サブネット内のホスト数
- ビット単位のアドレスとマスク(8ビットずつ)
- ワイルドカードマスク(ACLなしで書けないあの
0.0.3.255) - 「全範囲」形式 — pfSenseやCisco設定でおなじみの文字列
- 10進数形式のバイナリマスク
これはあらゆるipcalcの説明のように聞こえますが、cidr.xyzを сотню の類似ツールと差別化する一つの特徴があります — それは可視化です。入力フィールドの下には、ビットグリッドが描画されます:アドレスの32ビットとマスクの32ビットが、オクテットごとに分割されています。ネットワークとホストを担当するビットは異なる色でハイライト表示されます。
そして、そこに理解の瞬間が訪れます。以前は、/22は22ビットがネットワークビットであることを知していましたが、それを頭の中で抽象的な知識として保持していただけでした。cidr.xyzでは、マスクを/24から/21にドラッグすると、ネットワーク部とホスト部の境界が跳ね回るのが見えます。なぜ10.0.12.0が10.0.13.37/22ネットワークを意味するのかがすぐに理解できます — 3番目のオktetet 13のバイナリは00001101であり、/22マスクでは3番目のオktetetの上位6ビットがネットワークに固定され、残りの6ビットがホストに割り当てられます。こんな「なるほど、そういうことか」という感覚をくれる表は他にはありません。
誰が使うべきか
第一に、面接や資格試験の準備をしている人々です。VLSMやネットワーク分割に関する質問はCCNAに出題され、ビット演算の理解は本当に必要です。
第二に、設定ファイルを扱う管理者やSREです。ACLのワイルドカードマスクが正しく計算されているかを素早く確認したり、IPアドレス範囲が実際には172.31.255.255で終わっていることを確認したり — これは10秒で終わる作業です。
第三に、月に一度ネットワークに出会い、月に一度その仕組みを忘れるその他すべての人々です。私もこのカテゴリに入ります。
内部構造
このプロジェクトはTypeScriptで書かれており、ReactとNext.jsを使用しています。READMEは最小限で極端です — たった2セクション — しかし、ローカルコピーを実行するには十分です:
npm install
npm run dev
その後、ツールはlocalhost:3000で利用可能になり、コードを読み込んだり、自分用にカスタマイズしたりできます。例えば、ある数で分割する場合のサブネット数計算を追加することを本気で考えていました。こんなケースは稀ですが、コードベースが非常にコンパクトなので、夕方にプルリクエストを上げることも可能です。
デプロイは自動化されています:masterブランチがCloudflare Workersを通じて展開されます。MITライセンスなので、必要であればフォークしたり、どこかに埋め込んだりできます。
少しの批判
蜂蜜の樽にも少量のだらしが必要です。機能はIPv4向けに調整されています — 計算機はIPv6アドレスを受け入れません。あなたがfd00::/8の世界にいるなら、このツールは役に立ちません。バイナリ可視化も時に圧倒的になることがあります:点滅するビットテーブルを一瞥しただけでは、間違った場所にたどり着きやすいです。そしてそう、850スターは100万ではありません — プロジェクトは狭い範囲で知られていますが、忘れられたわけでもありません:masterブランチへの最後のコミットは最近で、リポジトリは生きています。
試す価値はあるか
絶対にそうです、もしあなたが:ネットワークの面接準備をしているなら;ネットワーク機器の設定ファイルを作成しているなら;サブネットマスクがアドレス空間をどのように分割するかを視覚的に理解したいなら。ただ翻訳者の隣にブックマークとしてcidr.xyzを追加してください — きっと役に立ちます。
そして、もっと欲しいなら、リポジトリをフォークしてIPv6サポートを追加してください。コードのコンパクトさを考えると、完全に週末にできるタスクです。
関連プロジェクト