[OpenSIPS-Users] Help regarding Opensips Proxy

Mihai m at mokalife.ro
Thu Oct 22 11:18:06 EST 2020


Hi Razvan,
By agent, I am referring the softphone (zoiper or microsip). I will look
into "Path" or "Mid registar".
I still need to use the rtpproxy module, correct for all of this ?

On Thu, Oct 22, 2020 at 11:57 AM Răzvan Crainea <razvan at opensips.org> wrote:

> What does "connect an agent" mean? Register on a specific asterisk
> server? If so, you should be using the Path module[1] to add OpenSIPS as
> an extra hop between the agent and Asterisk. An alternative is the Mid
> registrar module[2], which can itself store the location of the agent,
> and relay calls to it.
>
> [1] https://opensips.org/docs/modules/3.1.x/path.html
> [2] https://opensips.org/docs/modules/3.1.x/mid_registrar.html
>
> Răzvan Crainea
> OpenSIPS Core Developer
> http://www.opensips-solutions.com
>
> On 10/22/20 11:37 AM, Mihai wrote:
> > Any hints about this?
> >
> > On Tue, Sep 29, 2020 at 4:46 PM Mihai <m at mokalife.ro
> > <mailto:m at mokalife.ro>> wrote:
> >
> >     Hi all,
> >
> >     I need some help on getting to work my scenario:
> >
> >     I have 3 asterisk servers, and, every agent is connecting  to which
> >     server they need by contacting the PublicIP. (the problem is that I
> >     need to reuse the IP address on others servers) . I want if is
> >     possible to use Opensips as proxy, so that agents can connect to
> >     those asterisk servers by virtualhost (example.
> >     asterisk1.behindproxy.example, asterisk2.behindproxy.example ).
> >     Basically I want to proxy everything thru OpenSIPs.
> >
> >
> >     I am using centos 7 with the following packages installed:
> >     opensips-dialplan-module-3.1.0-1.el7.x86_64
> >     opensips-yum-releases-3.1-5.el7.noarch
> >     opensips-b2bua-module-3.1.0-1.el7.x86_64
> >     opensips-regex-module-3.1.0-1.el7.x86_64
> >     opensips-mysql-module-3.1.0-1.el7.x86_64
> >     opensips-3.1.0-1.el7.x86_64
> >
> >
> >
> >     What I tried so far is this config, it dose send my users to
> >     required Asterisk servers, but on the asterisk server I don't see
> >     their IP ( i see the IP of the proxy) and that's it ....
> >     the dispatcher list is  this from mysql:
> >
> >     Any help is apreciated.
> >
>  +----+-------+----------------+--------+-------+--------+----------+-------+-------------+
> >     | id | setid | destination    | socket | state | weight | priority |
> >     attrs | description |
> >
>  +----+-------+----------------+--------+-------+--------+----------+-------+-------------+
> >     |  1 |     1 | sip:172.16.0.2 | NULL   |     2 | 1      |        0
> >     |       | sip1        |
> >     |  2 |     2 | sip:172.16.0.3 | NULL   |     2 | 1      |        0
> >     |       | sip2        |
> >     |  3 |     3 | sip:172.16.0.4 | NULL   |     2 | 1      |        0
> >     |       | sip3        |
> >
>  +----+-------+----------------+--------+-------+--------+----------+-------+-------------+
> >
> >
> >     ####### Global Parameters #########
> >     #debug_mode=yes
> >     log_level=4
> >     log_stderror=no
> >     log_facility=LOG_LOCAL0
> >     udp_workers=4
> >     socket=udp:0.0.0.0:5060 <http://0.0.0.0:5060>
> >     ####### Modules Section ########
> >
> >     #set module path
> >     mpath="/usr/lib64/opensips/modules"
> >
> >     #### SIGNALING module
> >     loadmodule "signaling.so"
> >
> >     loadmodule "db_mysql.so"
> >     loadmodule "db_text.so"
> >
> >     #### StateLess module
> >     loadmodule "sl.so"
> >
> >     #### Transaction Module
> >     loadmodule "tm.so"
> >     modparam("tm", "fr_timeout", 5)
> >     modparam("tm", "fr_inv_timeout", 30)
> >     modparam("tm", "restart_fr_on_each_reply", 0)
> >     modparam("tm", "onreply_avp_mode", 1)
> >
> >     #### Record Route Module
> >     loadmodule "rr.so"
> >     modparam("rr", "append_fromtag", 0)
> >
> >     #### MAX ForWarD module
> >     loadmodule "maxfwd.so"
> >
> >     #### SIP MSG OPerationS module
> >     loadmodule "sipmsgops.so"
> >
> >     #### FIFO Management Interface
> >     loadmodule "mi_fifo.so"
> >     modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
> >     modparam("mi_fifo", "fifo_mode", 0666)
> >
> >     #### USeR LOCation module
> >     loadmodule "usrloc.so"
> >     modparam("usrloc", "nat_bflag", "NAT")
> >     modparam("usrloc", "working_mode_preset", "single-instance-no-db")
> >
> >     #### REGISTRAR module
> >     loadmodule "registrar.so"
> >     modparam("registrar", "retry_after", 30)
> >
> >     #### DIALOG module
> >     loadmodule "dialog.so"
> >     modparam("dialog", "enable_stats", 0)
> >     modparam("dialog", "hash_size", 1024)
> >     modparam("dialog", "log_profile_hash_size", 4)
> >     modparam("dialog", "default_timeout", 21600) # 6h
> >     modparam("dialog", "dlg_extra_hdrs", "Hint: credit expired\r\n")
> >     modparam("dialog", "dlg_match_mode", 0)
> >     modparam("dialog", "options_ping_interval", 20)
> >     modparam("dialog", "reinvite_ping_interval", 600)
> >
> >     ### nat_traversal
> >     loadmodule "nat_traversal.so"
> >     modparam("nat_traversal", "keepalive_interval", 60)
> >     modparam("nat_traversal", "keepalive_method", "OPTIONS")
> >     modparam("nat_traversal", "keepalive_from",
> >     "sip:keepalive at opensips.proxy")
> >     modparam("nat_traversal", "keepalive_extra_headers", "User-Agent:
> >     OpenSIPS\r\nX-NAT: yes\r\n")
> >     modparam("nat_traversal", "keepalive_state_file",
> >     "/var/run/opensips/keepalive_state")
> >
> >
> >
>  ######################################################################
> >     ## Dispatcher Module Parameters
> >
>  ######################################################################
> >     loadmodule "dispatcher.so"
> >     #modparam("dispatcher", "list_file", "/etc/opensips/dispatcher.list")
> >     modparam("dispatcher", "db_url",
> >     "mysql://opensips:opensipsrw@localhost/opensips")
> >     modparam("dispatcher", "dst_avp", "$avp(271)")
> >     modparam("dispatcher", "attrs_avp", "$avp(272)")
> >     modparam("dispatcher", "grp_avp", "$avp(273)")
> >     modparam("dispatcher", "cnt_avp", "$avp(274)")
> >     modparam("dispatcher", "hash_pvar", "$avp(273)")
> >     modparam("dispatcher", "ds_ping_method", "OPTIONS")
> >     modparam("dispatcher", "ds_ping_from", "sip:sipcheck at opensips.proxy
> ")
> >     modparam("dispatcher", "ds_ping_interval", 10)
> >     modparam("dispatcher", "ds_probing_threshhold", 3)
> >     modparam("dispatcher", "ds_probing_mode", 1)
> >     modparam("dispatcher", "options_reply_codes", "501,403,404,400,200")
> >
> >     loadmodule "proto_udp.so"
> >
> >     ####### Routing Logic ########
> >     # main request routing logic
> >
> >     route{
> >
> >     if (!mf_process_maxfwd_header(10)) {
> >     send_reply(483,"Max hops reached");
> >     exit;
> >     }
> >
> >     if (has_totag()) {
> >
> >     # handle hop-by-hop ACK (no routing required)
> >     if ( is_method("ACK") && t_check_trans() ) {
> >     t_relay();
> >     exit;
> >     }
> >
> >     # sequential request within a dialog should
> >     # take the path determined by record-routing
> >     if ( !loose_route() ) {
> >     # we do record-routing for all our traffic, so we should not
> >     # receive any sequential requests without Route hdr.
> >     send_reply(404,"Not here");
> >     exit;
> >     }
> >
> >     # route it out to whatever destination was set by loose_route()
> >     # in $du (destination URI).
> >     route(relay);
> >     exit;
> >     }
> >
> >     # CANCEL processing
> >     if (is_method("CANCEL")) {
> >     if (t_check_trans())
> >     t_relay();
> >     exit;
> >     }
> >
> >     # absorb retransmissions, but do not create transaction
> >     t_check_trans();
> >
> >     if ( !(is_method("REGISTER")  ) ) {
> >     if (is_myself("$fd")) {
> >     # do nothing
> >     } else {
> >     # if caller is not local, then called number must be local
> >     if (!is_myself("$rd")) {
> >     send_reply(403,"Relay Forbidden On: $si ");
> >     #send_reply(200,"Relay $fd ");
> >     exit;
> >     }
> >     }
> >
> >     }
> >
> >     # preloaded route checking
> >     if (loose_route()) {
> >     xlog("L_ERR",
> >     "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]");
> >     if (!is_method("ACK"))
> >     send_reply(403,"Preload Route denied");
> >     exit;
> >     }
> >
> >     # record routing
> >     if (!is_method("REGISTER|MESSAGE"))
> >     record_route();
> >
> >     if (!is_myself("$rd")) {
> >     append_hf("P-hint: outbound\r\n");
> >     route(relay);
> >     }
> >
> >     # requests for my domain
> >     if (is_method("PUBLISH|SUBSCRIBE")) {
> >     send_reply(503, "Service Unavailable");
> >     exit;
> >     }
> >
> >     if (is_method("REGISTER")) {
> >     if (!save("location"))
> >     sl_reply_error();
> >
> >     exit;
> >     }
> >
> >     if ($rU==NULL) {
> >     # request with no Username in RURI
> >     send_reply(484,"Address Incomplete");
> >     exit;
> >     }
> >
> >     # do lookup with method filtering
> >     if (!lookup("location","m")) {
> >     t_reply(404, "Not Found");
> >     exit;
> >     }
> >
> >     route(relay);
> >     }
> >
> >
> >     route[relay] {
> >     # for INVITEs enable some additional helper routes
> >     if (is_method("INVITE")) {
> >     t_on_branch("per_branch_ops");
> >     t_on_reply("handle_nat");
> >     t_on_failure("missed_call");
> >     }
> >
> >     if (!t_relay()) {
> >     send_reply(500,"Internal Error");
> >     }
> >     exit;
> >
> >
> >     switch ($fd){
> >     case "asterisk1.example.com <http://asterisk1.example.com>":
> >     if (!ds_select_dst(1, 0)) {
> >     log("ERROR: no active destinations found!\n");
> >     send_reply(503, "Service Unavailable");
> >     exit;
> >     }
> >     ds_select_dst(1, 8, "ud", "default", 1);
> >     break;
> >     case "asterisk1.example.com <http://asterisk1.example.com>":
> >     if (!ds_select_dst(2, 0)) {
> >     log("ERROR: no active destinations found!\n");
> >     send_reply(503, "Service Unavailable");
> >     exit;
> >     }
> >     ds_select_dst(2, 8, "ud", "default", 1);
> >     break;
> >     case "asterisk1.example.com <http://asterisk1.example.com>":
> >     if (!ds_select_dst(3, 0)) {
> >     log("ERROR: no active destinations found!\n");
> >     send_reply(503, "Service Unavailable");
> >     exit;
> >     }
> >     ds_select_dst(3, 8, "ud", "default", 1);
> >     log("---- flag value is $dd -- branch $fd \n");
> >     break;
> >     default:
> >          log("unknow destination");
> >          exit;
> >     }
> >     }
> >
> >
> >
> >
> >     branch_route[per_branch_ops] {
> >     xlog("new branch at $ru\n");
> >     }
> >
> >
> >     onreply_route[handle_nat] {
> >     xlog("incoming reply\n");
> >     }
> >
> >
> >     failure_route[missed_call] {
> >     if (t_was_cancelled()) {
> >     exit;
> >     }
> >     }
> >
> >
> > _______________________________________________
> > Users mailing list
> > Users at lists.opensips.org
> > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> >
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20201022/1587e84c/attachment-0001.html>


More information about the Users mailing list