Skypeでログイン出来ないエラー(error=1102)解決

 会社からSkypeへのログインが出来たり、出来なかったりしてましたが、ようやく解決方が分かりました。単純に、幾つかの外向けのTCPポートを空ける事で解決しました。
 ただ、なぜ外向けのTCPポートを空けたら解決するのか、折角だったので、Skypeの技術について、少し調べました。特にファイアーウォールの内側にいる場合に、どうやっているのかが気になりましたので、その辺りを中心に。


 結構、難しい事をやっているみたいで、まず、最初にこれに目を通しました。
 「Skypeはファイアーウォールをどのように通過しているのか?」
 これを見ると分かりますが、Skypeというのは、純粋なP2P技術ではなく、第三者である別のノードの助けを借りて、F/W内同士の通話接続を確立しているようです。一旦、確立されると両ノード間で直接コミュニケーションが出来るようになります。その際に、使っている技術が「UDP Hole Punching」だそうです。ただ、本当にこれを使っているかどうかは定かではありません。また、ここには残念ながら、ログインプロセスについての記述はありませんでした。で、もう少し調べてみると、以下の文献があるようです。
 「An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol」 
 Salman A.Baset and Henning Schulzrinne (pdf)

 この論文を見てみると、更に深くSkypeの技術について、調査しています。この論文にあるFigure1を見ると、Skypeネットワークというのは三つのタイプのノードから構成されているようです。
 1)Skype Login Server
 2)Super Node
 3)Ordinary Host(Skype Client)
 やはり、純粋なP2Pではなく、Login情報などはCentralizedサーバ形式なようです。で、Firewall内にいるユーザが何の設定も無しに通信が出来るようにSuper Nodeと呼ばれる仲介役を使って、P2P接続を行うようです。ここのミソはSuper Nodeというのが、Decentralized形のネットワークを構築しており、Super Node同士で相互に通信しているという事です。つまり、一般に使われているSIPサーバを使ったIP電話と異なり、ネットワーク的に非常に強固という事です。どこか一台のサーバが死のうが、サーバ負荷が発生しようが、グローバルIPを持ったSuper Nodeが他にあれば、そこに負荷を分散させて生きます。死なないネットワークというわけです。
 
 なるほど、なるほど。これでSkypeのネットワーク像が少し分かりました。では、本題に戻って、なぜ、外向きのTCPポートを空けたら、ログイン出来るようになったのか?
 そこを紐解く鍵は、ログインプロセス、及び、Super Nodeへの登録プロセスにあります。F/W内にあるSkypeクライアントがログインする場合、STUNプロトコルというのを使って、NATやFirewallのタイプを判断しています。その際、よく分からないんですが、色々なTCPポートを使って通信を繰り返しており、その後、接続を確立しています。試しに、私もDumpしてみたんですが、80/443番の番号以外は、ランダムでTCP番号を選びながら、パケットを送っています。私の理解力では、このぐらいまでしか分からなかったんですが、とりあえず、Super Nodeに対して、Firewallの環境や、クライアント情報をRegistする為に、外向けのTCPポートの開放が必要なようです。
 ちょっと中途半端な感じですけど、要はTCPポートを空ければ、スムーズに接続出来るようです。ただ、そうしなくても、80/443が空いている場合はうまく行くこともあるみたいです。ネットワークのコンディションやFirewallのタイプによるのかも知れません。よく分かりません。
 その他、興味のある方はこの辺りが参考になるかと思います。
 http://www.skype.com/help/faq/filetransfer.html
 http://toremoro.tea-nifty.com/tomos_hotline/2004/12/skypeskype_1.html
 http://www.asahi-net.or.jp/~AE5T-KSN/d/200412.html
 http://www.dodgson.org/omo/t/?date=20041219
 ※ちなみに、眞崎の理解した範囲で書いていますので、内容の信憑性については、一切保障出来ないです。

Leave a Reply

Your email address will not be published. Required fields are marked *


(上記4文字の英数字を入力してください)※

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>