IPv6アドレスタイプ:グローバル、リンクローカル、マルチキャストの解説
さまざまなタイプのIPv6アドレスを学びます:インターネット用のグローバルユニキャスト、LAN用のリンクローカル、グループ用のマルチキャストなど。
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 | インターフェイスID | MACアドレスから生成またはランダム化 |
実際のプロバイダーは通常、サイトに/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::fb | mDNSv6(マルチキャスト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 showmacOS:
ifconfig | grep inet6Windows:
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の基礎:その概要と重要性 - IPv6の基本概念、アドレス形式、圧縮ルール、プロトコル設計の改善について学びます。
- IPv6サブネット化:/48から/64へ - IPv6サブネット化の実用的なスキルを習得し、アドレス空間を効果的に分割する方法を学びます。
- IPv6セキュリティ:脅威、軽減策、ベストプラクティス - IPv6セキュリティの脅威を深く理解し、ネットワークを保護する方法を学びます。
実際に試してみましょう
IPv6バリデーターを使用して、任意のアドレスを確認します。アドレスを入力すると、そのタイプ、スコープ、および有効かどうかがすぐに表示されます。