Stun プロトコル、ポート、トラフィック

Patricia Arquette
リリース: 2024-10-11 10:30:02
オリジナル
160 人が閲覧しました

STUN は、NAT によって導入される通信の障壁を克服するように設計されたプロトコルです。

STUN プロトコルにより、NAT の背後にあるデバイスが自身のパブリック IP アドレスとポート番号を検出できるようになります。

デバイスはインターネット上の STUN サーバーと通信し、STUN サーバーはこの情報をクライアント デバイスに提供します

デバイスは、通信したいインターネット上の別のデバイスとこの情報を共有できます

これにより、外部デバイスが NAT を効果的に通過して相互に直接通信できるようになります

STUN は、リアルタイムでピアツーピア通信を促進する上で重要です。

STUN サーバーとは何かについて詳しく知りたい場合は、次の記事を参照してください: Stun サーバー: NAT 用のセッション トラバーサル ユーティリティとは何ですか?


Stun Protocol, Port and Traffic

NAT 問題を理解する

ネットワーク アドレス変換 (NAT) とその普及の説明。

ルーターは、NAT またはネットワーク アドレス変換と呼ばれる技術を使用して、複数のプライベート IP アドレスを単一の IP パブリック IP アドレスにマッピングします

これにより、ローカル ネットワーク上の複数のデバイスが単一のパブリック IP を使用してインターネットに接続できるようになります。

これにより、限られた数の IPv4 アドレスが節約されます。

インターネットに接続されるデバイスの急激な増加により NAT が普及し、より大きなアドレス空間を提供する IPv6 の採用が遅れました。

ピアツーピア通信における NAT によってもたらされる問題

NAT は、受信トラフィックをブロックし、ポート マッピングを変更し、NAT の背後にあるデバイスからパブリック IP アドレスを隠すことにより、デバイス間の直接通信をブロックします

したがって、インターネット上の異なるネットワーク上にあるデバイス間の直接通信を可能にするためには、NAT によって作られた障壁を克服することが重要です

STUN プロトコルのような NAT トランスバーサル ソリューションにより、デバイスは独自のパブリック IP アドレスを検出し、NAT ルーター経由で接続をネゴシエートできます

多くの場合、STUN サーバーでは NAT トラバーサルに十分ではなく、TURN サーバーでフォールバックする必要があります

1 対 1 の通信を実装していて、信頼できる STUN サーバーと TURN サーバーが必要な場合は、次のことを検討できます

オープンリレープロジェクト: 無料の TURN / STUN サーバー

Metered.ca TURN サーバー: グローバルに展開できるプレミアム TURN サーバー

VoIP やビデオ会議などのサービスには STUN サーバーと TURN サーバーが必要です。


STUN プロトコル: NAT トラバーサルのソリューション

スタンとは何ですか?

STUN または NAT 用セッション トラバーサル ユーティリティは、RFC 5389 で定義されている標準化されたプロトコルで、NAT またはファイアウォールの背後にあるデバイスが自身のパブリック IP アドレスとポート番号を検出できるようにします

STUN を使用すると、デバイスとアプリケーションが背後にある NAT の種類を検出し、インターネット上の他のデバイスとの直接通信チャネルを確立するために必要な情報を取得できます

STUN のコア機能には以下が含まれます:

  1. パブリック IP アドレスの検出: STUN により、クライアント デバイスはパブリック IP アドレスを学習できます

  2. ポート マッピング: STUN は、クライアント デバイスが NAT デバイスによって割り当てられたポート番号を認識するのに役立ちます

  3. NAT タイプ検出: STUN サーバーは、クライアント デバイスが背後にある NAT デバイスの種類を認識できるようにします。 NAT タイプには、フルコーン NAT、制限付きコーン NAT、対称 NAT などが含まれます

  4. ピアツーピア通信の促進: したがって、STUN サーバーはデバイス間のピアツーピア通信を促進します


STUN の仕組み

STUN がデバイスの独自のパブリック IP アドレスとポート番号の検出を支援する方法

クライアント デバイスがインターネット上の STUN サーバーにリクエストを送信するとき。 STUN サーバーは、リクエストの送信元のパブリック IP アドレスとポート番号を確認できます。

STUN サーバーはこの情報をクライアントに送り返します。このようにして、STUN サーバーは、デバイスが NAT ルーターによって割り当てられた独自のパブリック IP とポート番号を検出できるようにします。

このプロセスにより、クライアントは次のことが可能になります

  • パブリック エンドポイントを学習する: インターネット上で他のデバイスがエンドポイントをどのように認識するかを理解します

  • 修正の詳細をピアと共有する: クライアント デバイスが STUN サーバーから詳細を取得すると、通信を開始したいインターネット上の他のデバイスとそれを共有できます

  • NAT の動作を調整する: クライアント デバイスが背後にある NAT の種類に基づいて、NAT を通過する方法に関する戦略を調整します

STUN の仕組みを段階的に説明

  1. クライアントの開始

    1. クライアント デバイスは、UDP プロトコルを使用して STUN サーバーにリクエストを送信し、自身のパブリック IP アドレスとポート番号を学習します
    2. UDP ユーザー データグラム プロトコルを介して STUN バインディング リクエストを送信します
  2. STUNサーバー受信

    1. STUN サーバーはリクエストを受け入れ、リクエストの送信元 IP とポート番号を記録します。
    2. STUN サーバーは、IP アドレスとポート番号をクライアントに返します
  3. 結合応答

    1. STUN サーバーは STUN バインディング応答メッセージを契約します
    2. この応答には、MAPPED-ADDRESS 属性、クライアントのパブリック IP アドレスおよびポートが含まれます。
  4. クライアントの領収書

    1. その後、クライアント デバイスはサーバーからバインディング応答を受信します
    2. クライアント デバイスは、MAPPED-ADDRESS 属性からパブリック IP とポート番号を取得します
  5. NAT タイプの検出 (オプション):

    1. その後、クライアントはさまざまな STUN サーバーから追加のテストを実行して、クライアントが背後にある NAT のタイプを判断できます
    2. これには、異なるポートから異なるリクエストを送信し、応答を評価することが含まれます
  6. コミュニケーションの確立

    1. クライアント デバイスはパブリック IP アドレスとポート番号を使用して、この情報をインターネット上の他のデバイスと共有して通信を確立できます

STUN 対 TURN および ICE プロトコル

STUN と他の NAT トラバーサル方法

  1. STUN (NAT 用セッション トラバーサル ユーティリティ)

    1. 目的: クライアント デバイスがパブリック IP とポート番号を検出できるようにします
    2. 使用例: パブリック IP アドレスがわかった後、NAT とファイアウォールでピアツーピアの直接通信が許可される場合に適しています。
    3. 制限事項: NAT およびファイアウォール ルールが制限されている場合は機能しません。
  2. TURN (NAT 周りのリレーを使用したトラバーサル)

    1. 目的: ピアツーピアの直接通信が不可能な場合に、TURN サーバーを介してデータを中継することでフォールバック メカニズムを提供します
    2. 使用例: 制限的な NAT およびファイアウォール ルールにより、インターネット上のデバイス間の直接通信が許可されない場合に必須
    3. 操作: すべてのトラフィックはエンドツーエンドで暗号化され、TURN サーバー経由で送信され、データが各クライアントに中継されます
    4. トレードオフ: 待ち時間を短縮し、通信を改善するには、サーバーをクライアント デバイスの近くに置く必要があります
  3. ICE (対話型接続確立)

    1. 目的:ICE は、クライアント間に可能な限り最良の接続を確立するために STUN と TURN を組み合わせたフレームワークです。
    2. ユースケース: さまざまなネットワーク構成を処理するために、WebRTC およびその他のリアルタイム通信システムで使用されます
    3. オペレーション

      1. 候補の収集: クライアントはまず、可能なエンドポイント接続を確認するために候補を収集します。これらはホストを使用し、STUN および TURN を介して再帰的に検出されます
      2. 接続チェック: クライアントはチェックを実行して、どの候補を使用して接続を確立できるかを確認します
      3. 候補の選択: 通信を確立するために、ICE フレームワークによって遅延が最も低い最適なパスが選択されます
    4. 利点: 最高のパフォーマンスを実現するために最適化しながら、接続を確立する可能性を最大化します

他の方法ではなく STUN を使用する場合

  1. 次の場合は STUN を単独で使用してください

    1. 両方のクライアントは NAT とファイアウォールの背後にあり、IP アドレスとポート番号を検出した後の直接通信が可能になります
    2. 両方のクライアントのインターネット接続が良好で、ネットワーク環境は予測可能です。たとえば、携帯電話などの場合のようにデバイスがネットワークを変更していません
  2. 次の場合はスタンターンとアイスを使用してください

    1. デバイスは制限的な NAT およびファイアウォール ルールの背後にあります
    2. モバイル端末などのネットワーク環境は変化しています
    3. 信頼性は重要です。何らかの理由でデバイスが切断されることはあってはならない

考慮事項のまとめ

  • パフォーマンス

    • STUN は近くのクライアントに接続するときに優れたパフォーマンスを発揮しますが、信頼性も高くありませんが、無料のオプションです
    • TURN は最高のパフォーマンスを提供しますが、遅延を減らすためにサーバーをクライアント デバイスの近くに配置する必要があります。現在では、metered.ca などのグローバル ターン サーバー サービスが非常にうまく機能しています
  • 複雑さ:

    • STUN は実装と使用が非常に簡単です
    • ターン: 非常にシンプルで使いやすいです
  • 成功率:

    • STUN: 制限的な NAT およびファイアウォール ルールでは失敗します
    • TURN: より信頼性が高く、制限的な NAT およびファイアウォール ルールでも動作します

STUN ポートとトラフィック処理

STUN によって使用されるデフォルトのポート

一般的に使用される UDP ポートと TCP ポートは 3478 と 5349 です

STUN プロトコルは、クライアントと STUN サーバー間の通信に特定のネットワーク ポートを使用します

  • UDP ポート

    • ポート 3478: これは UDP プロトコルの STUN のデフォルト ポートです。STUN はオーバーヘッドが低いため、通常は UDP プロトコル上で動作し、通常はポート 3478 が使用されます
    • ポート 5349: これは通常、UDP over DTLS 用のポートであり、UDP 通信の暗号化を提供します
  • TCP ポート

    • ポート 3478: STUN : UDP が適切でない場合、またはブロックされている場合、STUN は TCP 用の 3478 と同じポートで動作できます
    • ポート 5349: これは、TCP 接続を提供するトランスポート層セキュリティである TLS を使用した STUN に使用されます
  • 代替ポート

    • これらは STUN サーバーのデフォルトのポートですが、他のポートを STUN サーバーおよび TURN サーバーに使用するように構成することもできます。
    • セキュリティ上の理由から、他のポートでも STUN サーバーを実行することをお勧めします。

ポートの使用に関するセキュリティ上の考慮事項

  1. ポートスキャンへの暴露

    1. 攻撃者はインターネットをスキャンして STUN サーバーのデフォルト ポートを探すことがよくあり、STUN サーバーをデフォルト ポートに維持すると、そのような偵察活動の影響を受けやすくなる可能性があります
  2. ファイアウォール構成

    1. インバウンドトラフィック

      1. 多くのファイアウォールはデフォルトで、不正アクセスを防ぐために STUN ポート上の一方的な受信トラフィックをブロックします
      2. ファイアウォールは、ネットワーク内のデバイスによって開始された正当なリクエストに応答するものである場合、受信トラフィックのみを許可します
    2. 送信トラフィック:

      1. 信頼できる STUN および TURN サーバーと必要なポートのみへのアウトバウンド トラフィックを許可します。
  3. 暗号化の使用

    1. STUN over TLS/DTLS (ポート 5349): TURN サーバーのトラフィックはエンドツーエンドで暗号化されます。 STUN サーバーのトラフィックはそうではありませんが、STUN 暗号化も有効にすることができます。
  4. 定期的なアップデートとパッチ: 独自の STUN/TURN サーバーを実行している場合は、セキュリティのために定期的にアップデートし、パッチを適用する必要があります。

  5. ログと監視: セキュリティの脆弱性について独自の STUN/TURN サーバーを実行している場合は、常に STUN サーバーと TURN サーバーをログに記録して監視します


クラウドベースの STUN サーバーとセルフホスト型ソリューションの比較

クラウドベースの TURN サーバー

  • 従量制 TURN/STUN サーバー: API を使用して、グローバルでスケーラブルなマネージド STUN および TURN サービスを提供します

  • Google パブリック STUN サーバー: Google は無料 STUN サーバーのリストを提供しています。Google STUN サーバー

  • のリストを取得できます。
  • オープンリレー TURN / STUN サーバー: 一般向けの無料 TURN サーバー

セルフホスト型ソリューション

  • Coturn STUN / TURN サーバー: オープンソース プロジェクトの Cotton を使用して独自のターン サーバーを実行できます。 coTURN を使用して TURN サーバーをセットアップおよび構成する方法は次のとおりです。

  • AWS TURN サーバー: AWS でも coturn を実行できます: そのガイドは次のとおりです: AWS TURN サーバー: 7 つの簡単なステップ

  • Azure TURN サーバー: TURN サーバーは Azure 上でも実行できます。これに関するガイドは次のとおりです: Azure TURN Server: ステップバイステップ ガイド

  • TURN サーバーのコスト: 独自の TURN サーバーを実行する際の潜在的なコストと考慮事項に関するガイドは次のとおりです: TURN サーバーのコスト: 完全ガイド


Stun Protocol, Port and Traffic

従量制 TURN サーバー

  1. API : TURN gestion du serveur avec une API puissante. Vous pouvez faire des choses comme ajouter/supprimer des informations d'identification via l'API, récupérer par utilisateur/informations d'identification et métriques utilisateur via l'API, activer/désactiver les informations d'identification via l'API, récupérer les données d'utilisation par date via l'API.

  2. Ciblage de géolocalisation globale : Dirige automatiquement le trafic vers les serveurs les plus proches, pour une latence la plus faible possible et des performances de la plus haute qualité. moins de 50 ms de latence partout dans le monde

  3. Serveurs dans toutes les régions du monde : Toronto, Miami, San Francisco, Amsterdam, Londres, Francfort, Bangalore, Singapour, Sydney, Séoul, Dallas, New York

  4. Faible latence : moins de 50 ms de latence, partout dans le monde.

  5. Rentable : tarification à l'utilisation avec réductions sur la bande passante et le volume disponibles.

  6. Administration facile : Obtenez des journaux d'utilisation, des e-mails lorsque les comptes atteignent les limites de seuil, des enregistrements de facturation et une assistance par e-mail et par téléphone.

  7. Conforme aux normes : Conforme aux RFC 5389, 5769, 5780, 5766, 6062, 6156, 5245, 5768, 6336, 6544, 5928 sur UDP, TCP, TLS et DTLS.

  8. Multi‑Tenancy : Créez plusieurs informations d'identification et séparez l'utilisation par client ou par différentes applications. Obtenez des journaux d'utilisation, des enregistrements de facturation et des alertes de seuil.

  9. Fiabilité d'entreprise : 99,999 % de disponibilité avec SLA.

  10. Échelle d'entreprise : Sans limite sur le trafic simultané ou le trafic total. Les serveurs TURN mesurés offrent une évolutivité d'entreprise

  11. 5 Go/mois gratuits : Obtenez 5 Go chaque mois d'utilisation gratuite du serveur TURN avec le forfait gratuit

  12. Fonctionne sur les ports 80 et 443

  13. Prend en charge TURNS SSL pour autoriser les connexions via des pare-feu d'inspection approfondie des paquets.

  14. Prend en charge TCP et UDP

  15. STUN gratuit et illimité

以上がStun プロトコル、ポート、トラフィックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!