2006/01/22
■[P2P][NAT][Teredo]MSN MessengerのミュージックミックスをIPv6(Teredo)化
最近のMSN Messengerはチャットウィンドウのメニューから「アプリ」→「ミュージックミックス」と選択すると、チャットの参加者全員で同じ音楽を聴ける「ミュージックミックス」というアプリを使えます*1。
このアプリって、チャット参加者がNATを通して接続してると、音楽ファイルの再生速度に音楽速度の共有(コピー)速度が追いつかなくて全然使い物にならないんですが……Teredo等を使ってIPv6接続するとだいぶ実用的に使えることに気づきました。せっかくなのでその方法を紹介しときます。
(※注意)
これを実際にやろうとすると、つまづくポイントが結構多いので、うまく行かなかったらすっぱり諦めて下さい。細かな質問は受け付けませんので、「へえー、こういう事も出来るんだ」と話半分に聞いてもらえると有り難いです。
(※注意その2)
以下の方法でMSN MessengerをIPv6化しても、Windows Live Messenger BETAから搭載された「共有フォルダ」の機能はIPv6化されませんでした。こっちがIPv6化したらだいぶ便利だったんですけど。ちぇー。
----
■ WindowsのIPv6機能を有効にする
PCにWindows XP SP2、またはWindows XP SP1 + Advanced Networking Pack for Windows XPをインストールした状態で、コマンドプロンプトで以下のように実行するとIPv6をインストールできます。
C:\>ipv6 install Installing... Succeeded.
で、IPv6 native環境があればこれで十分なんですが、普通の人はそんなことないと思うので(普通の人がこんな日記を読んでるかはともかく)、更にTeredoも有効にします。このTeredoの設定方法については以下のIPv6styleの記事が詳しいです。結構前の記事ですが、今でも通用します。
Advanced Networking Pack for Windows XP大解剖 第1回 IPv6接続をさらに透過的にするTeredo(IPv6style)
http://www.ipv6style.jp/jp/tryout/20030929/index.shtml
一番すんなりいくパターンでは、以下のような出力になるはず。
C:\>netsh netsh>interface ipv6 netsh interface ipv6>set teredo client OK (しばらく待ってから) netsh interface ipv6>show teredo Teredo パラメータ --------------------------------------------- 種類 : client サーバー名 : default クライアント更新間隔 : default クライアント ポート : default 状態 : qualified 種類 : teredo client ネットワーク : unmanaged NAT : cone
ここで、NATの種別がconeかrestrictedだったら、おそらく成功しているはずです。ipconfig /allでIPアドレスを確認したり、チャット相手のTeredoアドレスにpingを飛ばしたりして確認しましょう*2。
■ MSN MessengerのIPv6機能を有効にする
MSN Messengerはメニューの「ツール」→「オプション」→「セキュリティ」と選択した先の画面にある「メッセージを送信するときに、直接メンバーに接続する」というチェックボックスをONにすると、IPv6機能が有効になります。ただ、最近のMSN Messengerはこのチェックボックスが無効化されているので、これを無理矢理有効にしたうえで、チェックボックスをONにします。
これを実現するにはいろいろ方法があるらしいのですが(Spy++を使うとか?)、僕はWindowsに詳しい先輩から教わった「Window Explorer」というソフトを使う方法しか知らないので、それだけ紹介します。
まず、Window Explorerを起動した状態で、MSN Messengerのメニューから「ツール」→「オプション」→「セキュリティ」と選択して、問題のチェックボックスがある画面を表示します。
このとき、Window Explorerの左ペインで「msnmsgr.exe」を選ぶと、右ペインに「メッセージを送信するときに、直接メンバーに接続する(&D)」というのが表示される(はずな)ので、これを右クリックして「有効化」を選択します(下図)。
そしてMSN Messengerのメニューに戻ると、先ほど無効化されていたチェックボックスが有効になっているはずなので、これをONにして、そしてMSN Messengerを再起動します。以上でMSN MessenerのIPv6機能が有効になった……はずです*3。
■ 接続テスト
上記のようにWindowsとMSN MessengerをIPv6化したユーザ同士では、チャットもIPv6化されます。なので、インスタントメッセージを送信したあとでnetstatを実行してみて、
C:\>netstat -nb Active Connections (中略) TCP [3ffe:831f:4004:1952:8000:****:****:****]:1033 [****:****:****:****:****:****:****:****]:1057 ESTABLISHED 2880 [msnmsgr.exe]
のようにIPv6アドレスでTCP接続が出来てれば成功です。音楽ファイルの送信側と受信側の両方がNATの背後に居る場合でも、(Symmetric NATがなければ)快適にミュージックミックスが使えるようになります。やったね!
いやぁ、アプリケーションをIPv6化するとNATに悩まされなくていいですね……ってわけじゃなくて、要はTeredoがUDP hole punchingをやってるだけだったりするんですが。しかし、この間のOCN IPv6もそうですけど、話をインターネット上に限ると、IPv6はNATを隠蔽するための技術と化してますね。そういう技術として普及するのは、僕は良い事だと思います。
*1 僕はWindows Live Messenger BETAをインストールして初めて気づいたんですが、人づてに聞いた話ではMSN Messenger 7.5でも使えるらしいです。実はもっと前のでも使えたかもしれません。
*2 このテストに成功しても、MSN MessengerでIPv6接続できない、という場合はファイアウォールを疑うべし。
*3 この設定をすると、レジストリのHKEY_CURRENT_USER\Software\Microsoft\MSNMessengerのDirectIMという値(REG_BINARY)が01 00 00 00になるらしいので、これを操作すれば十分かもしれません。ただ、確証はないのでやるときは自己責任で!
また、この日記に無関係と判断したコメント及びトラックバックは削除する可能性があります。ご了承ください。