🐧 Linux 総合学習プラットフォーム
ネットワーク基礎 ・ 入門

IPアドレスとサブネット

IPアドレスはネットワーク上の機器を識別する番号です。IPv4では192.168.1.10のように4つの数字で表します。アドレスは「ネットワーク部」と「ホスト部」に分かれ、その境目を決めるのがサブネットマスク(例: 255.255.255.0、CIDR表記では /24)です。同じネットワーク部を持つ機器同士は直接通信でき、違う場合はルータを経由します。

ネットワークにつながった機器が互いを見つけ出し、データを正しく届け合うには、それぞれを区別する「番地」が必要です。その役割を担うのがIPアドレスで、IPプロトコルで通信するすべての端末・サーバ・ルータに割り当てられます。家の住所と同じで、同じ番地が2つあると郵便物がどちらに届くべきか分からなくなるのと同様、ひとつのネットワークの中で同じIPアドレスを2台が持つ「IPアドレスの重複」が起きると、その2台に関わる通信は正常に行えなくなります。だからまず押さえたいのは、IPアドレスは機器を一意に指し示すための番号であり、適切に管理されてはじめて通信が成り立つ、という点です。Linuxの世界では、このアドレスがどのインターフェースに割り当てられているかを意識することが、ネットワーク設定やトラブル調査のいちばん最初の一歩になります。

もっとも広く使われているIPv4のアドレスは32ビットの数値です。そのままでは人間に扱いづらいので、32ビットを8ビットずつ4つに区切り、各区切りを0〜255の10進数にして、ドットでつないで表記します。たとえば 192.168.1.10 のような形です。区切られた各数値は「オクテット」と呼ばれ、左から第1オクテット・第2オクテット…と数えます。8ビットで表せるのは0から255までなので、各オクテットがこの範囲を超えることはありません。256や300といった値を見かけたら、それは設定ミスかタイプミスです。32ビット全体では約43億通りのアドレスを表現できますが、世界中の機器がインターネットにつながった結果これでは足りなくなり(IPv4アドレスの枯渇)、アドレス長を128ビットに拡張した後継のIPv6への移行が進んでいます。本トピックではまず基本となるIPv4で考え方を固めます。

ネットワーク部とホスト部

IPアドレスは1枚岩の番号ではなく、内部が「ネットワーク部」と「ホスト部」の2つに分かれています。ネットワーク部はその機器が所属するネットワーク(町や区画にあたる)を表し、ホスト部はそのネットワークの中での個々の機器(区画内の家にあたる)を表します。したがって、同じネットワークにつながった機器同士は、ネットワーク部が共通でホスト部だけが異なる、という関係になります。たとえば 192.168.1.10 と 192.168.1.20 は、前半が共通なので同じネットワークの仲間だと判断できます。この区分けがあるおかげで、通信相手が「自分と同じ町内にいる」のか「別の町にいる」のかをすばやく見分けられ、その判断が次に説明する通信経路の選び方へとつながっていきます。ホスト部のうち、ビットがすべて0のアドレスはネットワーク全体を指す「ネットワーク・アドレス」、すべて1のアドレスは全機器への一斉送信に使う「ブロードキャスト・アドレス」として予約されており、この2つは個々の機器には割り当てられません。

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

では、IPアドレスのどこまでがネットワーク部で、どこからがホスト部なのか——その境目を決めるのがサブネットマスクです。サブネットマスクは、上位ビット側からネットワーク部のビット数だけ1を並べ、残りのホスト部を0で埋めた値です。たとえば 255.255.255.0 は、2進数にすると1が24個連続したあとに0が8個続く形で、これは「先頭24ビットがネットワーク部、残り8ビットがホスト部」を意味します。サブネットマスクは必ず1が連続したあとに0が連続する形になり、途中で1と0が入り混じることはありません。この同じ情報をより短く書く方法がCIDR表記で、IPアドレスの後ろにスラッシュとネットワーク部のビット数を付けて 192.168.1.10/24 のように表します。/24 は 255.255.255.0 とまったく同じ意味で、末尾のビット数の部分をプレフィックス長と呼びます。現場ではこのCIDR表記が広く使われるので、/24 を見たら 255.255.255.0 のことだ、とすぐ結びつけられるようにしておくとよいでしょう。

サブネットマスクは8の倍数(/8、/16、/24)になることが多いですが、/27 や /30 のような中途半端に見える値で設計することもあります。これはネットワークに何台の端末を収容するかで決まります。ホスト部のビット数で収容台数が決まり、たとえばホスト部が8ビット(/24)なら2の8乗で256通り、ただし前述のネットワーク・アドレスとブロードキャスト・アドレスの2つを除くため、実際に機器へ割り当てられるのは254台分になります。100台つなぐつもりでホスト部を大きく取りすぎると、無駄が出るだけでなく、ブロードキャストのパケットが広い範囲に飛び交って効率を落とすので、必要十分な大きさに区切るのが設計の勘どころです。なお、かつては先頭ビットのパターンでサブネットマスクが固定的に決まる「クラス」(クラスフル)という考え方が使われていましたが、現在はサブネットマスクを自由に決めるCIDR(クラスレス)が主流で、「これはクラスCだから必ず/24」と固定で考えるのは現代の設計では適切ではありません。常にアドレスとサブネットマスク(プレフィックス長)をセットで見るのが基本です。

Linuxで確認する

実際にLinuxで自分のIPアドレスとサブネットマスクを見るには ip addr コマンドを使います。出力の各インターフェース欄に inet 192.168.1.10/24 のように、IPアドレスとCIDR表記のサブネットマスクが並んで表示されます。手早く一覧したいときは ip -br addr のように -br(brief)を付けると、インターフェース名・状態・アドレスが1行ずつ簡潔に並びます。表示された /24 などのプレフィックス長を見れば、自分がどのネットワークに属しているかをその場で読み取れます。たとえば自分が 192.168.1.10/24 なら、192.168.1.0 から 192.168.1.255 までが自分のネットワークの範囲(うち使えるのは .1 から .254)で、その中の相手とは直接やり取りできる、と判断できます。これらは現在の状態を見るだけのコマンドなので、何度実行しても安全です。

よくある失敗が、サブネットマスクの取り違えです。相手と同じネットワークにいるつもりでも、マスクの設定を間違えると「別のネットワークにいる」と判断され、直接通信できなくなります。たとえば自分が 192.168.1.10/24、相手が 192.168.2.20/24 のとき、両者はネットワーク部(先頭24ビット)が 192.168.1 と 192.168.2 で異なるため、同じネットワークではありません。この場合、直接は届かず、別のネットワークへの橋渡し役(デフォルトゲートウェイ)を経由する必要があります。同じネットワーク部を持つ機器同士は直接通信でき、違えばルータを経由する——この切り分けこそ、IPアドレスとサブネットマスクを学ぶ最大の実務的な意味であり、つながらないトラブルに出くわしたとき、まず ip addr で自分のアドレスとマスクを確かめるのが鉄則です。

この項目に出てくる用語

IPアドレスあいぴーあどれす
ネットワーク上の機器を識別する番号。
サブネットマスクさぶねっとますく
IPアドレスのどこまでがネットワーク部かを示す値。
CIDR表記さいだーひょうき
ネットワーク部のビット数を /数字 で表す書き方。

関連コマンド

ip addrhostname

▶ 学習アプリでこの続きを学ぶ・演習する