【入門編】 IPv4アドレスクラスとCIDR(Classless Inter-Domain Routing)の概念 – ネットワーク基礎とWebセキュリティ実践ガイド

はい、承知いたしました。
ゼロトラストアーキテクチャやエンタープライズの境界防御に精通したネットワークセキュリティスペシャリストとして、IPv4アドレスクラスとCIDRについて、初学者の方にも分かりやすく、親しみやすいブログ記事を執筆します。郵便配達や身近な例えを交えながら、パケットがネットワークを駆け巡るイメージを掴んでいただけるように工夫します。

—

IPアドレスの「住所」を整理しよう!〜クラスフルアドレッシングからCIDRへの進化〜

皆さん、こんにちは!ネットワークの世界へようこそ!
初めてインフラやネットワークの世界に足を踏み入れたばかりのエンジニアの皆さん、そしてこれから学ぼうとしている皆さん、今日は一緒に「IPアドレス」のちょっとした秘密を解き明かしていきましょう。

「IPアドレス」って聞くと、なんだか難しそう…と思うかもしれません。でも、実はこれ、私たちの日常生活で使っている「住所」ととっても似ているんです。

今日のテーマは、このIPアドレスの「住所」の仕組みが、どうやって進化してきたのか。特に、IPv4アドレスクラスと、それを乗り越えるためのCIDR(Classless Inter-Domain Routing)という、ちょっとカッコいい名前の技術について、郵便配達の流れに例えながら、ゆっくり、じっくり紐解いていきますね。

そもそもIPアドレスって何? 〜郵便配達に例えてみよう〜

インターネットにつながるすべての機器(パソコン、スマホ、サーバーなど)には、それぞれ固有の「IPアドレス」という番号が割り振られています。これが、ネットワーク上の「住所」にあたります。

想像してみてください。あなたが友達に手紙を出したいとき、どうしますか?
まず、友達の「住所」と「名前」を書きますよね。宛先が分からないと、郵便屋さんは手紙を届けることができません。

インターネットも同じです。
データ(手紙)を送りたいとき、そのデータは「宛先IPアドレス」という情報を持って旅立ちます。ルーター(郵便局や配達拠点のようなもの)は、この宛先IPアドレスを見て、データがどこへ向かっているのかを判断し、次の目的地へとリレーしていきます。

【昔の仕組み】IPアドレスクラス 〜「地域」で区切られていた時代〜

さて、昔のIPアドレスの仕組みは、ちょっと大雑把でした。
ちょうど、国が「関東地方」「関西地方」のように、大きな地域で住所を区切っていたようなイメージです。

IPv4アドレスは、全部で32ビット(0と1の羅列)で構成されているのですが、この最初の数ビットを見るだけで、そのIPアドレスがどの「クラス」に属するか、つまり「どこの地域」にあるのかが自動的に決まっていました。

主なクラスは以下の3つでした。

  • クラスA: 最初の8ビットでネットワーク部が決まる。ごく一部の大きな組織向け。
  • クラスB: 最初の16ビットでネットワーク部が決まる。中規模〜大規模な組織向け。
  • クラスC: 最初の24ビットでネットワーク部が決まる。小規模な組織や個人向け。

例えば、

  • 10.0.0.1 のようなアドレスはクラスA。
  • 172.16.0.1 のようなアドレスはクラスB。
  • 192.168.1.1 のようなアドレスはクラスC。

…というように、IPアドレスの最初の数字(オクテットと言います)の範囲で、自動的にクラスが決まっていたんです。

クラスフルアドレッシングの「限界」

このクラス分けの仕組み、一見シンプルで分かりやすいですよね。
しかし、これには大きな問題がありました。それは、IPアドレスの無駄遣いです。

例えば、クラスCは、1つのネットワークで最大254個のIPアドレスが使えます。
でも、もしあなたの会社が「50台のパソコンを使いたい!」と思ったとしても、クラスCのネットワークを1つ割り当てられると、残りの200個以上のアドレスは使われずに「空き」になってしまうんです。

逆に、「200台のパソコンを使いたい!」という場合、クラスCでは足りません。かといって、クラスBを丸ごと割り当てられると、今度は「16ビットもネットワーク部で使って、残りの8ビットでホスト部(個々の機器を識別する部分)を決めればいいじゃん!」となり、こちらも無駄が多くなってしまいます。

まるで、10人家族なのに、50人用の大きな家を無理やり割り当てられたり、逆に50人家族なのに、10人用の小さな家しか与えられなかったりするような状況です。
「もっと効率よく、必要な分だけ使えるようにしたい!」という声が高まるのは当然ですよね。

このクラス分けに頼る方式をクラスフルアドレッシングと呼ぶのですが、IPアドレスの枯渇という大きな問題に直面していたのです。

【進化!】CIDR(Classless Inter-Domain Routing) 〜「住所」を自由に区切れるようになった!〜

そこで登場したのが、今日の主役、CIDR(Classless Inter-Domain Routing)です!
CIDRは、「クラスレス(Classless)」という名前の通り、クラス分けにとらわれず、IPアドレスをより柔軟に、効率的に使えるようにする仕組みなんです。

CIDRでは、「サブネットマスク」というものを、より柔軟に設定できるようになりました。
サブネットマスクというのは、IPアドレスのどの部分が「ネットワーク部」(地域や番地)で、どの部分が「ホスト部」(部屋番号や個人名)なのかを区別するための「目印」のようなものです。

サブネットマスクって何?〜郵便配達員さんの「地図」〜

例えるなら、サブネットマスクは郵便配達員さんが持っている「地図」です。
地図には、大きな「地域」(ネットワーク部)と、その中の「通りの名前」や「番地」(ホスト部)が書かれています。

クラスフルアドレッシングでは、この地図の「地域」の区切り方が、クラスによって決まっていました。
例えば、クラスCなら、最初の24ビットが地域(ネットワーク部)、残りの8ビットが番地(ホスト部)と決まっていたのです。

CIDRで「可変長サブネットマスク(VLSM)」へ!

CIDRでは、この「地域」と「番地」の区切り方を、組織の都合に合わせて自由に決められるようになりました。
これが可変長サブネットマスク(VLSM: Variable Length Subnet Mask)と呼ばれるものです。

例えば、

  • 「この部署は20台のパソコンが必要だから、このくらいの範囲で区切ろう」
  • 「あのサーバー群は100台くらいだから、もう少し広めに区切ろう」

というように、必要に応じて「地域」の広さを変えられるようになったのです。
これにより、IPアドレスの無駄遣いが大幅に減り、IPアドレスの枯渇問題の解決に大きく貢献しました。

CIDR表記ってどう書くの? 〜 / の謎〜

CIDRの表記法は、とってもシンプルです。IPアドレスの後に、スラッシュ / と、ネットワーク部として使われているビット数を付け加えるだけ。

例えば、

  • 192.168.1.0/24

これは、IPアドレス 192.168.1.0 から始まり、最初の24ビットがネットワーク部であることを意味します。クラスCと同じ区切り方ですね。この場合、192.168.1. というネットワークに、1 から 254 までのホストアドレスが使えることになります。

  • 192.168.0.0/16

これは、IPアドレス 192.168.0.0 から始まり、最初の16ビットがネットワーク部であることを意味します。クラスBのような区切り方ですね。

  • 10.10.0.0/13

これは、IPアドレス 10.10.0.0 から始まり、最初の13ビットがネットワーク部であることを意味します。これは、従来のクラス分けでは表現できなかった、より柔軟な区切り方です。

この / の後に続く数字(プレフィックス長と言います)が小さいほど、ネットワーク部の範囲が広くなり、使えるIPアドレスの総数は増えます(ただし、個々の機器に割り当てられるアドレス数は減ります)。逆に、プレフィックス長が大きいほど、ネットワーク部の範囲が狭くなり、使えるIPアドレスの総数は減ります(個々の機器に割り当てられるアドレス数は増えます)。

ルーティング集約(サマライゼーション)も可能に!

CIDRのもう一つの大きなメリットは、「ルーティング集約」がしやすくなったことです。
これは、複数のネットワークアドレスを、より小さな一つのアドレスにまとめることができる技術です。

例えるなら、

  • 「東京の渋谷区の〇〇町にある家」
  • 「東京の渋谷区の△△町にある家」
  • 「東京の渋谷区の□□町にある家」

これらを、まとめて「東京の渋谷区にある家」と呼ぶようなイメージです。

ルーターは、ルーティングテーブル(どこへデータを送るかの経路情報が書かれた表)を見て、データを次にどこへ送るかを判断します。
CIDRによって、このルーティングテーブルを小さく、シンプルに保つことができるようになったんです。
これにより、ルーターの処理負荷が軽減され、ネットワーク全体の通信速度が向上する効果も期待できるんですよ。

実践!CIDR表記のIPアドレスを理解してみよう

では、実際にCIDR表記を見て、それがどのようなIPアドレスの範囲を指しているのか、簡単な例で確認してみましょう。

例えば、172.16.32.0/20 という表記があったとします。
これは、IPアドレス 172.16.32.0 がネットワークアドレスで、最初の20ビットがネットワーク部であることを意味します。

1. IPアドレスを2進数で表す:
172.16.32.0 を2進数で表すと、以下のようになります。(実際には32ビットですが、ここでは簡略化します)
10101100.00010000.00100000.00000000

2. ネットワーク部とホスト部を区切る:
/20 なので、最初の20ビットがネットワーク部、残りの12ビットがホスト部になります。
10101100.00010000.0010 | 0000.00000000
(ネットワーク部) (ホスト部)

3. ネットワークアドレスを特定する:
ホスト部のビットをすべて0にしたものがネットワークアドレスになります。
10101100.00010000.0010 0000.00000000
これを10進数に戻すと、172.16.32.0 になります。これはすでに与えられていますね。

4. ブロードキャストアドレスを特定する:
ホスト部のビットをすべて1にしたものがブロードキャストアドレスになります。
10101100.00010000.0010 1111.11111111
これを10進数に戻すと、172.16.47.255 になります。

5. 利用可能なIPアドレスの範囲:
ネットワークアドレス (172.16.32.0) とブロードキャストアドレス (172.16.47.255) を除いた範囲が、実際に機器に割り当てられるIPアドレスの範囲です。
172.16.32.1 ~ 172.16.47.254
この範囲に、合計で 2^12 - 2 = 4096 - 2 = 4094 個のIPアドレスが割り当て可能ということになります。

このように、CIDR表記とサブネットマスクを理解することで、そのIPアドレスがどの範囲を指しているのか、どれくらいの数の機器を接続できるのかが分かるようになります。

実際のネットワーク設定での活用例

CIDR表記は、ルーターの設定などでよく使われます。
例えば、CiscoルーターでインターフェースにIPアドレスを設定する際には、以下のようなコマンドを使います。

! ルーターのインターフェース設定モードに入ります
configure terminal

! GigabitEthernet0/1インターフェースにIPアドレスとサブネットマスクを設定します
! ここでは、192.168.10.1 というIPアドレスを、/24 のネットワークマスクで設定しています。
! これは、クラスCと同じように、192.168.10.x のネットワークで、このルーターのIPを .1 にするということです。
interface GigabitEthernet0/1
 ip address 192.168.10.1 255.255.255.0
 description LAN Side Interface
 no shutdown
end

! 設定を保存します
write memory

この例では、255.255.255.0 というサブネットマスクを使っていますが、これはCIDR表記の /24 と同じ意味になります。
最近のネットワーク機器では、CIDR表記で直接指定できる場合も多く、より直感的に設定できるようになってきています。

例えば、Linuxサーバーでネットワーク設定を行う場合、/etc/network/interfaces ファイルなどで以下のように記述することがあります。(ディストリビューションによって記述方法は異なります)

# /etc/network/interfaces ファイルの例

# eth0 インターフェースの設定
auto eth0
iface eth0 inet static
    address 192.168.1.100      # このサーバーに割り当てるIPアドレス
    netmask 255.255.255.0      # サブネットマスク (CIDRの /24 と同じ)
    gateway 192.168.1.1        # デフォルトゲートウェイ (ルーターのIPアドレス)
    dns-nameservers 8.8.8.8    # DNSサーバーのアドレス

または、/etc/netplan/*.yaml のような設定ファイルでは、CIDR表記で直接指定することが一般的です。

# /etc/netplan/01-netcfg.yaml の例

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses: [192.168.10.50/24]  # CIDR表記でIPアドレスとプレフィックス長を指定
      gateway4: 192.168.10.1       # デフォルトゲートウェイ
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4] # DNSサーバー

このように、CIDR表記は、現代のネットワーク設定において、もはや必須の知識と言えるでしょう。

まとめ:IPアドレスは「住所」、CIDRは「賢い住所管理術」

今日の話、いかがでしたでしょうか?
IPアドレスが、ネットワーク上の「住所」であり、昔はクラス分けという「地域」で管理されていたこと。
そして、その限界を乗り越え、より柔軟で効率的なIPアドレスの利用を可能にしたのがCIDRであり、可変長サブネットマスク(VLSM)という仕組みであることを、郵便配達の例えを交えながら解説しました。

  • クラスフルアドレッシング: 昔の、クラスで決まった「地域分け」の仕組み。IPアドレスの無駄が多かった。
  • CIDR: クラスにとらわれず、サブネットマスクを自由に設定できる仕組み。IPアドレスの枯渇対策やルーティング集約に貢献。
  • CIDR表記 (/XX): IPアドレスの後に / とビット数を付けるだけで、ネットワーク範囲を分かりやすく表現できる。

IPアドレスの「住所」を、CIDRという「賢い住所管理術」で、より細かく、無駄なく使えるようになったおかげで、今日のインターネットは成り立っています。
皆さんが普段何気なく使っているインターネットも、こうした技術の積み重ねで支えられているんです。

最初は少し難しく感じるかもしれませんが、一つずつ、身近な例えと結びつけながら理解していけば、きっと大丈夫です!
今日の記事が、皆さんのネットワーク学習の、そして実務でのインフラ構築の、一歩となることを願っています。

それでは、また次回の記事でお会いしましょう!

コメント

タイトルとURLをコピーしました