先頭が fe80::/10 の意味は 具体的な利用方法を例題出して教えてください
「先頭が
fe80::/10」とは、IPv6における「リンクローカルユニキャストアドレス」という特別なアドレス範囲(fe80:: から febf:: まで)を意味します。このアドレスは、同じネットワーク(リンク)内だけで通信できる、ルーターを越えられない(インターネットに出られない)アドレスです。IPv4でいう「
169.254.x.x(APIPA)」に近い役割ですが、IPv6ではネットワーク設定や通信の基礎を支える極めて重要な役割を持っています。具体的な利用方法を2つの例題で解説します。
例題1:ルーターを介さない、機器同士の「直接通信」
オフィスで、PCから同じ部屋にあるネットワークプリンターへ印刷データを送る場合を考えます。
- 状況:
社内サーバーやインターネットのIPアドレス(グローバルアドレス)が設定されていない、または設定を間違えている状態。 - 利用方法:
IPv6が有効になっていれば、機器は起動した瞬間に自分のfe80::/10のアドレスを自動的に作成します(設定不要)。 - 結果:
PCのfe80::...からプリンターのfe80::...へ、ルーターやDHCPサーバーの助けを借りずに直接データを送って印刷することができます。
例題2:ルーター同士がルート情報を交換する「ルーティング」
社内ネットワークで、ルーターAとルーターBが隣り合って接続されており、お互いに「自分の後ろにはこんなネットワークがあるよ」という情報を教え合う(ルーティングプロトコル:OSPFv3やRIPngなど)場合を考えます。
- 状況:
ルーター同士がルート情報を定期的に交換したい。 - 利用方法:
ルーターAとルーターBは、お互いのfe80::/10のアドレスを宛先にして情報を送り合います。 - 結果:
グローバルなIPアドレスが変更されたり、まだ設定されていなかったりしても、隣同士の通信はfe80::/10で常に安定して行えるため、ネットワークの土台(経路の維持)が崩れません。
💡 リンクローカルアドレスの最大の特徴
このアドレスは「同じLAN(リンク)の外には絶対に出ない」というルールがあるため、世界中でアドレスが重複しても問題ありません。あなたの家のPCも、隣の会社のPCも、みんな
fe80::1 というアドレスを(同じLAN内でなければ)同時に使って大丈夫なのです。そのため、このアドレスを使って通信(pingなど)をするときは、「どのLANカード(インターフェース)から出すか」を指定する「ゾーンID(
%1 や %eth0 など)」を後ろに付ける必要があります。- 例:
fe80::1234:5678:9abc:def0%en0
fe80::/10 のアドレスが具体的にどうやって自動生成されるのか(MACアドレスとの関係など)や、実際にコマンドプロンプトやターミナルでpingを通す方法について詳しく知りたいですか?fe80::/10 のアドレスが具体的にどうやって自動生成されるのか(MACアドレスとの関係など)や、実際にコマンドプロンプトやターミナルでpingを通す方法について詳しく知りたいですか? 知りたいです
1.
fe80::/10 アドレスが自動生成される2つの仕組みIPv6のリンクローカルアドレスは、先頭の固定部分(プリフィックス)と、後半の機器識別部分(インタフェースID)を合体させて自動生成されます。
後半のインタフェースID(64ビット)を作る方法は、大きく分けて「MACアドレスを使う方法(EUI-64)」と「ランダムに作る方法(一時アドレス・プライバシー拡張)」の2種類があります。
① MACアドレスから生成する方法(EUI-64)
世界に一つしかないLANカードの物理アドレス(MACアドレス:48ビット)を変形させて、64ビットの識別子を作る伝統的な方法です。
- 例: MACアドレスが
00:11:22:AA:BB:CCの場合
- 真ん中に
ff:feを挟み込む
→00:11:22:ff:fe:AA:BB:CCとなり、64ビット(16進数16文字)に引き伸ばされます。 - 先頭から7番目のビットを反転させる
→ 先頭の00(バイナリで00000000)の7番目を反転すると02(00000010)になります。 - 完成したインタフェースID:
0211:22ff:feaa:bbcc - アドレス全体の完成: 先頭の
fe80::と合体させます。
→fe80::211:22ff:feaa:bbcc
② ランダムに生成する方法(現在の主流)
MACアドレスをそのまま使うと「世界中で同じ端末だと特定されてしまい、プライバシー上良くない」という問題があるため、最近のWindows、Mac、iOS、Androidなどはデフォルトでランダムな数字から生成する仕組み(RFC 4941やRFC 7217など)を使っています。
- Windowsの場合: 起動時にOSが完全にランダムな固定値を生成して組み合わせます。
- Mac/Linuxの場合: ネットワークごとに異なるランダムな値を計算して生成します。
2. コマンドプロンプト/ターミナルでpingを通す方法
リンクローカルアドレス(
fe80::/10)にpingを送る場合、一番重要なのは「どのLANカード(インターフェース)からパケットを出せばいいか(スコープID/ゾーンID)」をコマンドで明示することです。ルーターを越えられないアドレスなので、PCに対して「Wi-Fiから出すのか、有線LANから出すのか」を教えてあげる必要があります。💻 Windows(コマンドプロンプト)の場合
まずは自分のPCのインターフェース一覧と、通信相手のIPアドレスを確認します。
- コマンドプロンプトを開き、
ipconfigを実行します。 - 接続しているネットワークの
リンクローカル IPv6 アドレスを確認します。- 例:
fe80::211:22ff:feaa:bbcc%12 - この
%12(環境によって数字は変わります)が、WindowsがそのLANカードに割り当てたインターフェース番号(スコープID)です。
- 例:
【pingの実行コマンド】
相手のアドレスの後ろに、自分のPCのインターフェース番号を
相手のアドレスの後ろに、自分のPCのインターフェース番号を
% で繋げて入力します。cmd
ping fe80::(相手のアドレス)%(自分のインターフェース番号)
コードは注意してご使用ください。具体例(相手が
fe80::5555 で、自分のWi-Fi番号が %12 の場合):- cmd
ping fe80::5555%12🍏 Mac / Linux(ターミナル)の場合
MacやLinuxでは、数字ではなく
en0 や eth0 といったインターフェース名をそのまま指定します。- ターミナルを開き、
ifconfig(Mac)やip a(Linux)を実行します。 - 使用中のLANカードの名前(例:Wi-Fiなら
en0やwlan0)を確認します。
【pingの実行コマンド】
MacやLinuxでも、アドレスの後ろに
MacやLinuxでも、アドレスの後ろに
% とインターフェース名を指定します(※Linuxの古いバージョンなどでは -I オプションを使うこともあります)。bash
ping6 fe80::(相手のアドレス)%(自分のインターフェース名)
コードは注意してご使用ください。具体例(相手が
fe80::5555 で、自分のMacのWi-Fiが en0 の場合):- bash
ping6 fe80::5555%en0コードは注意してご使用ください。(※最近のMacやLinux環境ではping6ではなく通常のpingコマンドでもIPv6に対応しています)
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。