
STUN(NATのためのセッショントラバーサルユーティリティ)
プロトコルデバイスがパブリックIPアドレスを発見するのを支援するプロトコル。
STUNとは?
STUN(Session Traversal Utilities for NAT)は、NATルーターの背後にあるデバイスがパブリックIPアドレスを発見し、直接P2P接続を確立できるかどうかを判断するのを支援するネットワークプロトコルです。STUNはインターネット上の鏡のようなもので、デバイスがSTUNサーバーに「私のパブリックIPは何ですか?」と尋ねると、サーバーが見えているものを返答します。
STUNはメディアやデータをリレーしません。WebRTCクライアントがネットワーク構成を学ぶための発見サービスに過ぎません。
STUNの動作
- STUNリクエストの送信:ブラウザがパブリックSTUNサーバーにバインディングリクエストを送信
- STUNサーバーが観察して応答:ルーターのパブリックIPとNAT変換されたポートを返信
- クライアントがパブリックアドレスを学習:ICE用語で「サーバーリフレクシブ候補」となる
- 候補の交換と接続の試行:両ピアのルーターが接続を許可すれば(75-85%の確率)、リレーなしの直接WebRTC接続を確立
STUNが失敗する場合
- 対称NAT:宛先ごとに異なるポートマッピングを作成し、STUNで発見したアドレスがピア接続に使用不可
- 制限的なファイアウォール:すべての着信UDPトラフィックをブロック
- 二重NAT:複数層のNATの背後にいる場合、成功率が低下
STUNとTURNの比較
- STUN:パブリックIPの発見を支援。データのリレーなし。運用コスト無料。75-85%の確率で機能
- TURN:STUNが失敗した場合にすべてのメディアをリレー。高コスト(帯域幅費用)。接続の15-25%に必要。レイテンシが増加