STUN サーバー

Delphi で独自の STUN (RFC 8489) サーバーを運用できます。バインディングリクエストに対し、正規の XOR-MAPPED-ADDRESS で応答します。プライベートネットワーク、オンプレミス環境、ICE ブートストラップで活用いただけます。

TsgcSTUNServer

型付きの RFC 8489 STUN サーバーです。Binding / Indication メッセージを処理し、XOR-MAPPED-ADDRESS で応答します。長期間認証用に MESSAGE-INTEGRITY を強制することも可能です。

コンポーネントクラス

TsgcSTUNServer

プロトコル

STUN (RFC 8489)

プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Enterprise

配置してポートを設定するだけで STUN エンドポイントが完成

Port (デフォルト 3478) を設定し、Active := True にするだけで、サーバーは Binding リクエストに対し正規の RFC 8489 XOR-MAPPED-ADDRESS で応答します。

uses
  sgcP2P;

var
  STUNServer: TsgcSTUNServer;
begin
  STUNServer := TsgcSTUNServer.Create(nil);
  STUNServer.Port := 3478;

  // optional: long-term credentials
  STUNServer.Authentication.Enabled  := True;
  STUNServer.Authentication.Realm    := 'example.com';
  STUNServer.OnSTUNAuthenticate := procedure(Sender: TObject;
    const aUsername: string; var aPassword: string;
    var Accept: Boolean)
  begin
    aPassword := LookupPassword(aUsername);
    Accept    := aPassword <> '';
  end;

  STUNServer.Active := True;
end;
// uses: sgcP2P
TsgcSTUNServer *STUNServer = new TsgcSTUNServer(this);
STUNServer->Port = 3478;
STUNServer->Active = true;

主な機能

セルフホスト型の STUN サーバー。オンプレミスの WebRTC 環境やプライベートクラウドでのテストに最適です。

Binding リクエストハンドラ

受信した Binding リクエストには XOR-MAPPED-ADDRESS、MAPPED-ADDRESS (レガシー)、FINGERPRINT を付与して応答し、RFC 8489 標準の応答形式に準拠します。

長期 / 短期認証

Authentication.Enabled を切り替えることで MESSAGE-INTEGRITY を必須化できます。OnSTUNAuthenticate によりリクエストのユーザー名を取得できるため、保存先からパスワードを返却するだけで認証が完了します。

IP 単位のレート制限

TsgcWSRateLimiter と組み合わせれば、ソース IP ごとに受信 STUN リクエストを制限できます。増幅攻撃への有効な対策となります。

IPv4 / IPv6

IPVersion によって、いずれかのファミリまたはデュアルスタックでバインドできます。XOR-MAPPED-ADDRESS の応答は受信トランスポートのファミリに合わせて生成されます。

TCP 上の TLS (RFC 8489 §5)

STUN-over-TLS の構成では、基底の TCP リスナーに SSL オプションを設定します。ネットワーク出口で UDP がブロックされる環境で有効です。

診断

OnSTUNRequest / OnSTUNResponse は Method、MessageType、解析済み属性リストを含むトランザクションをすべて記録します。デプロイ環境のデバッグに最適です。

仕様と参考資料

このコンポーネントが実装するプロトコルの一次資料です。

ドキュメントとデモ

コンポーネントリファレンスへのディープリンク、すぐに実行可能なデモプロジェクト、そして体験版のダウンロードはこちらです。

オンラインヘルプ — TsgcSTUNServer 本コンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。
デモプロジェクト — Demos\35.P2P\02.STUN すぐに実行可能なサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。下記より体験版をダウンロードしてください。
技術ドキュメント (PDF) 本コンポーネントのみを対象とした機能解説、クイックスタート、Delphi および C++ Builder のコードサンプル、一次資料への参照を収録しています。
ユーザーマニュアル (PDF) ライブラリ内のすべてのコンポーネントを網羅した総合マニュアルです。

独自の STUN サーバーを運用しませんか?

体験版をダウンロードして、Delphi で STUN エンドポイントを立ち上げましょう。