私のMacでは、各IPv6アドレスには特定のコンピュータのMACアドレスが含まれています(私のルータのものではありません)。ipv6-test.com のようなサイトは、それを表示するだけでなく、それがアップルコンピュータに属していることを教えてくれます
これはスーパークッキーのように感じますし、他のOSにも当てはまるかもしれません。自分のMACアドレスを公開されないようにするにはどうすればいいですか?
背景:MACアドレスはnot in plain sightです。2001:0db8:1:2:60:8ff:fe52:f9d8
のように
- 最後の64ビット(ホスト識別子)を取り、先頭のゼロを追加します。
0060:08ff:fe52:f9d8
ff:fe
の部分を真ん中から剥がします。これらのバイトがない場合、then MACアドレスは存在しない- 1 バイト目の場合:2 番目の低次ビット(ユニバーサル/ローカルビット;ビットが 1 の場合は 0 に、0 の場合は 1 にする)を補完します。例えば、以下のようになります。
0x00
(000000) は0x02
(00000010) になります - すぐに。
60:8ff:fe52:f9d8
はMACアドレス02:60:08:52:f9:d8
に変換されます
注:macOS 10.12 Sierra以降、Ars Technicaによると、Appleは、Windowsが明らかにすでに何年も前から行っていたMACアドレスに基づかない安定したアドレスを生成する新しい方法を採用しています
この質問は、今週のスーパーユーザーの質問でした。 詳細はブログエントリーを読むか、自分でブログに投稿してみてください
142 None 2011-02-09
これは、IPv6の2つの拡張機能によって解決されます
- RFC 4941 別名「プライバシーアドレス指定」では、送信側の接続で一時的にランダムに生成されたアドレスを使用することができます(数時間ごとにローテーションされます)
- RFC 7217では、プライマリの静的なアドレスを、何の情報も明らかにしない不透明なハッシュから生成することができます
少なくとも1つの方法ではありますが、最近では両方の方法が一般的なオペレーティングシステムでサポートされるようになってきています
これらの機能は直交していることに注意してください。必要に応じて、両方を同時に使うこともできます
安定した個人アドレス
一部のオペレーティングシステムでは、プライマリインタフェース識別子は MAC や EUI-64 から生成されなくなり、代わりにハッシュやランダムシードを使って生成されます (通常は RFC 7217 に従います)
この種のアドレスはネットワークごとにまだ静的です – 同じIPv6プレフィックス内の同じマシン上の同じOSは、常に同じサフィックスを生成する必要があります。これは、着信接続に適しています
Windows Vistaから始まるWindowsは、カスタムスキームを採用しています
機能が有効かどうかを確認するには、PowerShell コマンドを実行します
Get-NetIPv6Protocol | fl RandomizeIdentifiers
機能の有効化/無効化を行います
Set-NetIPv6Protocol -RandomizeIdentifiers Enabled
Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
これは
netsh interface ipv6
でもできますNetworkManager on Linuxは、NM v1.2.0からRFC 7217をサポートしており、接続プロファイルのUUIDをシードの一部として使用します。この機能は、最近の NM バージョンではデフォルトで有効になっています
この機能を有効または無効にするには
nmcli con modify "<profilename>" ipv6.addr-gen-mode stable-privacy
nmcli con modify "<profilename>" ipv6.addr-gen-mode eui64
systemd-networkd はこの .network ファイルオプションを使って RFC 7217 をサポートしていますが、このモードが使われるべきネットワークプレフィックスを明示的にリストアップする必要があるようです
[Network] IPv6Token=prefixstable:2001:db8:abcd:123::/64
接頭辞が一致しない場合でも、EUI-64方式にフォールバックします
Linux/BSD 上の dhcpcd は /etc/dhcpcd.conf のこのオプションを使って RFC 7217 をサポートしています
slaac private
この機能を無効にして、従来のEUI-64識別子を使用する場合
slaac hwaddr
Linux カーネル SLAAC は Linux v4.1.0 の RFC 7217 をサポートしています
秘密鍵は128ビットの16進数文字列(IPv6アドレスのような形をしています)で、これを使って生成することができます
uuidgen | sed "s/-//g; s/..../:&/g; s/^://"
この秘密鍵は、
net.ipv6.conf.default.stable_secret
のsysctlに格納されなければなりません。永続性を持たせるために、/etc/sysctl.d/50-rfc7217.conf
などのファイルに格納することができますnet.ipv6.conf.default.stable_secret = 84a0:d5aa:52b0:4d35:k567:3aa6:7af5:474c
シークレットを設定すると、すべてのネットワークインタフェースで自動的にこのモードが有効になります。この機能が有効かどうかを確認するには、
ip -d link
の “addrgenmode stable_secret “を探すか、sysctl net.ipv6.conf.<ifname>.addr_gen_mode
の “2 “という値を探してください
一時的な非公開アドレス
この機能 (RFC 4941で定義されている) は、数時間ごとにランダムに生成される追加のアドレスを提供します。これらのアドレスは発信接続にのみ使用され、着信接続ではMACベースまたはRFC7217ベースのプライマリアドレスを保持します
WindowsはWindows XP SP2からテンポラリアドレスをサポートしています
この機能を有効/無効にするには
netsh interface ipv6 set privacy state=enabled netsh interface ipv6 set privacy state=disabled
Windows は Vista からハッシュベースのプライマリアドレス生成をサポートしているので、この機能はそれほど重要ではないことに注意してください
Linux 上の NetworkManager を使用しています。最近の NetworkManager のバージョンでは、以下の 2 つの値は sysctl と同じ意味を持ちますが、RA を独自に処理します (2 = プライバシーアドレスを好む、1 = メインアドレスを好む)
nmcli con modify <name> ipv6.ip6-privacy 2
NetworkManager は v1.2.0 以降、RFC7217 ベースのプライマリアドレス生成をサポートしているため、この機能はそれほど重要ではないことに注意してください
余談: 1.4.0の時点で、NMではMACアドレス自体もランダム化できるようになっています。
wifi.cloned-mac-address
をstable
に設定するとネットワークごとに異なるMACを持つことになり(推奨)、random
に設定すると接続ごとにランダム化することになります(問題が発生する可能性があります)すべての場合、
<name>
には接続名(WiFi SSIDや"Wired Connection 1"
など)を指定する必要があります。すべてをリストアップするにはnmcli con
を使用しますこれを新しい接続のデフォルトにするには、1.2.0 以降では
/etc/NetworkManager/NetworkManager.conf
を変更することができます[connection] ipv6.addr-gen-mode=stable-privacy wifi.cloned-mac-address=stable
dhcpcd は
slaac ... temporary
サブオプションを使ったテンポラリアドレスをサポートしていますslaac private temporary
or
slaac hwaddr temporary
Linux カーネル SLAAC は一時アドレスをサポートしていますが、デフォルトでは使用しません。これらの sysctls を設定することで有効にすることができます
sysctl net.ipv6.conf.all.use_tempaddr=2 sysctl net.ipv6.conf.default.use_tempaddr=2
all
またはdefault
の部分は、特定のインターフェイス名に置き換えることができます(私は
ip link set eth0 down && ip link set eth0 up
を使って強制的にアドレス割り当てを行いましたが、rdisc6 eth0
を実行したり、次の定期的なRouter Advertisementを数分待つだけでも構いません)Mac OS X – OS X 10.7 Lion 以降、デフォルトで有効になっています
sysctl -w net.inet6.ip6.use_tempaddr=1
有効になっている場合は、一時的なアドレスが優先されます
FreeBSD:
sysctl net.inet6.ip6.use_tempaddr=1 sysctl net.inet6.ip6.prefer_tempaddr=1
古い NetBSD のバージョン
sysctl -w net.inet6.ip6.use_tempaddr=1
最新の NetBSD はカーネルの SLAAC サポートがなくなっているようです
OpenBSD – 5.2 でサポートが追加され、5.3 で有効化され、デフォルトでは優先されています
ifconfig em0 autoconfprivacy
ifconfig
では、テンポラリアドレスの横に「autoconfprivacy」と表示されています
設定の注意点
Linux、OS X、およびすべてのBSDでは、
/etc/sysctl.conf
を編集して設定を恒久的なものにしてくださいWindows では、変更は自動的に持続します。(再起動するまでの間だけ変更を持続させたい場合は、
store=active
をnetsh
コマンドに追加することができます)
一部は IPv6INT.net の IPv6 オペレーティングシステム に基づいています。一般的なIPv6に関する注意事項
IPv6アドレスにハードウェアアドレスが使用されている場合、通常はネットワークがIPv6ステートレス自動設定を使用していることを意味します。
しかしながら、手動で追加されたアドレスにはハードウェア情報が含まれていないにもかかわらず、それは静的なままです (アドレスが頻繁に変更されるプライバシー アドレッシングとは異なります)。また、静的なアドレスは、2-3 台のデバイスよりも大きなネットワークでは苦痛になることがあります
137 user1686 2011-02-09
参考までに、これは特定のIPアドレッシングスキームにのみ適用されます。おそらく、あなた(またはあなたのISP)はIPv6の自動設定を使用していて、最初の場所で達成するにはかなり大きなIPブロックが必要です。解決策としては、この機能をオフにすることが考えられます。ISPはアドレスを割り当てるためにDHCPを使用している可能性がありますが、これはIPv6でも可能です
1 Ernie Dunbar 2011-02-09