Any hints about this? On Tue, Sep 29, 2020 at 4:46 PM Mihai <m...@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 > ####### 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@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@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": > 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": > 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": > 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@lists.opensips.org http://lists.opensips.org/cgi-bin/mailman/listinfo/users