初版: 2011-05-15
最終更新日:
2012-02-14
% ifconfig -a 中略 ether PP:QQ:RR:XX:YY:ZZ inet6 2001:0db8:1234:5678:PpQQ:RRff:feXX:YY:ZZ prefixlen 64 autoconfとなります。ここで、Pp = 0x02 ^ PP です。
48ビットのMACアドレスを24ビットずつに分け、その間に「ff:fe」を入れた、
PP:QQ:RR:ff:fe:XX:YY:ZZを48ビットのMACアドレスから生成したEUI-64識別子と呼ぶらしいです。 ここから、先頭の7ビット目を反転させた(Pp = 0x02 ^ PP とした)、
Pp:QQ:RR:ff:fe:XX:YY:ZZを(48ビットMACアドレスから or EUI-64識別子から生成した) インターフェイス識別子と呼ぶそうです。 詳しい話はRFC2373を参照してください。
前置きが長くなりましたが、 IPv6アドレスの下位64ビットを見ると、MACアドレスがバレバレです。 つまり、IPv6アドレスの下位64ビットを調べると、 『MACアドレスが「PP:QQ:RR:XX:YY:ZZ」な ネットワークインターフェイスを使っている人』を 追いかけることが可能ということです。
これはなんとなく気持ち悪い、と感じる方のためには、 Privacy Extension (RFC4941) という仕組みが用意されています。 Windowsなどでは、これがデフォルト設定のようです。
FreeBSDでは、デフォルトでは無効になっているらしいですが、 これは、/etc/sysctl.conf で設定できます。
ちなみに、Linuxでの設定方法は、 Ubuntu Linuxで匿名アドレス(RFC4941)を有効にする (http://dr.slump.jp/IPv6/rfc3041/) などを参照してください。
net.inet6.ip6.use_tempaddr=1 net.inet6.ip6.prefer_tempaddr=11行目は、Privacy Extension(による一時的なIPv6アドレス)を使う設定、 2行目は、Privacy Extension(による一時的なIPv6アドレス)を優先的に 使用する設定です。 これを追加して再起動すると、
% ifconfig -a 中略 ether PP:QQ:RR:XX:YY:ZZ inet6 2001:0db8:1234:5678:02QQ:RRff:feXX:YYZZ prefixlen 64 autoconf inet6 2001:0db8:1234:5687:適当に:乱数を:下位に:割り当て prefixlen 64 autoconf temporaryとなります。
Privacy Extensionに関する設定は、
% sysctl -a | grep inet6 | grep temp net.inet6.ip6.use_tempaddr: 1 net.inet6.ip6.temppltime: 86400 net.inet6.ip6.tempvltime: 604800 net.inet6.ip6.prefer_tempaddr: 1こんな感じで出てきます。 あとは適当に調べてみてください。
「net.inet6.ip6.use_tempaddr=1」だけだと、 一時的なIPv6アドレスが割り当てられるだけで、 実際に使われるのはMACアドレス由来のIPv6アドレスが優先されるかも知れない… ので、どのIPv6アドレスが使われるのかを確認してくださいね。