IPoEの普及によって、日本の家庭のインターネット回線は
確実にIPv6化が進行している
家庭用のインターネット常時接続サービスでIPoE(IP over Ethernet)が簡単に利用できるようになった。IPoEでは、簡単に言えば、自宅が1つのサブネットワークになる。そもそもIP over Ethernetとはイーサネットを流れているIPと同じということである。
実際、ルーターにはIPv6グローバルネットワークアドレスが割り当てられ、そこから自動割り当てられたWindowsマシンのIPv6アドレスもインターネットでそのまま通用するグローバルアドレスである。
そういうわけで、あらためてIPv6とまともに付き合う必要が出てきた。今回は、IPv6の基本の「キ」としてざっくりとした解説をする。
まずは基本となるIPv6アドレスについて
まずはIPv6アドレスについてだ。IPv6アドレスは128bitある。このうち、上位64bitがネットワークをあらわす「プレフィックス」、下位64bitはホストを示す「インターフェースID」である。プレフィックスはプロバイダが割り当て、インターフェースIDはローカルで割り当てる。
ただし、IPv6には自動でアドレスを割り当てる機能があり、DHCPサーバーなどを特に用意する必要はない。インターネット接続に使うルーターなどには、DHCPv6としてDHCPサーバーがあるような表記があるが、実際には「ステートレス」で自動割り当てされる。具体的には、計算とIPv6が持つ重複アドレス検出機能を組み合わせてアドレスを自動で割り当てる。
なお、Windowsは独自のアルゴリズムを使ってインターフェースIDを割り当てる。このため、ルーター側のDHCPv6機能を使った場合とそうでない場合に割り当て方法が異なることがある。
なお、DHCPには、IPアドレスの割り当て以外にDNSサーバーなどのLAN内のパラメーター通知機能もあるため、IPv6アドレスの割り当てをしなくても、家庭向けブロードバンドルーターには必要な機能である。
さて、実際に割り当てられたIPアドレスを見てみよう。IPoEサービスであるなら、3つのIPv6アドレスが見えるはずだ。GUIから見るなら、「設定」→「ネットワークとインターネット」→「ネットワークの詳細設定」→「ネットワークアダプター」からインターネット接続に利用しているネットワークアダプタ(ネットワークインターフェース)にある下向き矢印をクリックして項目を開き、「追加のプロパティを表示」を選択する。
あるいは、コマンドラインからipcondig.exeを実行する。こちらもネットワークアダプタごとにIPアドレスを表示する。
インターネット接続がPPPoE経由でなければ、どれを見てもIPv6アドレスが表示されているのではないだろうか? しかしよく見るとIPv6アドレスが複数ある。
IPoEで接続しているなら、プロバイダ側からプリフィックスをもらい、インターフェースIDは、OSまたは、ルーターのDHCPv6で決定する。現在では3つのIPv6アドレスを割り当てるのが通常だ(これ以上割り当てがある可能性もある)。
・リンクローカルアドレス
・一時または匿名アドレス
・通常アドレス(プライマリアドレス)
リンクローカルアドレスは、ネットワーク内でしか利用できない特殊なアドレスだが、MACアドレスをもとに決定されるため、他のインターフェースIDと衝突することなく、確実に割り当てられるアドレスである。
このときのインターフェースID決定方法は、RFC 4291(IP Version 6 Addressing Architecture https://datatracker.ietf.org/doc/html/rfc4291)で定義されおり、「Modified EUI-64」と呼ばれている。これは簡単に言えば、MACアドレス48bitを並べ替えたもの。EUI-64は、IEEEで定めた48bitのMACアドレスを64bitにする方法だ。この文書では、EUI-64をアレンジして64bitのインターフェースIDを作る方法を定義している。
もともとIPv6では、「Modified EUI-64」を使ってインターフェースIDを決定することを想定していたが、これでは、インターフェースが持つMACアドレスが特定されてしまい、プライバシー的な問題が残る。
インターネット商用化以前は、インターネットの技術は“性善説”でよかったが、現在では“性悪説”に立たなければならない。このため、インターフェースを特定されない方法が考えられた。
一時または匿名アドレスは、IPv6ノードがインターネットアクセスに利用する「使い捨て」のIPv6アドレスだ。通常24時間程度で破棄され、新しい匿名アドレスを割り当てる。これは、MACアドレスのほかに乱数を利用して決定される。
IPv6には、DAD(Duplicate Address Detection)と呼ばれる機能があり、これから利用するIPv6アドレスがLAN内で先に使われていないかを調べることが可能だ。
匿名アドレスは、乱数を利用してアドレスを求めたあと、DADを使って、重複がないかを調べる。もし重複があれば作り直すという処理を繰り返す。この方法は、RFC 8981で定義されている。
●Temporary Address Extensions for Stateless Address Autoconfiguration in IPv6
https://datatracker.ietf.org/doc/html/rfc8981
で定義されている。
リンクローカルアドレスでも匿名アドレスでもないものが「通常アドレス」である。この場合のインターフェースIDは、SLAAC(Stateless Address Autoconfiguration)と呼ばれる方法で決定され、RFC 7217で定義されている。
●RFC 7217 - A Method for Generating Semantically Opaque Interface Identifiers with IPv6 Stateless Address Autoconfiguration (SLAAC)
https://datatracker.ietf.org/doc/html/rfc7217
この連載の記事
-
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に - この連載の一覧へ