1. スマホの なふだは、どうして かわるの?
1. 同じスマホなのに、名札が変わる
1. 同じ端末でMACアドレスが変わる ── ランダム化の既定化
スマホや パソコンの Wi-Fiには、「MACアドレス」という なふだが ついて います。きかいを くべつする ための 番ごうです。
Appleの きかいは、Wi-Fiの ネットワークごとに、ちがう アドレスを つかう しくみが あります[7]。いつも おなじ 番ごうだと、きかいの うごきを おいかけやすく なるからです[7]。
Androidも、10からは、Wi-Fiで ランダムな アドレスを つかうのが ふつうに なりました[6]。
なふだが かわるなら、ネットの 中では、ほかに おくりさきを しめす ものが ひつようです。それが「IPアドレス」です。
2. なふだと じゅうしょは、なにが ちがうの?
2. 名札(MAC)と住所(IP)は、指しているものが違う
2. MACアドレスとIPアドレスの役割 ── 識別用の番号と、場所を示す番号
たくはいびんで たとえて みましょう。IPアドレスは、にもつの さいごの とどけ先の「じゅうしょ」です。MACアドレスは、いま にもつを うけとる、つぎの はこび手の「なふだ」です。なふだは、おなじ 線で つながる ひろさの 中だけで つかいます。
ただし ほんとうは、MACは「きかいの なまえ」では ありません。おなじ 線の 上で、きかいを くべつする ための 番ごうです。
IPアドレスは、「ネットワークの 番ごう」の ぶぶんと「その 中の きかいの 番ごう」の ぶぶんに わけて あつかわれます[1]。町の 名まえと 番ちの ような ものです。どこで わけるかは、きまった 場所では なく、せっていで かわります[9]。
MACアドレスは、全部で 48ビットです。よくある 形では、前の 半分は、きかいを つくる そしきに わりあてられた 番ごうで、後ろの 半分は、その そしきが つけます[2]。
宅配便にたとえてみましょう。IPアドレスは、荷物の最終的な届け先の「住所」です。MACアドレスは、荷物をいま受け取る運び手の「名札」です。
ただし、たとえと実際は少しちがいます。IPの規格(RFC 791)は、「名前は何を探すか、アドレスはそれがどこにあるか、経路はどう行くか」を区別しています[1]。MACアドレスは「名前」ではなく、同じ線でつながる範囲で機器を見分ける番号です。
IPv4のアドレスは32ビットで、ネットワークを指す部分と、その中の機器を指す部分に分けて扱われます[1]。町名と番地のようなものです。ただし、どこで分けるか(プレフィックス長)は設定で決まり、固定ではありません[9]。
MACアドレス(EUI-48)は48ビットです。MA-Lという割り当てでは、IEEEが組織に割り当てる24ビットの識別子(OUI)に、その組織が決める24ビットを足して作られます[2]。すべてがこの構成とは限りません。前半は、機器を作った会社などが分かる部分です。
RFC 791は、「名前は何を探すか、アドレスはそれがどこにあるか、経路はどう行くか」と区別する[1]。IPが主に扱うのは、このうち「どこにあるか」、つまり場所のほうだ。IPv4のアドレスは32ビット固定長で、ネットワーク部とホスト部に分けて扱われる[1]。その境目はプレフィックス長で決まり、固定ではない[9]。場所を示すから、ネットワーク部を見れば「どの町か」が分かる。
これに対しMACアドレス(EUI-48)は、場所ではなく識別のための番号だ。IEEEが組織に割り当てる24ビットのOUI(Organizationally Unique Identifier、オーユーアイ)に、組織が付ける24ビットを足して48ビットにする[2]。ただしIEEEには短いブロックの割り当てもあり、すべてが24+24ビットとは限らない。
では、この2つはどうやって組み合わさり、1つのデータを運ぶのか。まず、同じ町内の場合から見る。
3. おなじ 町の 中では、どう とどくの?
3. 同じネットワーク内では、名札を尋ねて届ける
3. 同一リンク内の配送 ── ARPによるIPからMACへの対応づけ
おなじ 町の 中で にもつを とどけるなら、しるす のは、あいての なふだです。でも、あいての「じゅうしょ」しか しらないことが あります。
そこで つかうのが、ARP(アープ)という しくみです。おなじ ネットワークの 中で、「この じゅうしょの 人の なふだは なんですか」と たずねる ための ものです[3]。
こたえが わかれば、なふだを つけて とどけられます。
同じネットワークの中の相手に送るとき、箱に貼るのは、相手の名札(MACアドレス)です。ところが、手元にあるのは相手のIPアドレスだけ、ということがよくあります。
そこで使われるのがARP(アープ、Address Resolution Protocol)です。ARPは、IPなどのアドレスと、48ビットのイーサネットアドレスとの対応を、そのつど配るために作られました[3]。同じ線でつながる範囲で、「このIPの持ち主のMACは何ですか」と尋ねる仕組みです。
答えが分かれば、その名札を貼って、箱を手渡せます。では、相手が別の町にいるときは、どうなるのでしょうか。
同じリンク内で配送するフレームには、宛先のMACアドレスが必要になる。ところが上位の層が持っているのは、宛先のIPアドレスだ。そこでARP(Address Resolution Protocol、アープ)が使われる。RFC 826は、IPなどのプロトコルアドレスと48ビットのイーサネットアドレスの対応を動的に配る仕組みとして、これを定めた[3]。
つまりARPは、同じリンクの中で「このIPの持ち主のMACは」と尋ねるための道具だ。裏を返せば、MACアドレスの出番はそのリンクの内側に限られる。では、リンクの外にいる相手には、どう届けるのか。
4. べつの 町に おくる ときは?
4. 別の町へ送ると、(通常の転送では)名札だけが貼りかえられる
4. ルーターを越える転送 ── リンク層ヘッダの付け替えと、通常の転送でのIPの保持
べつの 町へ おくる ときは、まず「ルーター」という きかいに にもつを わたします。ルーターは、町と 町を つなぐ 中つぎ場です。
ルーターは、うけとった にもつの なふだを はずして、つぎの あいて むけの なふだに つけかえます[4]。ふつうの ルーターの おくり方では、「じゅうしょ」は そのままです。
こうして にもつは、なふだを かえながら、じゅうしょを たよりに すすみます。ふつうは じゅうしょは さいごまで おなじ。なふだは、くかんごとに ちがいます。いえの ルーターなどは、じゅうしょも かきかえる ことが あります(NAT)。
また、ルーターは、なん回も 中つぎされて いる にもつを すてる ことが あります。たびの 回数に かぎりが あるからです[4]。
ここが、このメモでいちばん話したいところです。ルーターは荷物を転送するとき、受け取ったときのリンク層のヘッダ(MACアドレスの宛先・送信元が入った部分)をいったん外し、IPヘッダを調整して、次の相手向けの新しいリンク層ヘッダをつけ直します[4]。
つまり旅の途中では、名札(MAC)は区間ごとに貼りかえられます。いっぽう、通常のルーター転送では、IPの送信元と宛先は保たれます[4]。家庭のルーターなどでNAT(住所の変換)を使うと、IPも書きかわります。
「調整する」IPヘッダの中には、旅の回数の制限(TTL)もあります。ルーターは、TTLが0に達したデータを捨てます[4]。道に迷った荷物が、いつまでも町をぐるぐる回り続けない仕組みです。
名札が毎回変わるなら、貼りかえる名札そのものは、そんなに大切ではないのでしょうか。
ルーターは転送のとき、受信したリンク層ヘッダを一般に取り除き、IPヘッダを修正し、再送信のために新しいリンク層ヘッダに置き換える[4]。そのため、MACアドレスは1つのリンクの内側でしか意味を持たず、ルーターを越えるたびに書き換わる。一方、通常のルーター転送ではIPの送信元と宛先は保たれるから、終点まで同じ宛先を指し続けられる。ただしNATを使う場合はIPも書き換わる。
IPヘッダの修正の例が、TTL(time to live)の扱いだ。ルーターは、TTLが0に達したデータグラムを捨てる[4]。経路が環状になっても、データが無限に回らないための歯止めである。
これで2つのアドレスの分担は見えた。だが、役目が「リンク内の識別」にすぎないMACアドレスを、なぜ今は積極的に変えるのか。
5. どうして なふだを かえるの?
5. 名札を変えて、追いかけられにくくする
5. 追跡への対策 ── MACランダム化とIPv6の一時アドレス
なふだは、いつも おなじだと、きかいを おいかける 手がかりに なります。MACアドレスは、あんごうに されずに おくられる ため、いばしょの おいかけに つかわれる ことが あると、Androidの しりょうは せつめい して います[6]。
だから、なふだを ランダムに かえます。じゅうしょ ほうも、くふうが あります。IPv6では、「いちじ アドレス」で、じかんと ともに アドレスを かえて、おいかけられる 期かんを みじかく します[8]。
IPv6は、アドレスの ながさを 32ビットから 128ビットに ふやしました[5]。
MACアドレスは暗号化されずに送られます。そのため、位置の追跡に使われうる、とAndroidの資料は説明しています[6]。Androidでは、ローカル管理ビットを1、ユニキャスト(1対1の宛先)ビットを0にして、残りの46ビットをランダムにします[6]。メーカーが決める部分も含めて、乱数にするわけです。
IPアドレスの側にも、同じ考えがあります。IPv6でアドレスを自動で作る方式(SLAAC)は、時間がたっても変わらない識別子を含みうるため、通信の相関(同じ機器の通信だと結びつけること)に使われえます。そこで、時間とともにアドレスを変える「一時アドレス」が提案されました。追跡できる期間を限るためです[8]。
ちなみにIPv6は、アドレスのビット数を32から128に増やしました。ビット数は4倍ですが、アドレスの総数は4倍ではなく、2の96乗倍です[5]。
MACアドレスはリンク上で暗号化されずに送られるため、位置の追跡に使われうる。Androidは10以降、Wi-Fiでランダムなアドレスを既定で使い、ローカル管理ビットを1、ユニキャストビットを0にして、残りの46ビットを乱数にする[6]。Appleも、ネットワークごとに異なるアドレスを使う理由として、同じアドレスの継続使用が機器の動きや位置に結びつけやすいことを挙げている[7]。
IPv6でも事情は似ている。SLAACで作るアドレスは、時間がたっても変わらない識別子を含みうる。RFC 8981は、時間とともにアドレスを変えることで、盗聴者などが通信を相関づけられる期間を限るとする[8]。そのため、MAC由来の固定的なIPv6アドレスが今も標準、という整理は適切でない。
なお、IPv6はアドレス長を32ビットから128ビットに拡張した[5]。ビット数は4倍だが、アドレス数は2の96乗倍になる。
名札は、機器を区別する便利な道具として生まれたが、今は「いつも同じ」ことの是非が問われる段階に入っている。
自分でも しらべて みたく なったら
自分でも調べてみたくなったら
自分でも調べてみたくなったら ── 原典と手がかり
今日できること
スマホの Wi-Fiの せってい画めんを ひらいて、つながっている ネットワークの くわしい じょうほうを 見て みましょう。なふだが ランダムに なって いるか たしかめる ための ものです。「アドレス」と かかれた こうもくが あるかも しれません。名まえは きしゅで ちがいます。
見るだけにして、せっていは かえないでください。おうちの 人が いるときに、いっしょに 見ると あんしんです。
しらべた もとの じょうほう
参考にした情報源
参考にした情報源と、その使い方
使った資料は次のとおり。RFCはIETFの規格文書で、英語。
- RFC 791 Internet Protocol. https://www.rfc-editor.org/rfc/rfc791.txt (IPアドレスの構造、名前・アドレス・経路の区別)
- IEEE Registration Authority, OUI. https://standards.ieee.org/products-programs/regauth/oui/ (MACアドレスの構成)
- RFC 826 An Ethernet Address Resolution Protocol. https://www.rfc-editor.org/rfc/rfc826.txt (ARPの目的)
- RFC 1812 Requirements for IP Version 4 Routers. https://www.rfc-editor.org/rfc/rfc1812.txt (ルーターの転送、TTL)
- RFC 8200 Internet Protocol, Version 6 (IPv6) Specification. https://www.rfc-editor.org/rfc/rfc8200.txt (IPv6のアドレス長)
- Android Open Source Project, MAC randomization behavior. https://source.android.com/docs/core/connect/wifi-mac-randomization-behavior (MACランダム化の動作と理由)
- Apple サポート「プライベートWi-Fiアドレス」. https://support.apple.com/ja-jp/102509 (Apple機器のWi-Fiアドレス)
- RFC 8981 Temporary Address Extensions for Stateless Address Autoconfiguration in IPv6. https://www.rfc-editor.org/rfc/rfc8981.txt (IPv6の一時アドレス)
- RFC 4632 Classless Inter-domain Routing (CIDR). https://www.rfc-editor.org/rfc/rfc4632.txt (プレフィックス長によるネットワーク部の区切り)
なおした ところ
更新履歴
更新履歴(改版の記録)
- 初版を公開。
このサイトでは、公開した記事の本文は原則として書き直しません。誤りが見つかったときや、内容が古くなったときだけ手を入れ、その理由をこの欄に残します。