CIDRとは?IPv4やIPv6のアドレス管理とネットワーク設計への活用
はじめに
CIDRという言葉を聞くと、ネットワーク関連の専門的な話に感じるかもしれません。 しかし実は、プログラミング初心者でも理解できるように整理すれば、それほど難しくないテーマです。 この記事では、 CIDR (Classless Inter-Domain Routing) の基本的な意味や、IPv4とIPv6におけるIPアドレスの扱い方などを平易な言葉で説明していきます。
IT業界に興味がある皆さんは、どこかでネットワークやサーバーの設定を扱う機会もあるかもしれません。 そのときに、CIDRの考え方を押さえておくとスムーズに作業を進めやすいです。 まずはCIDRの基本から見ていきましょう。
CIDRの基本概念
CIDRはIPアドレスを効率的に割り当てる仕組みです。 従来のクラスベースのアドレス管理を廃止し、柔軟にネットワークを分割できるように設計されました。 例えば、192.168.0.0/24という表記を見かけたことがある方もいるのではないでしょうか。
この「/24」の部分はプレフィックス長を示しています。 数字が大きいほどネットワーク部分が長くなり、ホストとして利用できるビットが少なくなります。 CIDR表記が導入されたおかげで、ネットワークを小さく区切りたい場合や大きく使いたい場合に対応しやすくなりました。
CIDRが登場した背景
IPアドレスの枯渇やネットワークの増加に伴い、従来のクラスA、クラスB、クラスCといった区分けだけでは非効率になってしまいました。 例えばクラスCは255.255.255.0のサブネットマスクが基本ですが、実際にはもっと小さく分割したいケースが多々あります。 このような課題を解決する方法として登場したのがCIDRです。
CIDRによって可変長のサブネットマスクを使えるようになりました。 そのため、大きなネットワークを必要な単位で小さく区切って使うことが可能になったわけです。 結果的に、IPアドレスを無駄なく割り当てることができるようになりました。
IPアドレスの構造とサブネットマスク
IPv4アドレスは32ビット、IPv6アドレスは128ビットで構成されています。 これらをネットワーク部分とホスト部分に分けて使うのがサブネットマスクの役割です。 CIDRでは、このサブネットマスクを「/プレフィックス長」という表記で表します。
たとえば/24
は上位24ビットがネットワーク部という意味です。
一方で/16
や/28
といったように、環境や用途に応じて柔軟に設定できます。
この表記が理解できると、各アドレスがネットワーク内でどういった役割を持つのかを把握しやすくなります。
CIDRを使うメリット
CIDRを使うことで得られるメリットは、主に以下の4つです。
- IPアドレスを細かく管理できる
- ルーティングの効率が上がる
- 大規模ネットワークを分割しやすい
- サブネット設計を柔軟に行える
これによって、ネットワークの増設や縮小が発生しても、設定を柔軟に変更しやすくなります。 また不要なホスト部分を削減できるため、無駄なIPアドレスの浪費を防ぐことが可能です。
IPv4とIPv6への適用
CIDRはIPv4だけでなく、IPv6でも利用されています。
IPv6はアドレス空間が広いですが、それでもCIDRを活用すれば複雑なネットワーク構成に対応しやすくなります。
IPv6の場合は/64
などのプレフィックスがよく使われますね。
とはいえ、IPv4とは表記や細かい運用ルールが異なる部分もあるため、最初は戸惑うこともあるかもしれません。 ただ根本的な仕組みは同じですので、IPv4で理解した内容をIPv6にも生かせるでしょう。
IPv6アドレスは128ビットという大きさがあり、圧倒的に広い空間をカバーします。 とはいえ大きいからといって、適当に割り当てると運用管理が面倒になりがちです。 そこでCIDRの考え方を取り入れることで、必要に応じたサイズのネットワークを設計しやすくなります。
実務で役立つ具体例
実務でサーバーを構築するときは、サブネットを指定する場面が多いです。 例えばAWSやGCPといったクラウドサービスでもVPC(Virtual Private Cloud)を作成するときに、CIDRブロックを決める必要があります。 以下のようなPythonのコード例を見ると、CIDRを使うイメージが湧きやすいでしょう。
import ipaddress network = ipaddress.ip_network('192.168.10.0/24') print("ネットワークアドレス:", network.network_address) print("ブロードキャストアドレス:", network.broadcast_address) print("使用可能なIPアドレス数:", network.num_addresses) host_list = list(network.hosts()) print("最初のホストアドレス:", host_list[0]) print("最後のホストアドレス:", host_list[-1])
この例では、ip_network
を使って指定したCIDRの情報を取得しています。
プログラムでIPアドレスを扱うときに、CIDRを理解しているとホスト数やネットワーク情報をスムーズに計算できます。
コマンドラインでの活用例
実務では、コマンドラインでCIDRに関連する情報を確かめることも多いです。 特にネットワーク設定のトラブルシュートを行う際には、以下のようなコマンドを使うことがあります。
ipcalc
IPv4およびIPv6のCIDR情報を簡単に確認できます。
たとえば ipcalc 192.168.1.0/24
とすると、ネットワーク部やホスト部を一覧できます。
ip
Linux系OSのネットワーク設定を確認するときに便利です。
ip addr show
の結果を見れば、どのインタフェースがどのCIDRで設定されているか分かります。
ifconfig
旧来のコマンドですが、一部の環境で使用されるケースがあります。
ifconfig -a
などで、インタフェースの情報をまとめて取得できます。
こういったコマンドを利用すると、設定が誤っていないか、サブネットが正しく割り当てられているかをすぐに確認できます。
まとめ
今回は、CIDRの基本から実務での活用まで簡単に見てきました。 IPアドレスはインターネットや社内ネットワークを支える基盤であり、CIDRの仕組みを理解しておくとスムーズに環境構築できるでしょう。 慣れてくると、CIDR表記だけでネットワーク構成をイメージできるようになります。
必要に応じてIPv4やIPv6のプレフィックス長を調整し、最適なアドレス設計を行うのがポイントです。 複雑に感じるかもしれませんが、まずは小規模のサブネットから始めて、実践の中で掴んでいくと良いでしょう。 CIDRを知っておけば、皆さんのネットワーク関連の理解が一段と深まるのではないでしょうか。