複数の IP をリッスンする OpenSIPS サーバーがあります。コールを次のポイントに戻す場合、すべてのシグナリングとメディアがコールが最初に着地した IP から来るようにしたい (発信者と着信者に互いの IP アドレスを知られたくない)。
RTPProxy のようなものに必要なものがあると思います。
私の質問は、IP アドレスごとに 1 つの RTPProxy サーバーが必要ですか、それとも単一のサーバーを介して複数の IP をルーティングできますか? より良い解決策はありますか?
私はこれを自分で試してみますが、RTPProxy サーバーを正しく実行するのに苦労しています (RTPProxy に関する問題ではなく、私の無知です)。セットアップに時間を無駄にしているかどうかを誰かが知っているかどうかを確認するために、事前に尋ねました。
[アップデート]
興味のある人にとっては、これが私がどのように機能したかですが、これを最終的な解決策として実行したいかどうかはわかりません. さらにテストが必要です。トポロジの非表示と RTP プロキシを使用した 2 つの IP の場合。以下の回答とともに、誰かの役に立てば幸いです。
rtpproxy プロセスをロードします -
rtpproxy -l _your_public_ip_1_ -s udp:localhost:7722
rtpproxy -l _your_public_ip_2_ -s udp:localhost:7723
次に、kamailio.cfg ファイルを変更します -
loadmodule "/usr/local/lib64/kamailio/modules/topoh.so"
modparam("topoh", "mask_key", "Your_key_here")
modparam("topoh", "mask_ip", "10.0.0.1")
次のビットは、RTP プロキシの 2 つのグループを作成します - 1 & 2 -
#!ifdef WITH_NAT
# ----- rtpproxy params -----
modparam("rtpproxy", "rtpproxy_sock", "1 == udp:127.0.0.1:7722")
modparam("rtpproxy", "rtpproxy_sock", "2 == udp:127.0.0.1:7723")
次に、標準 (出荷済み) 構成の NAT セクションで、インバウンド コールが到達した IP に基づいて、プロキシで使用するグループを選択します。rtp_proxy_manage は、force_ および unforce_ コマンドの非常に高レベルのバージョンです。基本的に、それは起動するだけで、あなたのためにすべてを行います -
route[NATMANAGE] {
#!ifdef WITH_NAT
....
if($Ri=="X.X.X.1")
set_rtp_proxy_set("1");
if($Ri=="X.X.X.2")
set_rtp_proxy_set("2");
rtpproxy_manage("",$Ri);