今日、私はtcpdumpを使用していましたが、コンピューターに特定のMACアドレスのIPv6トラフィックがあり、nmapまたはarpingを使用してIPと一致させることができないことに気付きました。 tcpdumpログをもう少し詳しく調べたところ、ルーターが使用しているのはIPv6トラフィック専用の別のMACアドレスであることがわかりました。
22:49:01.936830 90:0d:cb:ff:31:91 (oui Unknown) > 33:33:00:00:00:01 (oui Unknown), ethertype IPv6 (0x86dd), length 158: fe80::920d:cbff:feff:3191 > ip6-allnodes: ICMP6, router advertisement, length 104
ルーターがIPv6に異なるMACアドレスを提供するのはなぜですか?
これは、プライバシー/セキュリティの懸念の結果です。 IPv6では、ステートレスアドレス自動構成ADDRCONFの下で、ノードはDHCPサーバーを必要とせずに独自のパブリックアドレスを生成します。そのアドレスの下位64ビットは、IEEE識別子(使用可能な場合)から生成されます。これは、レイヤー2MACアドレスに相当します。これが全体像である場合、従来のデータマイニング技術を使用することにより、IPv6アドレスの下位64ビットを使用してモバイルデバイスの位置と通信を追跡することが可能になります。
これが、ラップトップでこれが表示されているかどうかを尋ねた理由です。
このプライバシー/セキュリティの懸念は、 RFC 3041 および RFC4941 によって対処されます。これらは、ランダム化されたインターフェイス識別子を生成する2つの戦略を説明しています(永続ストレージの存在下または非存在下)。
LinuxおよびMacでは、次のコントロールを使用してこの機能を制御できます。Linuxでは、
sysctl net.ipv6.conf.all.use_tempaddr=2
sysctl net.ipv6.conf.default.use_tempaddr=2
sysctl net.ipv6.conf.eth0.use_tempaddr=2
など、Macでは
sysctl -w net.inet6.ip6.use_tempaddr=1
このスキームの利点は、ハードウェアIDを非表示にするだけでなく、(ランダムな)IDを頻繁かつ自動的に変更することです。
ほとんどのOSでのプライバシーアドレス指定の詳細については、 この優れたPSUページ を参照してください。
編集:
arch Linuxなどの一部のシステムは、すでにsysctlの新しい構成に移行しています。その場合、ファイル/etc/sysctl.d/40-ipv6.confで次のエントリをこれらの値に変更することにより、上記の構成を実行できます。
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
net.ipv6.conf.eth0.use_tempaddr = 2
編集2:
@slubmanは、Linuxでは、使用する正しいオプションは1(Debianにあるもの)ではなく、2であることを正しく指摘しています。なぜなら1はプライバシーアドレスの生成を許可しますが、Autoconfを優先的に維持します。