一般的な原則として、サーバー構成なしで通話を発信できますが、何か構成が必要です。あなたの質問の下のコメントで mattjgaloway が指摘しているように、最も堅牢なソリューションは、STUN のようなものに一種の「傘」プロトコルを提供するICEを含むワームの缶です。
前回この問題に触れたとき、インターネットベースの SIP サーバーを使用できないという要件がありました。私は一種のレジストリのアイデアを思いつきました。クライアントは、特定のルーティング要件を持つ一連の「アドレス空間」を定義できます。LAN 内の SIP URI の場合、ルーティングを定義しません。会社の VPN アクセス ネットワーク内の URI については、VPN 接続を通過するルートを定義します。それ以外の場合は、インターネット ルーターを経由するルートを定義します。
「ルートを定義する」とは、ある特定のアドレス空間で URI に呼び出しを行うときに、どの IP が Contact ヘッダーに入るか、どの Route ヘッダーが必要になるかなどを保存することを意味します。
したがって、呼び出しを行うプロセスは次のようになります。
- 一致するアドレス空間のセットを調べます。
- 実行可能な INVITE を作成するために必要な適切なビット (適切な Contact ヘッダーの詳細、Route ヘッダーなど) について、そのアドレス空間に問い合わせます。
- 通常の INVITE を構築し、前のステップで必要に応じて変更します。
- 通常どおり INVITE を送信します。
これは基本的に、手動で管理された形式で ICE が提供するものの半分を再現します。「半分」。これにより、SIP ルーティングがすべて機能するように、1 つの SIP エージェントがコールを発信できるようになるためです。不足している半分は、何らかのレジストラがどこかにまだ必要であり、連絡先リストの各エージェントが着信を受信するために必要な設定を行う必要があることです。(エージェントがNATtingインターネットルーターの背後にある場合、ルーターはSIPプロキシを実行するか、ポート5060、5061を特定のマシン(エージェント、またはLANのエージェントにサービスを提供するプロキシ)に転送する必要があります.
それは確かに、ワームの大きな缶です。