1. トップ
  2. 新着ニュース
  3. IT
  4. IT総合

IPv6アドレスは先頭を見ればどんな種類かわかる

ASCII.jp / 2024年11月10日 10時0分

 前回(「あらためてIPv6基本のキ」)に続いてのIPv6の話。IPv6アドレスは、128bitという「広大な空間」になっているため、ビットパターンからアドレスの種類を判別できるようになっている。簡単に言えば、前半部分となる「プリフィックス」を見れば、アドレスの用途がわかる。

IPv6のアドレス表記方法

 128bitもあるIPv6のアドレスは、基本的には「プリフィックス」と呼ばれる上位部分と、「インターフェースID」と呼ばれる下位部分に分かれる。

IPv6
IPv6では、128bitのアドレスを表すのに16bitごとに区切って16進数表現する。このとき、10から15を表すアルファベットには、a~fの小文字を使う。そのほか、連続する32bit以上のゼロを1ヵ所だけ「::」と省略できる

 まずIPv6では、この128bitを16bitごとに分ける。これを小文字を使う16進数(0~9abcdef)で表現する。8つの16進数が作られるが、それをコロン「:」でつないでいく。これが基本である。

 さらに16進数表現の上位部分にゼロがあれば省略する。たとえば、16進数で「00ff」となるなら「ff」と表記する。このルールを使うと「0000」は「0」になる。

 もし0となる部分が32bit以上あれば、「::」として省略する。つまり、上記の例でいえば「~:0:0:~」となるなら「~::~」と表記できる。省略可能なのは1ヵ所のみで、複数箇所で省略が可能な場合には、「なるべく多くのビットを省略できる」「省略可能なビット数が同じ場合は上位にあるもの」という条件を使う。

 ちょっと面倒な話ではあるのだが、人間がこうした表記を作る必要はなく、基本的にはコンピュータがIPv6アドレスの表記にこのルールを使う。そのため、以下の2つだけ覚えればよい。

・「::」の部分はゼロが省略されているが1ヵ所のみ ・全体が128bitなので省略されているビット数は計算でわかる

 もう1つ覚えるべきなのは、プリフィクス部の表記方法である。プリフィック部は、確定しているプリフィック部分を前記のIPv6アドレス表記して、後ろにスラッシュをつけてプリフィックス部のビット数を表現する。

 たとえば「f800::/64」というプリフィックス表記は、

f800:0000:0000:0000

という64bitのビットパターンを表わし、

f800:0:0:0:xxxx:xxxx:xxxx:xxxx

というIPv6アドレスに対応する。後半の「xxxx:xxxx:xxxx:xxxx」がインターフェースID部である。

 プリフィックス部は、IPv4でいうネットワークアドレスに対応し、インターフェースID部は、ネットワーク内のホスト部に相当する。

 IPv4でも、個々のホストの話では32bitすべてを使ったホストアドレスを使うが、LAN(サブネット)全体の話では、ネットワークアドレスを使う。

 同じようにIPv6ではプリフィックス部を使ってLAN/サブネットを表示し、インターフェースIDを含めた128 bitのIPv6アドレスで個々のホストが対象となる。IPv4では、このときネットマスクや、CIDR(Classless Inter-Domain Routing)によるスラッシュで区切ったビット数表示が使われたが、IPv6では、プリフィックス表記を使うのだ。

覚えておきたいIPv6アドレスの種類や用途

 IPv6は128bitあるため、そのうちの一部のビットを使って、アドレスの種類や用途を表すことができる。こうしたビットは、IPv6アドレスの先頭部分にある。以下の表は、主なIPv6アドレスの種類とパターンを示したものだ。

IPv6

 IPv6には、大きく3種類のアドレスがある。特定のホストを指す「ユニキャスト」アドレス、データの受信を希望する複数のホストへの宛先となる「マルチキャスト」アドレス、そして、「最も近い」ホスト1台に到達する「エニーキャスト」アドレスである。このうち、ユニキャストアドレスとエニーキャストアドレスは、アドレスのビットパターン上の区別がない。

 IPv4では、マルチキャストアドレスは、「224.0.0.0」~「239.255.255.255」が使われたが、IPv6のマルチキャストアドレスは先頭プリフィックスが「ff00::/8」になっている。先頭が「ff」となっていたらマルチキャストアドレスである。

 基本的には、ユニキャストアドレスのパターンだけを理解し、先頭がffなのはマルチキャストアドレスだと思えばよい。その中で、まず覚えておくべきなのは、先頭が「2」から始まるグローバルアドレスだ。プロバイダとの接続でIPoEなどを選択したとき、プロバイダが割り当てる「プリフィックス」の先頭が2になっているなら、インターネットからアクセス可能なグローバルアドレスである。

 ただし、実際にアクセスが可能なのかどうかはルーター設定などに依存し、通常はルーターで外部からのアクセスをフィルター機能などで禁止している。

 IPv4では、プライベートアドレスや特殊アドレス以外はグローバルアドレスだったので、IPv4アドレスをパッと見て、グローバルアドレスかどうかを判定できるなら、少なくとも素人レベルは脱している。しかしIPv6では、先頭アドレスさえ見れば、グローバルかどうかが簡単にわかる。

 もう1つ覚えておくならリンクローカルアドレスで、こちらは「fe80」から始まる。MACアドレスを持つネットワークインターフェースには必ず定義されるので、IPv6アドレスを表示したときに必ず含まれる。

 リンクローカルアドレスは、LAN内の通信には使えてもLAN外の通信には使えない。また、リンクローカルアドレスは、ネットワーク・インターフェースのMACアドレスをベースにしてインターフェースIDが決まるため、ネットワーク・インターフェースごとに定義される。

 このため、リンクローカルアドレスには、対象となるネットワーク・インターフェースを区別するための「ゾーンインデックス」と呼ばれる情報をIPv6アドレスの後ろに「%」で区切っておく。ただし、ゾーンインデックスの表記方法はシステム側に任されており、Windowsの場合には、ネットワークアダプタが持つ「インターフェース・インデックス」(整数)を使う。Linuxなどではデバイス名(eth0など)を使う。

 あとは、ループバックアドレスの「::1/128」がある。これは、IPv4でいう「127.0.0.1」に相当し、自分自身を表す。また、ルーティングなどで使うデフォルトルートは、IPv4では「0.0.0.0」を使うが、IPv6では「::/0」と表記する(プレフィックス長がゼロであることに注意)。

 また、表記としてIPv4アドレスをIPv6形式で表現する「::ffff:0:0/96」ぐらいは記憶しておいた方がいいだろう。Windowsで自身のIPアドレスのうちどれを優先して使うのかは、「プリフィックスポリシー」で定められており、Windowsでは、レジストリまたはnetshコマンドで管理できる。現在のポリシーを見るだけなら、「netsh interface ipv6 show prefixpolicies」を実行すればよい。

IPv6

 このコマンドの出力では3番目の「::ffff:0:0/96」がIPv4アドレスを示す。これよりもIPv6アドレス(::1/128と::/0)の優先順位が高くなっているため、特に指定しないとIPv6アドレスを優先する。たとえば、pingコマンドも相手がIPv6アドレスを持っているなら、IPv6アドレスを宛先にする。

 IPv4では、32bitのアドレス空間にさまざまな機能を詰め込んだため、アドレスが何を意味するのかを知るには、多数のルールを理解する必要があった。しかしIPv6では、「先頭部分でアドレスの種類や用途」を判別という簡単なルールのみでアドレスを理解できる。特殊アドレスの数は多いものの、すべてを理解する必要はなく、本文で解説した数個のアドレスパターンのみわかっていれば十分である。

この記事に関連するニュース

トピックスRSS

ランキング

記事ミッション中・・・

10秒滞在

記事にリアクションする

記事ミッション中・・・

10秒滞在

記事にリアクションする

デイリー: 参加する
ウィークリー: 参加する
マンスリー: 参加する
10秒滞在

記事にリアクションする

次の記事を探す

エラーが発生しました

ページを再読み込みして
ください