Docker Hub | GitHubコンテナレジストリ| quay.io
Coturnは、ターンおよびスタンサーバーの無料のオープンソース実装です。ターンサーバーは、VoIPメディアトラフィックNATトラバーサルサーバーとゲートウェイです。
Linuxディストリビューションには、あなたがインストールできるcoturnのバージョンがある場合があります
apt install coturn turnserver --log-file stdout
または、dockerコンテナを使用してコツーンを実行します。
docker run -d -p 3478:3478 -p 3478:3478/udp -p 5349:5349 -p 5349:5349/udp -p 49152-65535:49152-65535/udp coturn/coturn
Docker Container Docker Readmeの使用の詳細をご覧ください
Coturnでは、最初にインストールするには、次の依存関係を必要とします
libevent2
オプション
OpenSSL(TLSとDTLSをサポートし、スタンとターンを承認するため)
libmicrohttpおよびprometheus-client-c(prometheus interface)
mysql(ユーザーデータベース)
Hiredis(ユーザーデータベース、監視)
sqlite(ユーザーデータベース)
postgreSQL(ユーザーデータベース)
git clone [email protected]:coturn/coturn.gitcd coturn ./configure 作る
スタン仕様:
RFC 3489-「クラシック」スタン
RFC 5389-ベース「新しい」スタン仕様
RFC 5769 -STUNプロトコルテストのテストベクター
RFC 5780 -NAT行動ディスカバリーサポート
RFC 7443 -Stun&TurnのALPNサポート
RFC 7635 -OAUTHサードパーティのターン/スタン承認
仕様を回す:
RFC 5766-ベースターン仕様
RFC 6062 -TCPリレーターンエクステンション
RFC 6156-ターン用のIPv6エクステンション
RFC 7443 -Stun&TurnのALPNサポート
RFC 7635 -OAUTHサードパーティのターン/スタン承認
DTLSサポート(http://tools.ietf.org/html/draft-petithunin-tram-turn-dtls-00)
モバイルアイス(マウス)サポート(http://tools.ietf.org/html/draft-weng-tram-turn-mobility-02)
ターンレストAPI(http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00)
ORIGIN FIELD IN TURN(マルチテナントターンサーバー)(https://tools.ietf.org/html/draft-ietf-stun-origin-06)
帯域幅のドラフト仕様をターン(http://tools.ietf.org/html/draft-thomson-tram-turn-bandwidth-01)
ターンビス(デュアル割り当て)ドラフト仕様(http://tools.ietf.org/html/draft-ietf-tram-turnbis-04)
氷と関連する仕様:
RFC 5245-氷
RFC 5768 - ICE – SIP
RFC 6336 - ICE – AINAレジストリ
RFC 6544 - ICE – TCP
RFC 5928-解像度メカニズムをターンします
実装は、次のクライアントからサーバープロトコルを完全にサポートしています。
UDP(RFC 5766あたり)
TCP(RFC 5766およびRFC 6062あたり)
TLS(RFC 5766およびRFC 6062ごと):TLS1.3を含む; ecdheがサポートされています。
dtls1.0およびdtls1.2(http://tools.ietf.org/html/draft-petithuenin-tram-turn-dtls-00)
SCTP(実験的実装)。
リレープロトコル:
UDP(RFC 5766あたり)
TCP(RFC 6062あたり)
ユーザーデータベース(認証が必要な場合は、パスワードまたはキー付きユーザーリポジトリ用):
sqlite
mysql
postgreSql
Redis
mongodb
管理インターフェイス:
TelnetCli
HTTPSインターフェイス
監視:
Redisは、ステータスと統計のストレージと通知に使用できます
Prometheusインターフェイス(APTパッケージでは利用できません)
メッセージ整合性ダイジェストアルゴリズム:
MD5-Hashed Keysを備えたHMAC-SHA1(スタンとターンの標準で要求される)
認証メカニズムを回す:
「クラシック」の長期資格情報メカニズム。
ターンレストAPI(時間制限された秘密ベースの認証のための長期メカニズムの変更、webrtcアプリケーション:http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00) ;
実験的なサードパーティOAUTHベースのクライアント認証オプション。
パフォーマンスと負荷分散:
VoIP接続のために、ICEソリューションの一部として使用する場合、このターンサーバーは、STUNプロトコルのみが使用されている場合、CPUあたりの数千の同時コール(ターンプロトコルを使用する場合)または数万コールを処理できます。実質的に無制限のスケーラビリティには、負荷分散スキームを使用できます。負荷分散は、次のツール(1つまたはそれらの組み合わせ)で実装できます。
DNS SRVベースの負荷分散。
組み込み300の代替サーバーメカニズム(ターンクライアントによる300の応答サポートが必要です);
ネットワークロードバランサーサーバー。
トラフィック帯域幅の制限と輻輳回避アルゴリズムが実装されました。
ターゲットプラットフォーム:
Linux(Debian、Ubuntu、Mint、Centos、Fedora、Redhat、Amazon Linux、Arch Linux、Opensuse)
BSD(FreeBSD、NetBSD、OpenBSD、DragonFlyBSD)
ソラリス11
Mac OS X
Cygwin(非生産のR&D目的で)
Windows(MSVCツールチェーンなどのネイティブ)
このプロジェクトは、他の*NIX
プラットフォームでも使用できますが、公式にはサポートされていません。
実装は、シンプルで、簡単にインストールでき、構成しやすいと想定されています。このプロジェクトは、パフォーマンス、スケーラビリティ、シンプルさに焦点を当てています。目的は、エンタープライズグレードのターンソリューションを提供することです。
高性能とスケーラビリティを実現するために、ターンサーバーは次の機能で実装されています。
高性能産業強度ネットワークIOエンジンlibevent2が使用されます
利用可能なCPUリソースを完全に使用できるように実装された構成可能なマルチスレッドモデル(OSがマルチスレッドを許可する場合)
複数のリスニングアドレスとリレーアドレスを構成できます
使用される効率的なメモリモデル
ターンプロジェクトコードは、カスタム独自のネットワーキング環境で使用できます。ターンサーバーコードでは、抽象的なネットワークAPIが使用されます。プロジェクト内のいくつかのファイルのみが、ターンサーバーを独自の環境にプラグインするために書き直す必要があります。このプロジェクトでは、標準のUNIXネットワーク/IO APIの実装のみが提供されますが、ユーザーは他の環境を実装できます。ターンサーバーコードはもともと、高性能の独自の企業環境向けに開発され、その後UNIXネットワークAPIに採用されました
ターンサーバーは、システムに特別な要件を課すことなく、ユーザースペースプロセスとして機能します
プロジェクトホームページ:https://coturn.github.io/
リポジトリ:https://github.com/coturn/coturn/
問題トラッカー:https://github.com/coturn/coturn/issues
Google Group:https://groups.google.com/forum/#!forum/turn-server-project-rfc5766-turn-server