TURN サーバー
Delphi で独自の TURN (RFC 8656) サーバーを運用できます。ピアツーピア経路を確立できないクライアントに対し、長期認証情報と割り当て単位のクォータを備えたリレーアドレスを提供します。
Delphi で独自の TURN (RFC 8656) サーバーを運用できます。ピアツーピア経路を確立できないクライアントに対し、長期認証情報と割り当て単位のクォータを備えたリレーアドレスを提供します。
セルフホスト型の TURN サーバーです。Allocate / CreatePermission / ChannelBind / Send / Refresh / Data を処理し、割り当てと帯域幅を管理し、長期認証情報を検証します。
TsgcTURNServer
Windows, macOS, Linux, iOS, Android
Enterprise
Port と Realm を設定し、OnTURNAuthenticate でユーザーごとのパスワードを返却し、Active := True にします。これだけで RFC 8656 準拠の任意のクライアントにリレーを割り当てるサーバーが完成します。
uses
sgcP2P;
var
TURNServer: TsgcTURNServer;
begin
TURNServer := TsgcTURNServer.Create(nil);
TURNServer.Port := 3478;
TURNServer.Realm := 'turn.example.com';
TURNServer.OnTURNAuthenticate := procedure(Sender: TObject;
const aUsername: string; var aPassword: string;
var Accept: Boolean)
begin
aPassword := LookupPassword(aUsername);
Accept := aPassword <> '';
end;
TURNServer.Active := True;
end;
// uses: sgcP2P
TsgcTURNServer *TURNServer = new TsgcTURNServer(this);
TURNServer->Port = 3478;
TURNServer->Realm = "turn.example.com";
TURNServer->Active = true;
セルフホスト型のリレーです。WebRTC や ICE のデプロイをサードパーティの TURN プロバイダーに依存させないようにできます。
REQUESTED-TRANSPORT 付きの Allocate リクエストを処理し、空きリレーポートを選択して有効期限を管理します。Refresh で割り当てを延長し、有効期限の到来時にサーバーが解放します。
割り当てごとのピア権限とチャネルバインディングを管理します。RFC 8656 §9 に基づき、権限のないピアからの Send/Data フレームは破棄します。
36 バイトの Send / Data エンベロープと 4 バイトの ChannelData フレームの両方に対応します。リレーは、リレー側トランスポートアドレスとバインド済みピアの間でデータグラムを転送します。
OnTURNAuthenticate でユーザー名を受け取り、パスワードを返却するだけで、サーバーは MESSAGE-INTEGRITY を検証し、nonce を自動的にローテーションします。
Quota.MaxAllocationsPerUser、Quota.MaxBandwidthKbps、Quota.AllocationLifetime を設定して悪用を抑制できます。拒否は OnQuotaExceeded から通知されます。
基底サーバーのトランスポートを切り替えるだけで、UDP、TCP、TCP 上の TLS のすべてに対応します。WebRTC クライアントは NAT を通過できるものを選択します。
コンポーネントリファレンスへのディープリンク、すぐに実行可能なデモプロジェクト、そして体験版のダウンロードはこちらです。
| オンラインヘルプ — TsgcTURNServer 本コンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。 | 開く | |
| デモプロジェクト — Demos\35.P2P\03.TURN すぐに実行可能なサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。下記より体験版をダウンロードしてください。 | 開く | |
| 技術ドキュメント (PDF) 本コンポーネントのみを対象とした機能解説、クイックスタート、Delphi および C++ Builder のコードサンプル、一次資料への参照を収録しています。 | 開く | |
| ユーザーマニュアル (PDF) ライブラリ内のすべてのコンポーネントを網羅した総合マニュアルです。 | 開く |