Webサイト管理者のための2020年版“IPv6対応入門”第2回

IPv6アドレスの表記法から、特殊な意味を持つIPv6アドレス、ファイアウォール設定時の注意点まで

IPv6で使うアドレスは、IPv4とどこが同じでどこが違うのか

文●大塚昭彦/TECH.ASCII.jp 監修● 久保田 聡/日本ネットワークイネイブラー

  • この記事をはてなブックマークに追加
  • 本文印刷

IPv6アドレスにおける「ネットワーク」と「ホスト」の表し方

 ここまではIPアドレスの表記の違いを見てきたが、IPアドレスがIPネットワークで果たす役割そのものは、基本的にIPv4もIPv6も同じだ。

 IPアドレスは、送信するパケットのヘッダに宛先や送信元として記入する「ネットワーク上のユニークな(唯一の)住所」である。通信経路上にあるルーターは、パケットヘッダに書かれた宛先アドレスを参照してパケットの転送を行い、複数のルーターがバケツリレー式に転送を繰り返すことで、パケットはやがて宛先のホストまで届く。

 こうしたルーティングの仕組みを可能にするために、IPアドレスは「ホストが属するネットワークを表す部分」と「個々のホストを表す部分」で構成されている。インターネットのような巨大ネットワークの場合、個々のルーターがすべてのホストがどこにあるかを把握することは不可能だ。そこで、ルーターが宛先アドレスのネットワーク部分だけを確認して、自分の属するネットワークでなければそのまま次のルーターに転送する、効率的な仕組みを設けているわけだ。

IPネットワークにおけるルーター(ルーティング)処理の概要

 それでは、IPv4アドレスとIPv6アドレスでそれぞれ「ネットワークを表す部分」「個々のホストを表す部分」はどう表されるのか。具体的に見てみよう(わかりやすくするために、以下の例ではIPアドレスの「0」を省略していない)。

IPv4アドレス、IPv6アドレスの「ネットワークを表す部分」と「個々のホストを表す部分」

 IPアドレス末尾に付記されているプレフィックス長(「/24」と「/64」)の表記法や意味はどちらも同じだ。この例の場合、IPアドレスの先頭からそれぞれ24ビット/64ビットが「ネットワークを表す部分」であることを示している。

 ここからもわかるとおり、IPv6のプレフィックス長(ネットマスク)はIPv4と同じように可変長である。ただし現在は、一般的なネットワークでは64ビットのプレフィックス長が用いられることが多い(RFC7421)。これは、インタフェース識別子を自動生成するいくつかの標準的な方法で、64ビット長のインタフェース識別子が生成されるためだ。

※注:2001年発行のRFC3177では、アドレス管理機関(APNICなど)が複数のサブネットを持つエンドサイトに対して48ビットのプレフィックスを割り当て、続く16ビットをサブネットの識別に使う方式が推奨されていた(合計で48+16=64ビット長のネットワーク識別子になる)。しかし、現実にはさまざまな規模/種類のエンドサイトが存在するため、2011年発行のRFC6177ではこの方式だけを推奨することをやめ、実際の運用に沿って柔軟に考えるべきだとしている。

 一方で、IPv4アドレスでは「ネットワーク部」「ホスト部」と読んでいたそれぞれの部分が、IPv6アドレスでは「ネットワーク識別子」「インタフェース識別子」と呼ばれるようになった。本稿ではここまで後半部分を「個々のホストを表す部分」と表現してきたが、正確に言えばIPv6では「個々のネットワークインタフェースを表す」部分として扱われている。

※注:ネットワーク識別子を「(ネットワーク)プレフィックス」、インタフェース識別子を「インタフェースID(IID)」などと呼ぶこともある。

 なお、インタフェース識別子のビットを「すべて0」にしたIPv6アドレスは、そのネットワークそのものを表す「ネットワークプレフィックス」と呼ぶ。これはIPv4の「ネットワークアドレス」と同じ役割のものだ。

ループバックやマルチキャストなど、特殊な意味を持つIPv6アドレス

 IPv4と同様に、IPv6にも「ループバックアドレス」「リンクローカルアドレス」といった特殊な意味を持つIPアドレス(アドレスブロック)がいくつか用意されている(RFC4291)。IPv4と対比させるとわかりやすいので、簡単にまとめてみよう。

特殊な意味を持つIPv4アドレス、IPv6アドレス

 「ループバックアドレス」は、ホストやネットワークインタフェースが“自分自身”を指すIPアドレスであり、Webサイト管理者や開発者にとっては「ローカルホスト」としてなじみ深いもののはずだ。IPv4では慣用的に「127.0.0.1」が使われているが、IPv6では「::1/128」である。

 「リンクローカルアドレス」は、同一のリンク内(ローカルネットワーク内)の通信にのみ使えるIPアドレスであり、ルーターを越えた通信はできない。IPv4ではほとんど活用されていないが、IPv6ネットワークでは非常に重要な役割を担っている。

 たとえば、IPv6ネットワークの根幹を支える基本機能として、インタフェースがIPv6ネットワークに接続した際に、同一リンク内にあるルーターやローカルネットワークの範囲、IPv6アドレスの重複などを自動検出する「近隣探索プロトコル(NDP)」(RFC 4861)がある。この近隣探索を実行するためには、インタフェースがリンクローカルアドレスを持っていなければならない。そこで、IPv6対応のOSでは必ず、インタフェースの初期化時にこのリンクローカルアドレスを自動設定する。

 同様に、多数のノードにパケットを一斉送信する「マルチキャストアドレス」も、IPv6では重要な機能を担っている。IPv6では、IPv4に存在した「ブロードキャストアドレス」が存在せず、その役割がすべてマルチキャストアドレスに引き継がれている。そのため、こちらもネットワーク機能を利用するうえで必須の存在だ。

 なおマルチキャストアドレスには、「グローバル」「ローカル」などの、送出するパケットの到達範囲を示す「スコープ」という概念がある。IPv4マルチキャストのスコープは3種類だが、IPv6ではさらに細かく分類され、7種類が定義されている(RFC7346)。

 こうした特殊なIPv6アドレスについて、サイト管理者や開発者に特に覚えておいてほしいのは「IPv4と同じ名前でも役割が違うものがある」という点だ。具体的にはリンクローカルアドレスやマルチキャストアドレスのことだが、これらはIPv6ネットワークの根幹を支える役割を持っている。これらをIPv4と同じように考えてしまい、ルーターやファイアウォールでフィルタリング(ブロック)してしまうと、通信できないトラブルが発生する。この点は十分に注意してほしい(なお本文末の参考文献に、具体的なファイアウォール設定例を示した久保田氏のQiita記事を掲載してある)。

IPv4のプライベートアドレスは「ユニークローカルアドレス」

 なおIPv4には、ローカルサイト内で自由に利用できるプライベートアドレス(「192.168.0.1」など)がある。IPv6でそれに相当するものは「ユニークローカルアドレス(ULA)」と呼ばれ、「fc00::/7」のアドレスブロックが割り当てられている(RFC4193)。

IPv4のプライベートアドレス、IPv6のユニークローカルアドレス(ULA)

 前出のリンクローカルアドレスとの違いは、ユニークローカルアドレスがルーターを越えて他のネットワークとの通信もできることだ。インターネット経由での通信はできないが、たとえば企業内で複数のネットワーク(サブネット)がある場合に、ULAを使ってそれらの間の通信を行うことができる。これもIPv4のプライベートアドレスと同じである。

 ただし、IPv4ではLANを構成する際にプライベートアドレスの使用がほぼ必須だったが、前述のとおりIPv6では各ホスト(インタフェース)が必ずリンクローカルアドレスを持っており、サブネット内の通信ができる。そのため、これまでIPv4でプライベートアドレスを使ってきた環境を、すべてIPv6のユニークローカルアドレスに置き換えなければならないわけではない。IPv4のプライベートアドレスとは若干位置づけが異なることは覚えておきたい。

 なお、前述した特殊なIPアドレスとユニークローカルアドレス以外は、すべて「グローバルアドレス(GUA)」である。その位置づけはIPv4のグローバルアドレスと同じだ。

過去記事アーカイブ

2023年
01月
02月
03月
2022年
01月
02月
03月
04月
05月
06月
08月
09月
10月
11月
12月
2021年
01月
02月
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2020年
03月
04月
05月
06月
07月
08月
09月
10月
11月
12月
2012年
02月
2011年
05月
07月
2010年
08月
09月