[Q&A]NAT越えについて

2,165 views
Skip to first unread message

Yasotaka NUMATA

unread,
Feb 17, 2014, 6:03:08 PM2/17/14
to skyw...@googlegroups.com
はじめまして。

現在、WebRTCを利用して個人的にビデオチャットを作成しているのですが
NAT越えの仕組みがいまいちよく分からないので、ご教授いただけませんでしょうか?

開発にあたっては、「peer.js」を利用しており、iceサーバーとして
定番の(?)「stun:stun.l.google.com:19302」を利用しています。
また、「peer.js」で公開されているビデオチャットサンプルをほぼそのまま利用しています。

自宅では、ISPとして@niftyを利用しており、固定グローバルIPアドレスサービスを利用しています。
そのため、自宅で2台のPCを用意して、ビデオチャットを行う際には、問題なくできています。
(そもそも、自宅内なので、NAT越えの必要がないのでしょうか?)

ところが、昨日、故郷のPCとビデオチャットを試行してみたところ、双方の相手側の画面が
真っ黒になってしまっており、うまく通信ができていないように見受けられました。

故郷のPCは、ISPとして@niftyを利用していますが、固定グローバルIPアドレスサービスを利用していません。

片方は、固定グローバルIPアドレス、もう片方は、固定グローバルIPアドレスではない場合
STUNサーバーでは、NAT越えができないということなのでしょうか?
そのため、P2P通信が確立できていない?


双方のPCの環境は、以下の通りですので、各PC環境は問題ないかと思います。
自宅:Mac OS X
   Google Chrome 32.0.1700.107

故郷:Windows 8.1
   Google Chrome 最新版(2014年02月17日時点の最新版です。


上述の情報でご教授いただける範囲でご回答・または確認観点などのご意見をいただければと思います。
その他、追加情報が必要であれば、併せてご連絡いただければと思います。

Yusuke NAKA

unread,
Feb 18, 2014, 7:48:19 PM2/18/14
to skyw...@googlegroups.com
SkyWay開発チームの仲です。

ご質問ありがとうございます!
今回はSkyWay版のpeer.jsではなく、オリジナルのpeer.jsを利用されているという認識で返信しますね。

ビデオチャットが正常に行えなかった原因としては、Peer To Peer(P2P)の通信が確立できてないからだと思われます。
まず、WebRTCにてP2Pの通信をする上で、端末側のグローバルIPが固定IPかダイナミックIPかは関係ありません。
ICEの仕組みによって、P2P通信を開始する前に、毎回、互いのグローバルIPアドレスやポート番号を交換しあうため、固定になっていなくても通信はできます。
その交換するIPアドレスやポート番号を知るためにSTUNサーバを利用します。

今回は自宅か故郷、どちらにおいてある通信機器が原因でP2P通信ができなかったと見るべきでしょうかね。
真っ先に思い浮かぶのは家庭用ルータですね。
家庭用ルータがシンメトリックNATと呼ばれるセキュリティの高いNATを搭載している場合や、ファイアウォールでアクセス制限している場合など、繋がらない理由はいくつか考えられます。

SkyWay開発チームの小松が、昨年発表した以下の資料(ページ37以降)にざっくりと、そのあたりの仕組みが書いていますので宜しければご覧ください。


今回のような場合、ICEの仕組みの一つである、TURNサーバという中継サーバを利用すれば通信できる確率は上がるかもしれません。
ただし、TURNについてはフリーでサービスを公開している事業者がほとんどないため、検証するのであれば自前で構築する( https://code.google.com/p/rfc5766-turn-server/ )必要があります。
尚、peer.jsについてはTURNもサポートしています。

すぐにできることとしては通信環境をネットワーク機器含めて変えて試してみることでしょうか。
ご不明な点があれば、ご連絡下さい。

Yasotaka NUMATA

unread,
Feb 19, 2014, 7:55:20 PM2/19/14
to skyw...@googlegroups.com
SkyWay開発チームの仲 様

ご丁寧なご回答、ありがとうございます。
ご回答いただいた内容を勘案すると、おそらく故郷側のファイアウォールが原因という気がしています。

SkyWay開発チームの小松 様の資料なども参考にさせていただきます。
進展がありましたら、またこちらのフォーラムでご連絡させていただきます。

※先日、SkyWayのAPIキーの申請を行い、発行もいただきましたので
 今後は、SkyWayを利用させていただこうと考えております。

Yusuke NAKA

unread,
Feb 20, 2014, 1:27:34 AM2/20/14
to skyw...@googlegroups.com
仲です。

WebRTCはネットワークと密接に関係したHTML5の仕様の一つなので、色々と試行錯誤してみてください。
不明な点や新しい発見が有りましたら、是非このフォーラムへフィードバックして頂けると嬉しいです。

SkyWayに関しては peer.js と使い勝手は変わりませんので、是非ご利用下さい。

以上です。

2014年2月20日木曜日 9時55分20秒 UTC+9 Yasotaka NUMATA:
Reply all
Reply to author
Forward
0 new messages