無印吉澤(※新エントリはhatenablogに掲載中)

吉澤です。このサイトではIPv6やP2Pなどの通信技術から、SNSやナレッジマネジメントなどの理論まで、広い意味での「ネットワーク」に関する話題を扱っていたのですが、はてなブログに引っ越しました
最新の記事は http://muziyoshiz.hatenablog.com/ でご覧ください。
RSSフィードは http://muziyoshiz.hatenablog.com/feed に手動で変更するか、
Feedly or Live Dwango Reader を使っている方は以下のボタンで変更ください。
follow us in feedly Subscribe with Live Dwango Reader
«前の日記(2006/01/16) 最新 次の日記(2006/01/27)» 編集

2006/01/22

[P2P][NAT][Teredo]MSN MessengerのミュージックミックスをIPv6(Teredo)化

ミュージックミックスの画面(threedegreesのmusicmixと同じようなもん)(クリックすると拡大します)

最近の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)」というのが表示される(はずな)ので、これを右クリックして「有効化」を選択します(下図)。

Window Explorerで変更する部分(クリックすると拡大します)

そして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になるらしいので、これを操作すれば十分かもしれません。ただ、確証はないのでやるときは自己責任で!

[]

2004|06|07|09|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|09|10|11|
2009|01|02|03|04|05|07|08|10|
2010|01|03|
2015|03|
スパム対策のため、60日以上前の日記へのコメント及びトラックバックは管理者が確認後に表示します。
また、この日記に無関係と判断したコメント及びトラックバックは削除する可能性があります。ご了承ください。