keisoku

IPアドレスとサブネットマスクの基本

「192.168.10.100/26」のような表記は、IPアドレスとネットワークの大きさを同時に表しています。ここでは2進数の見方から始めて、サブネットマスクとCIDR表記、ネットワークアドレスや使えるホスト数の求め方を、実際の数値で順に確かめます。

最終更新:

IPv4アドレスは32ビットの数を4つに区切ったもの

IPv4アドレスは、0と1が32個並んだ32ビットの数です。人が読みやすいように8ビットずつ4つに区切り、それぞれを10進数に直してドットでつないだものが、普段目にする「192.168.10.100」のような表記です。区切られた1つ1つをオクテットと呼び、8ビットで表せるのは0〜255なので、各オクテットも0〜255の範囲に収まります。

たとえば192.168.10.100を2進数で書くと、11000000.10101000.00001010.01100100となります。192は128+64なので11000000、168は128+32+8なので10101000、10は8+2なので00001010、100は64+32+4なので01100100です。

32ビットで表せるアドレスは全部で2の32乗、つまり4,294,967,296個です。このアドレスを1つの整数として見ることもでき、192.168.10.100は10進数で3232238180、16進数ではc0a80a64になります。2進数・10進数・16進数の相互変換に慣れておくと、次に説明するサブネットの計算がずっと見通しやすくなります。

サブネットマスクとCIDR表記

IPアドレスの32ビットは、前半の「ネットワーク部」と後半の「ホスト部」に分かれます。ネットワーク部はどのネットワークに属しているかを、ホスト部はそのネットワークの中のどの機器かを表します。どこで区切るかを示すのがサブネットマスクです。

サブネットマスクは、ネットワーク部を1、ホスト部を0にした32ビットの数です。255.255.255.0は2進数で11111111.11111111.11111111.00000000なので、先頭24ビットがネットワーク部、残り8ビットがホスト部になります。サブネットマスクは必ず左から1が連続し、その後に0が続く形になります。

この「先頭から何ビットがネットワーク部か」をスラッシュの後ろに書くのがCIDR表記です。/24は255.255.255.0、/26は255.255.255.192、/20は255.255.240.0と同じ意味になります。/26の最後のオクテットは11000000で、128+64=192だからです。

  • /8 = 255.0.0.0(総アドレス数 16,777,216)
  • /16 = 255.255.0.0(総アドレス数 65,536)
  • /24 = 255.255.255.0(総アドレス数 256)
  • /26 = 255.255.255.192(総アドレス数 64)
  • /30 = 255.255.255.252(総アドレス数 4)

ネットワークアドレス・ブロードキャスト・ホスト数の求め方

ネットワークアドレスは、IPアドレスとサブネットマスクをビットごとにAND(両方1のときだけ1)した値で、ホスト部をすべて0にしたアドレスです。ブロードキャストアドレスは、反対にホスト部をすべて1にしたアドレスで、そのネットワーク内の全機器宛ての通信に使われます。

この2つは機器に割り当てられないため、通常のサブネットで使えるホスト数は「2の(32−プレフィックス長)乗 − 2」になります。/24なら2の8乗の256から2を引いた254台、/26なら64から2を引いた62台です。

192.168.10.100/26で計算してみます。最後のオクテット100は2進数で01100100、マスクの最後のオクテットは11000000です。ANDをとると01000000、つまり64なので、ネットワークアドレスは192.168.10.64です。ホスト部の6ビットをすべて1にすると01111111で127となり、ブロードキャストは192.168.10.127です。使えるのは192.168.10.65から192.168.10.126までの62個になります。

もう1つ、172.20.5.10/20の例です。マスクは255.255.240.0で、第3オクテットの5(00000101)と240(11110000)のANDは0なので、ネットワークアドレスは172.20.0.0、ブロードキャストは172.20.15.255です。総アドレス数は2の12乗の4,096、使えるホスト数は4,094になります。

例外として、/31は2アドレスを機器同士の1対1接続に使う設定があり、/32は単一ホストを表します。これらでは2を差し引かない扱いが一般的です。

サブネットを分割するときの考え方

1つのネットワークを小さく分けることをサブネット化といいます。プレフィックス長を1増やすごとにネットワークの数は2倍、1つあたりのアドレス数は半分になります。

たとえば192.168.10.0/24を/26に分けると、2ビット増えるので4つのサブネットになります。範囲は192.168.10.0〜63、64〜127、128〜191、192〜255で、それぞれ62台のホストを収容できます。分割後のネットワークアドレスは、必ず1ブロックの大きさ(この場合64)の倍数から始まります。

必要なホスト数からプレフィックス長を決めるときは、「台数+2」以上になる最小の2のべき乗を探します。30台なら32以上が必要なので2の5乗、ホスト部5ビットで/27(使えるのは30台)です。将来の増設を見込むなら、1段大きい/26にしておくといった余裕の持たせ方も考えられます。

プライベートアドレスと特別な範囲

家庭や社内のネットワークでは、インターネット上で直接使われないプライベートアドレスが使われます。範囲はRFC 1918で次の3つが定められており、ルーターのNATによってグローバルアドレスに変換されてからインターネットに出ていきます。

このほか、127.0.0.0/8は自分自身を指すループバック(127.0.0.1が代表例)、169.254.0.0/16はDHCPでアドレスを取得できなかったときに自動で割り当てられるリンクローカルアドレスです。100.64.0.0/10は通信事業者のNAT(CGNAT)用の共有アドレスで、RFC 1918のプライベートアドレスとは別枠です。

実際の計算は「IPアドレスの計算(サブネット)」ツールで、IPアドレスを入力し、プレフィックス長を/0〜/32の一覧(サブネットマスク併記)から選ぶと、ネットワークアドレス、ブロードキャスト、ホスト範囲、使えるホスト数、ワイルドカードマスク、各値の2進表記をまとめて確認できます。プライベートアドレスやループバックの判定も参考表示されます。オクテット単位の2進数・16進数の変換を個別に確かめたいときは「N進数の相互変換」ツールが便利です。

  • 10.0.0.0/8(10.0.0.0〜10.255.255.255、16,777,216個)
  • 172.16.0.0/12(172.16.0.0〜172.31.255.255、1,048,576個)
  • 192.168.0.0/16(192.168.0.0〜192.168.255.255、65,536個)

この記事で使える計算ツール