2026年6月5日

2026年6月5日

CIDR と VLSM の関係|違い・共通点とサブネット設計の例

CIDR と VLSM は、どちらも「クラス(A・B・C)に縛られず、プレフィックス長(/24 などの数字)でネットワークの大きさを決める」という同じ考え方から生まれた技術です。違いは使う向きで、VLSM は手元のネットワークを大きさの違うサブネットに細かく分ける技術、CIDR はアドレスの割り当てと経路を大きくまとめる(集約する)技術です。この記事では、両者の関係を整理したうえで、実際のアドレス設計の例と、計算を検算する方法、設計でつまずきやすい点を解説します。

前提:クラスフルからクラスレスへ

かつての IPv4 は、アドレスの先頭のビットでクラスを決め、ネットワークの大きさを固定していました。クラス C なら /24(ホスト254台)、クラス B なら /16(約6万5千台)という具合です。300台のネットワークにはクラス C では足りず、クラス B では大きすぎてアドレスが大量に余る、という無駄が生じていました。

この無駄を解消するために、ネットワークの大きさをクラスではなくプレフィックス長で自由に決める「クラスレス」の考え方が広まりました。CIDR と VLSM は、どちらもこのクラスレスの考え方の上に立っています。

VLSM:1つのネットワークを大きさの違うサブネットに分ける

VLSM(Variable Length Subnet Mask、可変長サブネットマスク)は、1つのネットワークの中で、サブネットごとに異なるサブネットマスクを使う技術です。

対になるのが FLSM(固定長サブネットマスク)で、こちらはすべてのサブネットを同じ大きさで切ります。例えば 192.168.10.0/24 を FLSM で4つに分けると、すべて /26(ホスト62台)になります。ところが、拠点間をつなぐ回線のように2台しか使わないサブネットにも62台分を割り当てることになり、無駄が出ます。

VLSM では「100台の部署には /25、20台の部署には /27、2台の回線には /30」というように、必要な大きさに合わせて切り分けられます。

CIDR:アドレスの割り当てと経路をまとめる

CIDR(Classless Inter-Domain Routing)は、もともとインターネットの経路表の肥大化とアドレス枯渇への対策として1993年に規格化された仕組みです(RFC 1519、現在は RFC 4632)。中心になる考え方は2つあります。

  • クラスに縛られない割り当て: 組織には必要な大きさのブロック(/22 や /20 など)を割り当てる
  • 経路集約(スーパーネット化): 連続した複数のネットワークを、1つの短いプレフィックスとしてまとめて経路を広告する

例えば 10.1.0.0/24、10.1.1.0/24、10.1.2.0/24、10.1.3.0/24 の4つは、10.1.0.0/22 という1つの経路にまとめられます。ルーターの経路表が短くなり、処理が軽くなります。

両者の関係を整理する

観点 VLSM CIDR
主な目的 組織内のアドレスを無駄なく分ける アドレスの割り当てと経路の集約
方向 大きなブロックを小さく分ける 小さなブロックを大きくまとめる
使う場面 社内ネットワーク、VPC のサブネット設計 ISP からの割り当て、ルーティングの集約
共通点 プレフィックス長で大きさを表し、クラスを前提にしない 同左

つまり VLSM と CIDR は、同じ「クラスレス」という土台を、分ける方向と束ねる方向から使っている関係です。現在では「/24」のような表記そのものを「CIDR 表記」と呼ぶため、VLSM で設計したサブネットも CIDR 表記で書きます。言葉としては、VLSM を CIDR の考え方の一部(組織内での応用)として説明する資料もあります。

実務上、両者がつながるのは「VLSM で分けたサブネットを、上位のルーターではまとめて広告できるように並べる」という場面です。各拠点に連続したブロックを渡しておけば、拠点内では VLSM で細かく分けつつ、拠点の外へは CIDR で1本の経路にまとめられます。

設計例:192.168.10.0/24 を VLSM で分ける

次の4つのネットワークを、192.168.10.0/24 から割り当てる例です。

  • 営業部: 100台
  • 開発部: 50台
  • 会議室: 20台
  • ルーター間の接続: 2台

手順の基本は「必要な台数の多い順に、大きなブロックから割り当てる」です。小さいものから割り当てると、大きなブロックを置ける境界がなくなり、使えない隙間が生まれます。

  1. 営業部 100台 → ホスト数が100以上になる最小の大きさは /25(126台)。192.168.10.0/25(.0〜.127)
  2. 開発部 50台 → /26(62台)。192.168.10.128/26(.128〜.191)
  3. 会議室 20台 → /27(30台)。192.168.10.192/27(.192〜.223)
  4. ルーター間 2台 → /30(2台)。192.168.10.224/30(.224〜.227)

残りは 192.168.10.228/30、192.168.10.232/29、192.168.10.240/28 として、将来の追加に使えます。ホスト数は「2の(32−プレフィックス長)乗 − 2」で、2を引くのはネットワークアドレスとブロードキャストアドレスの分です。なお、ルーター間の接続には、両端の2台だけで使う /31(RFC 3021)を使える機器もあります。

拠点の外に対しては、この4つをまとめて 192.168.10.0/24 として広告すれば足ります。これが「中は VLSM、外へは CIDR で集約」の形です。

計算を検算する

手計算は境界の取り違えが起きやすいため、ツールで検算する習慣をつけてください。Python の標準ライブラリ ipaddress で確認できます。

import ipaddress

plan = ["192.168.10.0/25", "192.168.10.128/26", "192.168.10.192/27", "192.168.10.224/30"]
nets = [ipaddress.ip_network(p) for p in plan]

# 各サブネットの範囲と利用可能なホスト数
for n in nets:
    print(n, n[0], "-", n[-1], "hosts:", n.num_addresses - 2)

# 重なりがないかを確認
for i, a in enumerate(nets):
    for b in nets[i + 1:]:
        if a.overlaps(b):
            print("重複:", a, b)

# 連続したネットワークの集約(CIDR)
print(list(ipaddress.collapse_addresses(
    ipaddress.ip_network(f"10.1.{i}.0/24") for i in range(4))))
# -> [IPv4Network('10.1.0.0/22')]

ip_network() は、ホスト部が0になっていない値(例: 192.168.10.5/25)を渡すとエラーになるため、境界の書き間違いにも気づけます。

設計でつまずきやすい点

  • ルーティングプロトコルの対応: VLSM や CIDR の集約を使うには、経路情報にサブネットマスクを含めて伝える(クラスレスな)プロトコルが必要です。OSPF、BGP、RIPv2 などは対応していますが、古い RIPv1 はマスクを運ばないため使えません。
  • 不連続なサブネット: 同じ大きなネットワークから切り出したサブネットが、別のネットワークをはさんで離れた場所にあると、自動集約の設定によっては経路が正しく伝わりません。自動集約を無効にし、集約は手動で設計します。
  • 重複: 後からサブネットを追加したときに、既存の範囲と重なる失敗がよくあります。割り当て表を1か所で管理し、検算スクリプトで重複を確認します。
  • クラウドの予約アドレス: AWS の VPC では各サブネットで先頭4つと最後の1つ、計5つのアドレスが予約され、使えるのは計算上のホスト数より少なくなります(2026年10月現在)。クラウドごとに予約の数やサブネットの最小サイズが異なるので、各社のドキュメントを確認してください。
  • 余裕の持たせ方: ぎりぎりの大きさで切ると、台数が増えたときに隣のブロックと衝突します。将来の増加分を見込み、集約しやすい境界で余白を残しておきます。

まとめ

  • CIDR と VLSM は、どちらもプレフィックス長でネットワークの大きさを決めるクラスレスの考え方に基づく
  • VLSM は組織内で大きさの違うサブネットに分ける技術、CIDR は割り当てと経路の集約を担う技術
  • 設計は台数の多い順に大きなブロックから割り当て、外へは集約した経路で広告する
  • 計算は Python の ipaddress などで検算し、重複と境界の誤りを防ぐ
  • クラスレスなルーティングプロトコルとクラウドの予約アドレスにも注意する

お気軽にご相談ください

お見積りへ お問い合わせへ
▲