2024.11.14
いまさらNode.jsを知ろう~環境構築も~
2017.05.10
プログラミングTURNサーバーを構築したときにちょっとハマった
坂東です。
WebRTCでP2P(STUNだけ)で疎通できない回線を見つけたのでTURNサーバーを立てることにしました。
手順とかハマった点を共有します。
1.TURNサーバーの選択とインストール
「rfc5766-turn-server」というのは更新が終わり、今は「Coturn」というのが主流のようでした。
以下のサイトあたりを参考に、Coturnをインストールしました。
https://gist.github.com/uemuraj/1909514059a056f3a024
http://qiita.com/okyk/items/2d7db6b148a43bc3b405
10分もあればサービス起動までいけると思います。
ためしにrfc5766も入れてみましたが、挙動も設定ファイルもほぼ同じでした。
2.動作確認の手順
立てたTURNを早速自分のサービスに組み込んで見る。
でも、うまく動いている気配がないんです。
こういうときって元々の実装が悪い可能性もあって原因の切り分けが大変。
SkyWayのサンプルを改造して動作確認することにしました。
https://nttcom.github.io/skyway/demo-js.html
index.html の new Peer に iceServers を追加してあげればそちらを見るようになります。
あと turn:false を指定しないと SkywayのTURN が勝手に追加されちゃう。
で、SkyWayのTURNだと疎通できるのに、自前のTURNだと駄目。
PeerJSのログだけじゃ原因が読めない。
外部からSTUNやTURNを叩いてくれるサービスを使って疎通確認。
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
見事に駄目で、ポート開けるの忘れてました。
ポートが開くと繋がってturnserverのログに色々出てくるようになりましたが、まだ駄目です。
turnserver.conf の「listening-ip」「relay-ip」「external-ip」のあたり。
インストール時に参考にしたサイトはEC2を想定していて、私が使ってるのはさくらクラウドでした。
さくらの単独サーバーはNATが無いので、listening-ip にグローバルIPを書いてあとはコメントアウトで良かったです。
うまく動いた。
自分のサービスで使ってみても、うまく動いた。
3.運用開始
TURNの負荷が読めないので、一部ユーザーでだけ有効にしてリリースしたいと思います。
いままでP2Pで勝手にやってもらってたのがサーバー経由になるなんて恐ろしい事。
そろそろWebRTCをきちんと理解しなきゃいけないなあと思います。
専門書は2冊ぐらい買ったんだけど厚さが電話帳クラスで開ける気にならなくて・・・
よさげな書籍があったのでポチりました。まだ読んでない。
わか(った気にな)るWebRTC
https://booth.pm/ja/items/517516
おわり。
【記事への感想募集中!】
記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!【テクノデジタルではエンジニア/デザイナーを積極採用中です!】
下記項目に1つでも当てはまる方は是非、詳細ページへ!Qangaroo(カンガルー)
【テクノデジタルのインフラサービス】
当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
最近の記事
タグ検索