OCN IPv6接続での環境改善−APIPAの無効化

OCN IPv6の導入で以下のように書いた。

OCN IPv6の接続はWindows XPでは仮想アダプタの形式で実装されている。この仮想アダプタはWindowsのネットワーク接続フォルダでは通常の物理ネットワークアダプタと同じように認識される。OCN IPv6接続時にはWindowsのこの(仮想)アダプタが有効になるのだが、既定のままではWindowsはこのアダプタに対してもIPv4での自動設定を試みようとする。そのため、DHCPでのアドレス取得に失敗した後、APIPA*2の接続を行う。その際、ネットワークの接続が制限されているという警告とともに、タスクバーの通知領域に三角のエラーマークが表示されてしまうが、これはAPIPAによりアドレスが割り当てられたため、IPv4でインターネットに接続することができないということを示すだけなので気にすることはない。ただ、うっとおしいことは確かなので、FAQに書いてあるように、警告メッセージを無効にしておくと良いだろう。

警告メッセージを無効にはしたのだが、WindowsはAPIPAでの接続は試みる。タスクバーの通知領域で接続中を示すアイコンが出るのはなんとも鬱陶しい。いっそのこと、この(仮想)アダプタでのAPIPAを無効にしてしまおう。

APIPAの無効化はレジストリを変更することで可能だ。特定のネットワークアダプタで無効にするには、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<インターフェイスID>のIPAutoconfigurationEnabled (REG_SZ) を0にすれば良い。

ここで問題なのは、この<インターフェイスID>の取得方法だ。<インターフェイスID>とはWindowsがアダプタを特定するために用いているGUIDのことだ。確か、もう少し簡単な方法があったかと思うのだが、失念してしまったので、これもレジストリから取得することとする。以下のレジストリを見ることで、<インターフェイスID>は取得できる。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002bE10318}

この下にNetCfgInterfaceIdのサブキーがあり、さらにそのサブキーのConnection中にREG_SZ(文字列値)としてNameがあり、そこに接続の表示名が設定されている。私の環境では、OCN IPv6用の(仮想)アダプタは「ローカル エリア接続 3」となっているので、その名前の付いているエントリを探す。

netif

その後、ここでわかった<インターフェイスID>を元に、先ほどのエントリ、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<インターフェイスID> を特定し、そこにIPAutoconfigurationEnabled (REG_SZ)を作成して、0をセットすれば良い。

DisableAPIPA

これで、APIPAによりIPv4アドレスを取得することは無くなる。