ping6.net
基礎

IPv6アドレスタイプ:グローバル、リンクローカル、マルチキャストの解説

さまざまなタイプのIPv6アドレスを学びます:インターネット用のグローバルユニキャスト、LAN用のリンクローカル、グループ用のマルチキャストなど。

ping6.net2024年1月20日3 min read
IPv6アドレスタイプユニキャストマルチキャストリンクローカルエニーキャスト

IPv6アドレスは、パケットの配信方法においてIPv4とは異なる動作をします。これらの違いを理解することは、ネットワークの問題をデバッグしたり、システムを設計したりする際に重要です。

TL;DR - 要点まとめ

重要ポイント:

  • IPv6はユニキャスト(1対1)、マルチキャスト(1対多)、エニーキャスト(1対最近接)を使用 — ブロードキャストなし
  • グローバルユニキャスト(2xxx/3xxx)はインターネット用、リンクローカル(fe80::)はローカルセグメント用、ULA(fd00::)はプライベートネットワーク用
  • マルチキャスト(ffxx::)がブロードキャストを置き換え、要請ノードマルチキャストが近隣探索を効率化
  • リンクローカルアドレスにはfe80::1%eth0のようなゾーンIDが必要でインターフェイスを指定

ジャンプ: グローバルユニキャスト | マルチキャスト | クイックリファレンス

3つの配信方法#

IPv6は3つの基本的な配信モデルを使用します:

  • ユニキャスト:1つの送信者から1つの受信者へ。特定のホストと通信する標準的な方法です。
  • マルチキャスト:1つの送信者から複数の受信者へ。グループ通信に効率的です。
  • エニーキャスト:1つの送信者からグループ内の最も近い受信者へ。負荷分散と冗長性に使用されます。

IPv6にブロードキャストはありません

IPv6はブロードキャストを完全に排除しました。IPv4がすべてのホストにブロードキャストする場所(ARPリクエストがネットワークをフラッディングするなど)では、IPv6はターゲット化されたマルチキャストを使用します。これにより、不要なトラフィックが削減され、ネットワーク効率が向上します。

ユニキャストアドレス#

すべてのユニキャストアドレスは、正確に1つのネットワークインターフェイスを識別します。そのアドレスにパケットを送信すると、正確に1つのホストがそれを受信します。

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

これらは、インターネット全体でルーティング可能なパブリックIPv6アドレスです。アドレスが2または3で始まる場合、それはグローバルユニキャストアドレスです。

2001:0db8:85a3:0000:0000:8a2e:0370:7334
│         │         │              │
│         │         │              └─ インターフェイスID(64ビット)
│         │         └──────────────── サブネットID(16ビット)
│         └────────────────────────── サイトプレフィックス(48ビット)
└──────────────────────────────────── グローバルルーティングプレフィックス

典型的な構造は、/48割り当てを次のように分割します:

ビットコンポーネント目的
0-47グローバルルーティングプレフィックスISPまたはRIRからの割り当て
48-63サブネットIDサイトごとに65,536サブネット
64-127インターフェイスIDMACアドレスから生成またはランダム化

実際のプロバイダーは通常、サイトに/48、中小企業に/56、または住宅ユーザーに/64を割り当てます。各/64サブネットには18京個のアドレスが含まれているため、/64境界でサブネット化します。

ドキュメンテーションアドレス

プレフィックス2001:db8::/32はドキュメンテーションと例のためにのみ存在します。これらのアドレスを本番環境で使用しないでください。RFCのすべての例が2001:db8を使用するのは理由があります。実際のネットワークと競合しません。

リンクローカルアドレス(fe80::/10)#

すべてのIPv6インターフェイスは、IPv6を有効にすると自動的にリンクローカルアドレスを生成します。これらのアドレスはローカルネットワークセグメントでのみ機能し、ルーティングされることはありません。

fe80::1
fe80::a1b2:c3d4:e5f6:7890

リンクローカルアドレスは、IPv6が機能するために必須です。近隣探索、ルーター要請、その他のコアプロトコルにはそれらが必要です。インターフェイスにグローバルアドレスがない可能性がありますが、常にリンクローカルアドレスを持ちます。

ゾーンID:インターフェイスの指定#

fe80::1はすべてのインターフェイスに存在する可能性があるため、どのインターフェイスを意味するかを指定する必要があります:

ping6 fe80::1%eth0      # Linux
ping6 fe80::1%en0       # macOS
ping fe80::1%12         # Windows(インターフェイスインデックスを使用)

%記号はゾーンIDの前に置かれます。LinuxとmacOSでは、インターフェイス名を使用します。Windowsでは、netsh interface ipv6 show interfaceからのインターフェイスインデックスを使用します。

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

これらは、IPv6版のRFC 1918プライベートアドレスと考えてください。グローバルにルーティング可能ではないため、内部ネットワークに適しています。

実際には、中央割り当てが実装されなかったfc00::/8範囲が必要なため、fd00::/8アドレスが表示されます。40ビットのグローバルIDをランダムに生成します:

fd 3a:c7b1:29f4 :0001:0000:0000:0000:0001
│  └──────────┘  │    └──────────────────┘
│       │        │             │
│       │        │             └─ インターフェイスID(64ビット)
│       │        └─────────────── サブネットID(16ビット)
│       └──────────────────────── ランダムグローバルID(40ビット)
└──────────────────────────────── ULAプレフィックス(fd = ローカル割り当て)

40ビット識別子をランダムに生成すると、後で2つのネットワークがマージされる場合の衝突リスクが最小限に抑えられます。どこでもfd00::1を使用しないでください。


特別なアドレス#

2つのアドレスには独自の目的があります:

ループバック::1):自分自身にパケットを送信します。127.0.0.1のIPv6版です。::1へのトラフィックはホストを離れません。

未指定::):アドレスの不在を表します。ホストは、DHCPv6中またはアドレスを設定していない場合に、送信元アドレスとして::を使用します。::にパケットを送信することはできません。


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

ffで始まるすべてのアドレスはマルチキャストです。パケットは、そのマルチキャストグループに参加したすべてのインターフェイスに送られます。

アドレス構造#

ff 0 2 : 0000:0000:0000:0000:0001
│  │ │   └──────────────────────┘
│  │ │              │
│  │ │              └─ グループID(112ビット)
│  │ └──────────────── スコープ(4ビット)
│  └─────────────────── フラグ(4ビット)
└────────────────────── マルチキャストプレフィックス

スコープフィールドは、マルチキャストパケットがどこまで移動するかを決定します:

スコープ範囲
インターフェイスローカル1このインターフェイスのみ
リンクローカル2ローカルネットワークセグメント
管理ローカル4管理境界
サイトローカル5組織サイト
組織ローカル8組織内の複数サイト
グローバルeインターネット全体

必須のマルチキャストグループ#

いくつかのマルチキャストアドレスは重要な機能を果たします:

アドレス目的
ff02::1リンク上のすべてのノード(IPv4ブロードキャストを置き換え)
ff02::2リンク上のすべてのルーター
ff02::5すべてのOSPFルーター
ff02::6すべてのOSPF指定ルーター
ff02::9すべてのRIPルーター
ff02::1:2すべてのDHCPv6サーバー/リレー
ff02::fbmDNSv6(マルチキャストDNS)

要請ノードマルチキャスト#

このメカニズムにより、近隣探索が効率的になります。すべてのホストに「このIPを持っているのは誰か?」と尋ねる(ARPのように)代わりに、IPv6は小さなマルチキャストグループに尋ねます。

すべてのユニキャストアドレスは、対応する要請ノードマルチキャストアドレスを自動的に生成します:

ユニキャスト:        2001:db8:1234:5678::abcd:ef12:3456
                                      └────┬─────┘

                                     (最後の24ビット)

要請ノード: ff02::1:ff12:3456 ────────┘

ホストが2001:db8:1234:5678::abcd:ef12:3456を解決する必要がある場合、ff02::1:ff12:3456に近隣要請を送信します。12:3456で終わるアドレスを持つホストのみが要求を処理します。これにより、すべてのホストへのブロードキャストと比較して、マルチキャストオーバーヘッドが大幅に削減されます。


エニーキャストアドレス#

エニーキャストアドレスはユニキャストアドレスと同一に見えます。特別なプレフィックスはありません。違いは設定です:同じアドレスを複数のインターフェイスに割り当てると、ルーティングはパケットをトポロジー的に最も近いものに配信します。

一般的なユースケース#

DNSルートサーバー:13のルートサーバー文字(a.root-servers.netからm.root-servers.netまで)すべてがエニーキャストを使用します。同じIPアドレスが世界中の数百の場所に存在します。クエリは最も近いルートサーバーに到達します。

CDNエッジサーバー:コンテンツ配信ネットワークは、エニーキャストを使用してユーザーを近くのキャッシュサーバーにルーティングします。同じアドレス、異なる地理的場所です。

6to4リレールーター:アドレス192.88.99.1(IPv4)および2002:c058:6301::(IPv6)は、6to4リレー用のエニーキャストアドレスです。

サブネットルーターエニーキャスト#

すべてのサブネットは、インターフェイス識別子がゼロに設定された予約エニーキャストアドレスを自動的に持ちます:

サブネット:         2001:db8:1234:5678::/64
サブネットルーター:  2001:db8:1234:5678::

そのサブネット上のルーターはこのアドレスに応答する必要があります。実際には、ほとんど使用されません。


クイックリファレンス:アドレスタイプの識別#

最初の数文字を見て、任意のIPv6アドレスを識別します:

で始まるタイプスコープ
::1ループバックホストローカル
::未指定N/A
fe80:リンクローカルユニキャストリンクローカル
fc00: または fd00:ユニークローカルユニキャストプライベート
ff00: から ffff:マルチキャスト変動(2桁目を確認)
2... または 3...グローバルユニキャストインターネット

他のすべては予約されているか、まだ割り当てられていません。

アドレスの確認#

システムに設定されているアドレスを確認します:

Linux:

ip -6 addr show

macOS:

ifconfig | grep inet6

Windows:

netsh interface ipv6 show addresses

通常、次のものが表示されます:

  • インターフェイスごとに1つの複数のリンクローカルアドレス(fe80::
  • IPv6接続がある場合は1つ以上のグローバルユニキャストアドレス
  • ループバックインターフェイス上のループバックアドレス::1
  • いくつかのマルチキャストグループメンバーシップ(通常はデフォルトで表示されません)

マルチキャストのテスト#

ローカルリンク上のすべてのノードにICMPv6エコー要求を送信します:

# eth0をインターフェイス名に置き換えます
ping6 ff02::1%eth0

そのネットワークセグメント上のすべてのIPv6対応デバイスから返信が得られます。これは検出に役立ちますが、大規模なネットワークではノイズが多い可能性があります。

ルーターが存在するかどうかを確認します:

ping6 ff02::2%eth0

ルーターのみが応答する必要があります。


実用的な影響#

さまざまなアドレスタイプは、ネットワークの設計方法と問題のトラブルシューティング方法に影響を与えます:

セキュリティポリシー:ファイアウォールでグローバルユニキャストをフィルタリングしますが、リンクローカルは近隣探索のために通過させる必要があります。fe80::/10をブロックすると、IPv6が完全に破壊されます。

アプリケーションバインディング::にバインドするサーバーは、すべてのアドレスでリッスンします(IPv4の0.0.0.0のように)。::1にバインドすると、localhostのみに制限されます。

ルーティングテーブル:リンクローカルアドレスは、ルーティングテーブルにネクストホップとして表示されます。これはIPv4に慣れている人を混乱させます。これは正常です。ルーターは、変更されないため、安定性のためにリンクローカルアドレスを使用します。

DNS:パブリックDNSゾーンにはグローバルユニキャストアドレスのみを公開してください。リンクローカルまたはユニークローカルアドレスをパブリックDNSゾーンに公開しないでください。

これらのアドレスタイプを理解することは学術的ではありません。ファイアウォールの設定、接続のデバッグ、および実際に機能するネットワークの設計に必要です。

関連記事#

実際に試してみましょう

IPv6バリデーターを使用して、任意のアドレスを確認します。アドレスを入力すると、そのタイプ、スコープ、および有効かどうかがすぐに表示されます。