IPv6アドレスの種類を徹底解説

自分の機器にfe80::で始まるアドレスと2000:で始まるアドレスが同時に表示されている理由を整理しました。

IPv6アドレスがいくつもの種類に分かれている理由

IPv6はIPv4よりはるかに広いアドレス空間を持つよう設計されましたが、その分、あるアドレスがインターネット全体で通用するのか、それとも同じネットワーク内だけで通用するのかを、アドレスの形式そのものではっきり区別する必要がありました。そのため先頭のビットパターン(プレフィックス)によっていくつかの種類に分かれています。

グローバルユニキャストアドレス(2000::/3)

グローバルユニキャストアドレスは、IPv4における公人IP(グローバルIP)と同じ役割を果たし、インターネット上のどこからでも到達可能です。2000::/3の帯域から割り当てられ、インターネットプロバイダーが各家庭や企業にこの帯域のアドレスを配布することで、原則としてNATなしでも各機器が固有のグローバルアドレスを持てるようになっています。

ユニークローカルアドレス(fc00::/7)

ユニークローカルアドレス(ULA)は、fc00::/7の帯域に属し、組織や家庭の内部だけで使い、インターネットへ直接ルーティングされないという点でIPv4のプライベートIP帯域(192.168.x.xなど)に近い役割を果たします。ただしIPv4のプライベートIPと異なり、ランダムに生成された識別子を含んでいるため、2つの異なるプライベートネットワークを後から統合してもアドレスが衝突する確率は非常に低く設計されています。

マルチキャストアドレス(ff00::/8)

1つの送信元が特定のグループに属する複数の受信者へ同時にデータを送るときに使うアドレスで、ff00::/8の帯域が割り当てられています。IPv6ではIPv4にあったブロードキャスト(全体送信)の概念がなくなり、その役割の多くをマルチキャストが代わりに担っています。「すべてのノード」「すべてのルーター」といった特殊な予約グループアドレスもこれに含まれます。

ループバック・未指定アドレス(::1、::)

ループバックアドレス::1は、IPv4の127.0.0.1と同じ役割で、機器が自分自身と通信するとき(ローカルテストなど)に使われます。未指定アドレス::(0が128個続くアドレス)はまだアドレスが割り当てられていない状態を表すために使われ、実際の通信の送信元や宛先として指定されることはありません。

実際に自分の機器のIPv6アドレスを確認すると

ネットワーク設定画面でIPv6アドレスを確認すると、fe80::で始まるリンクローカルアドレスと2000:で始まるグローバルユニキャストアドレスが同時に表示されることがよくあります。これはエラーではなく、用途の異なる複数種類のアドレスを1台の機器が同時に持つというIPv6の設計上、自然な姿です。

エニーキャストアドレス

エニーキャストは、複数の機器に同じアドレスを割り当て、通信はそのうち「ネットワーク的に最も近い1台」に届く仕組みです。専用の形式があるわけではなく、ユニキャストと同じ範囲のアドレスを共有して設定します。DNSのルートサーバーなど、負荷分散や障害対策が必要なサービスで広く使われています。

プレフィックス長と/64の考え方

IPv6のサブネットは、通常/64の大きさで割り当てます。前半の64ビットがネットワーク部、後半の64ビットが機器を識別するインターフェイス部です。この前提は自動設定の仕組み(SLAAC)にも関わっています。家庭や企業は、プロバイダーから/56や/48のような大きめのブロックを割り当てられ、それを複数の/64のネットワークに分けて使うことが多いです。具体的な割り当てサイズはプロバイダーにより異なります。

インターフェイス部の作られ方とプライバシー

機器のアドレスの後半は、過去にはMACアドレスから作る方式が使われていましたが、同じ機器を長期的に追跡されやすい欠点がありました。現在の多くのOSは、ランダムな値や、ネットワークごとに安定した別の値を使い、さらに外部への通信用に一時的なアドレスを作って定期的に入れ替えます。そのため、1台の機器のアドレス一覧に似たアドレスが複数並んでも、故障ではありません。

そのほかの特別な範囲

ドキュメント用に予約された2001:db8::/32は、マニュアルや例示で使われ、実際のネットワークには割り当てられません。::ffff:0:0/96はIPv4アドレスをIPv6形式で表すための範囲で、移行期のソフトウェアで見かけることがあります。リンクローカルのアドレスをコマンドで指定する際は、fe80::1%eth0のように%のあとにインターフェイス名を付けて、どの回線かを示す必要があります。

よく見るマルチキャストアドレス

ff02::1は同じリンク上のすべての機器、ff02::2は同じリンク上のすべてのルーターを指します。ff02:は「リンクローカル範囲」を表し、ルーターを越えて転送されません。IPv6が近隣探索で使う「要請ノードマルチキャスト」は、IPv4のARPに近い役割を持ちます。ルーターアドバタイズメントによって、機器が自動的にネットワークの情報を受け取る仕組みも、これらのマルチキャストに支えられています。

もう解決すべきアドレス不足は残っていない

IPv4のおよそ43億個というアドレス数は、インターネット全体をプライベートIPとNATに頼らせるほど窮屈なものでした。IPv6のアドレス空間は、原則として地球上のすべての機器がそれぞれ固有のグローバルアドレスを持ってもまだ何倍もの余裕があるほど広大です。アドレスの種類分けが存在するのは、希少な資源を配給するためではなく、事実上無限にある供給を用途ごとに整理するためです。

アドレスの種類が分かるとトラブルシューティングが速くなる

fe80::は必ずローカル専用、fc00::やfd00::は内部専用、2000::はグローバルに到達可能、というようにプレフィックスを一目で見分けられるようになると、接続トラブルの診断がぐっと速くなります。本来グローバルアドレスが表示されるはずの場面でリンクローカルアドレスしか表示されていなければ、その機器がネットワークから正しくアドレスを受け取れていないことがすぐに分かるからです。

IPv4の用語との対応表

IPv4とIPv6の用語を対応させると理解しやすくなります。グローバルユニキャストは公開IP、ユニークローカルはプライベートIP、リンクローカルは169.254.x.xの自動設定アドレスに近い立場、ループバックは127.0.0.1に対応します。IPv4のブロードキャストはIPv6にはなく、マルチキャストに置き換わっています。ただし、IPv6では1台の機器が複数のアドレスを同時に持つのが普通なので、「1台に1つのIP」という感覚は捨てたほうが混乱しません。

設定や確認時によくある勘違い

fe80::だけが表示されている場合は、ルーターからの案内を受け取れていないことが疑われますが、IPv6を提供していない回線では、これが正常な状態です。ユニークローカルアドレスは外部から直接アクセスされないとはいえ、ファイアウォールの代わりにはなりません。一時アドレスが頻繁に変わるため、サーバーの公開用には固定のアドレスを別途用意する必要があります。IPv6でもアクセス制限は、ルーターやファイアウォールで明示的に設定してください。

よくある質問

IPv6でもプライベートIPは必要ですか?

厳密には必須ではありません。IPv6のアドレス空間はNATなしでグローバルユニキャストアドレスを直接割り当てられるほど広いですが、インターネットから到達できないようにしたい内部専用通信のためにユニークローカルアドレス(ULA)を使うことはできます。IPv4のプライベートIPのように必須の構成要素というわけではありません。

リンクローカルアドレスでインターネットに接続できますか?

いいえ。リンクローカルアドレスは同じネットワークセグメント内でのみ有効で、ルーターを越えて転送されないよう設計されているため、インターネット通信には使われません。インターネット接続には常にグローバルユニキャストアドレスが使われます。

fd00::で始まるアドレスはfc00::と何が違いますか?

ユニークローカルアドレスの範囲fc00::/7のうち、現在実際に使われるのは、ローカルで割り当てる形式のfd00::/8です。fc00::/8側は将来の用途のために予約されています。fd00::の次の40ビットをランダムに生成することで、他のネットワークと衝突しにくくします。

自分の機器のIPv6アドレスはどこで確認できますか?

WindowsではコマンドプロンプトでipconfigやGet-NetIPAddress、macOSやLinuxではifconfigやip addressで確認できます。ネットワーク設定の詳細画面にも表示されます。外部から見えるアドレスは、IPアドレス確認サイトでも調べられます。

アドレスの先頭の2000と2400の違いは何ですか?

どちらもグローバルユニキャストの範囲(2000::/3)内で、地域のレジストリや事業者に割り当てられるブロックの違いです。先頭の数字だけで安全性や品質が変わるわけではなく、割り当て元を見分ける目安になるだけです。