Session Traversal Utilities for NAT (STUN)
STUN とは
Session Traversal Utilities for NAT (STUN) は、リアルタイム・ボイス、ビデオ、メッセージング、その他の対話式通信のアプリケーションにおけるネットワーク・アドレス変換 (NAT) ゲートウェイの NAT トラバーサル用の、ネットワークプロトコルを含む標準化されたメソッド・セットです。
STUN は、Interactive Connectivity Establishment (ICE)、Session Initiation Protocol (SIP)、WebRTC など、他のプロトコルによって使用されるツールです。STUN は、ネットワーク・アドレス・トランスレーターの存在の検出と、アプリケーションのユーザー・データグラム・プロトコル (UDP) フロー用に NAT がリモート・ホストに割り当てた、マップされ、通常はパブリックのインターネット・プロトコル (IP) アドレスとポート番号の検出を行うためのツールをホストに提供します。このプロトコルには、NAT の反対 (パブリック) 側 (通常はパブリック・インターネット) にあるサードパーティ製ネットワーク・サーバー (STUN サーバー) からの支援が必要 です。
詳細は『 Session Traversal Utilities for NAT (STUN)』を参照してください。
STUN が必要な理由
簡単に言えば、STUN は、クライアントがパブリック IP アドレスを判別し、相互接続および Sametime ミーティング・サーバー との接続によってオーディオ・データとビデオ・データを送受信できるようにするのに使われます。
ミーティングのデプロイメントがすべて内部にあり、ユーザーとサーバーの間に NAT やファイアウォールがない場合は、STUN が不要な場合もあります。
在宅勤務者などネットワーク外部のユーザーがデプロイメントに含まれる場合は、オーディオ・セッションとビデオ・セッションのネゴシエーションを支援する STUN サーバーが多くの場合必要です。
デフォルト構成
デフォルトでは、Sametime ミーティング・サーバー は Google の公開 STUN サーバーを使用するように設定されています。
Docker では、この情報は .env ファイルに次のように記述されています。
# STUN servers used to discover the server's public IP.
JVB_STUN_SERVERS=stun.l.google.com:19302,stun1.l.google.com:19302,stun2.l.google.com:19302
Kubernetes では、この情報は hem/values.yaml ファイルに次のように記述されています。
jvbStunServers: stun.l.google.com:19302,stun1.l.google.com:19302,stun2.l.google.com:19302
どちらの場合も、この設定は、次の STUN サーバーを使うようにサーバーに指定しています。
stun.l.google.com
stun1.l.google.com
stun2.l.google.com
Using UDP port 19302.
サーバー (またはクライアント) が設定された STUN サーバーにアクセスできない場合、n-way ミーティングが正しく機能しない点に注意してください。デプロイメントを計画する際には、STUN サーバーがネットワークで使用可能であることを確認してください。
任意の設定
ご使用の環境に既に STUN サーバーがある場合、または代替の公開 STUN サーバーを使用する場合は、サーバーをデプロイする前に上記の設定を適切に更新してください。設定はデプロイメント後も変更できます。詳細については『代替 STUN サーバーを構成する』を参照してください。
ご使用のデプロイメントで STUN を使用する必要がない場合は、.env ファイルまたは values.yaml ファイル内の該当する行をコメントアウトし、サーバーをインストールすることで無効にできます。