Daniel, Klaus thanks a lot for your responses i do appreciate them, just got me a bit confuse because on the documents as what Daniel suggest to advertise directive for listen parameter, I do if you see my config below that i advertise it and have an alias, kamailio still sends an invite to itself without recognizing that it came from the internal ip.
Is there anything else wrong that i am not putting on my advertise line ?
thanks i really apreciate your input.
Julian.
*listen=udp:1.1.1.1:5060 advertise 2.2.2.2:5060*>>* *>>**>>* alias=1.1.1.1:5060 http://1.1.1.1:5060*>>* alias=1.1.1.1*>>* alias=2.2.2.2:5060 http://2.2.2.2:5060*>>* alias=2.2.2.2*
Hello,
for reference, in case kamailio is running behind nat, like on AWS, one should just use advertise directive for listen parameter, like:>
listen=proto:privateip:port advertise publicip:port>
See:
http://www.kamailio.org/wiki/cookbooks/4.0.x/core#listen
It simplifies the config by not needing to use alias parameter, advertised_address/set_addvertised_address() and record_route_preset().>
Cheers, Daniel
On 10/18/13 8:23 AM, Klaus Darilion wrote: **>**>* On 17.10.2013 17:31, julian arsanches wrote:*>>* Hi all, before hand thanks for all the support received on this channel.*>>**>>* I have an issue with an installed server on a aws instance which is*>>* giving me routing loops, my setup is simple, i have alias set for both*>>* ips internal and external and the loop still present when t_relay don't*>>* find any routes to relay it just sent it to itself with the public ip*>>* then the loop starts.*>>**>>* can any one please advise how can i prevent that or just tell t_relay*>>* that if there is no more routes just respond with a cancel or stop*>>* searching.*>**>* If you call t_relay, then the message will be forwarded to $ru (or to *>* $du if $du is set). t_relay itself does not have any logic inside.*>**>* Thus, if you do not want a message to be forwarded, then you must not *>* call t_relay.*>**>* If you do not want to send a message to a certain destination, then *>* set $ru (the domain part) to the respective destination.*>**>* One issue may be the aliases. If Kamailio thinks that it is not *>* authoritative for a domain, then it forwards the message to the *>* domain. Kamailio by default feels authoritative for the IP addresses *>* on which it listens (the private IP addresses). Thus if a request is *>* received by Kamailio, but the RURI (request URI, $ru) indicated the *>* public IP address, KAmailio by default forwards the message to the *>* respective RURI (which my be forward again by AWS NAT to Kamailio).*>**>* Thus, alias=public.ip.addr.ess must be added to the config.*>**>* If there are still problems you have set debug=4 and track in the log *>* file how the message is processed, and where the routing decision *>* takes the wrong direction.*>**>* regards*>* Klaus*>**>>**>>* same thing happens when a gw code is not found on the dispatcher list *>>* file.*>>**>>* as i had read by just specifying the alias=domain it should take care of*>>* it but it is not happening perhaps because it is a AWS instance, or most*>>* likely i am missing something after the T_relay to stop the call from*>>* looping.*>>**>>* I do have several headers fix because i have an asterisk sending calls*>>* with lots of signalling calls added to the call that i need to remove*>>* before the call is passed out to a carrier or another UA, Kamailio is*>>* just proxing the calls between asterisk and the outside world no Media*>>* handling, No registrations.*>>**>>* Again thanks for any tips to find my answer or if anyone had a similar*>>* issue thanks again.*>>**>>* thanks for any help .*>>**>>* Julian.*>>**>>* on this setup i have*>>**>>* public ip as 2.2.2.2*>>**>>* private IP as 1.1.1.1*>>**>>**>>* #!KAMAILIO*>>* ####### Global Parameters #########*>>**>>* #!ifdef WITH_DEBUG*>>* debug=4*>>* log_stderror=yes*>>* #!else*>>* #debug=2*>>* #log_stderror=yes*>>* #!endif*>>**>>* memdbg=5*>>* memlog=5*>>**>>* log_facility=LOG_LOCAL7*>>**>>* fork=yes*>>* children=6*>>**>>* auto_aliases=no*>>**>>**>>* listen=udp:1.1.1.1:5060 http://1.1.1.1:5060 advertise 2.2.2.2:5060*>>* http://2.2.2.2:5060*>>**>>* alias=1.1.1.1:5060 http://1.1.1.1:5060*>>* alias=1.1.1.1*>>* alias=2.2.2.2:5060 http://2.2.2.2:5060*>>* alias=2.2.2.2*>>**>>**>>* port=5060*>>**>>* enable_tls=no*>>**>>* #tcp_connection_lifetime=3605*>>**>>* #!ifdef WITH_SRCPATH*>>* mpath="modules_k:modules"*>>* #!else*>>* mpath="/usr/lib64/kamailio/modules_k/:/usr/lib64/kamailio/modules/"*>>**>>* #!endif*>>* loadmodule "db_mysql.so"*>>* ##loadmodule "mi_fifo.so"*>>* loadmodule "tm.so"*>>* loadmodule "sl.so"*>>* loadmodule "acc.so"*>>* loadmodule "rr.so"*>>* loadmodule "maxfwd.so"*>>* loadmodule "uac.so"*>>* loadmodule "textops.so"*>>* loadmodule "pv.so"*>>* loadmodule "dispatcher.so"*>>* loadmodule "usrloc.so"*>>* loadmodule "registrar.so"*>>* loadmodule "siputils.so"*>>* loadmodule "sanity.so"*>>* loadmodule "ctl.so"*>>* loadmodule "mi_rpc.so"*>>* loadmodule "avpops.so"*>>* #!ifdef WITH_NAT*>>* loadmodule "nathelper.so"*>>* loadmodule "rtpproxy.so"*>>* #!endif*>>* loadmodule "xlog.so"*>>* ##mysqlcdr*>>* modparam("acc", "db_flag", 2)*>>* modparam("acc", "db_missed_flag", 3)*>>* modparam("acc", "report_cancels", 1)*>>* modparam("acc", "db_url", "mysql://openser:password@1.1.1.2/openser*>>* http://openser:password@1.1.1.2/openser")*>>* modparam("acc", "db_extra", "from_uri=$fu; to_uri=$tu; intid=$fU;*>>* type_call=$si; dst_ip=$ru; carriercode=$tu;callmode=$var(out)" )*>>**>>* #loadmodule "carrierroute"*>>* modparam("tm", "cancel_b_method", 1)*>>* modparam("tm", "failure_reply_mode", 3)*>>* modparam("tm", "fr_timer", 30000)*>>* modparam("tm", "fr_inv_timer", 120000)*>>**>>* modparam("dispatcher", "list_file", "/etc/kamailio/dispatcher.lst")*>>* modparam("rr", "enable_full_lr", 1)*>>**>>* #!ifdef WITH_NAT*>>* # ----- rtpproxy params -----*>>* modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:7722*>>* http://127.0.0.1:7722")*>>**>>* # ----- nathelper params -----*>>* modparam("nathelper", "natping_interval", 30)*>>* modparam("nathelper", "ping_nated_only", 1)*>>* modparam("nathelper", "sipping_bflag", FLB_NATSIPPING)*>>* modparam("nathelper", "sipping_from", "sip:pinger at kamailio.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users*>>* <mailto:sip%3Apinger at kamailio.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users>")*>>* # ----- mi_fifo params -----*>>**>>* ##modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")*>>**>>* # params needed for NAT traversal in other modules*>>* modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)")*>>* modparam("usrloc", "nat_bflag", FLB_NATB)*>>* #!endif*>>* modparam("xlog", "buf_size", 8192)*>>* modparam("xlog", "force_color", 1)*>>* #carrierroute*>>* #modparam("carrierroute", "config_file", *>>* "/etc/kamailio/carrierroute.conf")*>>* #end carrierroute*>>**>>* modparam("pv", "shvset", "ruta=s:$ru")*>>* modparam("pv", "varset","in=s:IN")*>>* modparam("pv", "varset","out=s:OUT")*>>* #################BEGINING MAINROUTE##################*>>* request_route {*>>**>>* if (!mf_process_maxfwd_header("4")) {*>>* sl_send_reply("483","Too Many Hops");*>>* drop;*>>* exit;*>>* }*>>* ##*>>* # initial sanity checks -- too long messages*>>* if (msg:len >= 2048 ) {*>>* sl_send_reply("513", "Message too big");*>>* xlog("out header CHECK 513 baderror from_uri=$fu;($ct++)<$tU---=$var(n)>*>>* to_uri=$tu; intid=$fU; type_call=$si; dst_ip=$ru;*>>* carriercode=$var(z);callmode=$var(out)");*>>* drop;*>>* exit;*>>* };*>>* #*>>* if(is_method("OPTIONS")) {*>>* # send reply for each options request*>>* sl_send_reply("200", "ok");*>>* exit();*>>* }*>>**>>**>>**>>* #*>>* if ( is_method("ACK") ) {*>>* if ( t_check_trans() ) {*>>* # no loose-route, but stateful ACK;*>>* # must be an ACK after a 487*>>* # or e.g. 404 from upstream server*>>* $var(n)=$(tU{s.substr,3,0});*>>* $var(i)=$(ct{re.subst,/^.*11811(.*)/"\1/});*>>**>>* $var(t)=$(fn{re.subst,/^.*11811(.*)/"\1/});*>>**>>* $var(r)=$rd; ##to domain*>>* $fU=$(fU{s.substr,14,0});*>>* $fn=$var(t);*>>* $tU=$var(n);*>>* $td=$var(r);*>>**>>* subst('/^Contact:.*11811(.*)$/Contact: sip:\1\2/ig');*>**>>* # Remove prefixes numbers from Contact*>>* t_relay();*>>* exit;*>>* } else {*>>* # ACK without matching transaction ... ignore and discard*>>* $var(n)=$(tU{s.substr,3,0});*>>* $var(i)=$(ct{re.subst,/^.*11811(.*)/"\1/});*>>**>>* $var(t)=$(fn{re.subst,/^.*11811(.*)/"\1/});*>>**>>* $var(r)=$rd; ##to domain*>>* $fU=$(fU{s.substr,14,0});*>>* $fn=$var(t);*>>* $tU=$var(n);*>>* $td=$var(r);*>>**>>* subst('/^Contact:.*11811(.*)$/Contact: sip:\1\2/ig');*>* t_relay();*>>* exit;*>>* }*>>* }*>>* ##responding to bye requests and modifying headers to match invite*>>* if(method=="BYE") {*>>* #Account BYE transactions*>>* #$var(d) = $tu;*>>* #$var(e)=$(var(d){s.substr,4,3});*>>* setflag(2);*>>* setflag(10);*>>* $var(n)=$(tU{s.substr,3,0});*>>* $var(i)=$(ct{re.subst,/^.*11811(.*)/"\1/});*>>**>>* $var(t)=$(fn{re.subst,/^.*11811(.*)/"\1/});*>>**>>* $var(r)=$rd; ##to domain*>>* $fU=$(fU{s.substr,14,0});*>>* $fn=$var(t);*>>* $tU=$var(n);*>>* $td=$var(r);*>>**>>* subst('/^Contact:.*11811(.*)$/Contact: sip:\1\2/ig');*>* t_relay();*>>* exit;*>>* };*>>**>>* #CANCEL processing*>>* if (method=="CANCEL") {*>>* setflag(2);*>>* setflag(3);*>>* $var(n)=$(tU{s.substr,3,0});*>>* $var(i)=$(ct{re.subst,/^.*11811(.*)/"\1/});*>>**>>* $var(t)=$(fn{re.subst,/^.*11811(.*)/"\1/});*>>**>>* $var(r)=$rd; ##to domain*>>* $fU=$(fU{s.substr,14,0});*>>* $fn=$var(t);*>>* $tU=$var(n);*>>* $td=$var(r);*>>**>>* subst('/^Contact:.*11811(.*)$/Contact: sip:\1\2/ig');*>* t_relay();*>>* exit;*>>* ##if (t_check_trans()) t_relay();*>>**>>* exit;*>>* };*>>**>>**>>* #*>>**>>**>>* #*>>* if (loose_route()) {*>>**>>**>>* ##*>>* if(is_method("OPTIONS")) {*>>* # send reply for each options request*>>* sl_send_reply("200", "ok");*>>* exit();*>>* }*>>* ##*>>* if(method=="BYE") {*>>* #Account BYE transactions*>>* setflag(2);*>>* };*>>**>>**>>* ##CANCEL processing*>>* if (method=="CANCEL") {*>>* setflag(3);*>>* $var(n)=$(tU{s.substr,3,0});*>>* $var(i)=$(ct{re.subst,/^.*11811(.*)/"\1/});*>>**>>* $var(t)=$(fn{re.subst,/^.*11811(.*)/"\1/});*>>**>>* $var(r)=$rd; ##to domain*>>* $fU=$(fU{s.substr,14,0});*>>* $fn=$var(t);*>>* $tU=$var(n);*>>* $td=$var(r);*>>* subst('/^Contact:.*11811(.*)$/Contact: sip:\1\2/ig');*>* if (t_check_trans()) t_relay();*>>* exit;*>>* };*>>**>>* if (!t_relay()) {*>>* sl_reply_error();*>>* }*>>* exit;*>>* }*>>**>>**>>* if (is_method("INVITE")) { #Procesing invites*>>**>>**>>* record_route();*>>* }*>>* ##LOGGING CALL BEFORE IS PROCESSED*>>* xlog("before strip,< time [$Tf] > Aip= $src_ip, r-uri($ru\n");*>>* xlog("before from_uri=$fu; to_uri=$tu; pai=<<$ct>>;intid=$fU;*>>* type_call=$si; dst_ip=$ru; carriercode=$tu;callmode=$var(out) *>>* --$$--$ou");*>>* #creando rutas*>>* setflag(2);*>>* # Account Missed calls*>>* setflag(3);*>>* ###VARIABLES FOR MODIFICATIONS*>>* $var(x) = $(ru);*>>**>>* $var(y)=$(var(x){s.substr,4,3});*>>**>>* $var(z)=$(var(y){s.int http://s.int});*>>**>>* $var(t)=$(var(x){s.substr,7,0});*>>**>>* $var(h)=$(var(x){s.substr,0,7});*>>**>>* $var(o)=$(fU{s.substr,14,0});*>>**>>* if($(var(x){s.len}) < 3)*>>* {*>>* $var(z)='0'+ $var(z);*>>* }*>>**>>* xlog("dsroute $var(z)fullruri($ru)\n");*>>**>>**>>* strip(3);*>>**>>* xlog("after strip time [$Tf] method ($rm) via el code*>>* ($var(z)--varhex($var(h))-- ($var(y))\n");*>>* xlog("after from_uri=$fu; to_uri=$tu; intid=$fU; type_call=$si;*>>* dst_ip=$ru; carriercode=$var(z);callmode=$var(out)");*>>**>>* ds_select_domain ("$var(z)", "4");#carrer dynamic*>>**>>**>>* ###########KILLING BUGGIES#######when t_realy fails to find a route a*>>* loop is generate then strip takes off a digit until 0 at 2.2.2.2 http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users*>>* <mailto:0 at 2.2.2.2 http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users> is left for to: user this kills that call.#####*>>* if ($(tU{s.len}) < 4) {*>>* xlog("CHECK TU 1bad kILLING BUGGIES>>> $tu--$td-$tU-$tt--$dd-$dd-$du-*>>* -<<$rd>$ru --- $oU> pai+++ <<$ct>>++ from_uri=$fu;<$tU---=$var(n)>*>>* to_uri=$tu; }pai<$ai> id=$fU; type_call=$si; dst_ip=$ru;*>>* carriercode=$var(z);callmode=$var(out)");*>>* ##sl_reply_error();*>>* ##sl_send_reply("513", "Message too big");*>>* ##sl_send_reply("488","Not Acceptable Here");*>>* sl_send_reply("488","Not Acceptable Here");*>>* #t_reset_retr();*>>* #t_release();*>>* ##if(!t_relay()){ sl_reply_error(); drop; exit;}*>>**>>* #if (!t_relay()) { sl_reply_error(); break; };*>>* # t_relay();*>>* #setflag(2);*>>* drop;*>>* exit;*>>**>>* }; ## Endif less than 4*>>* ##############END KILLING###########*>>* ################ROUTE SELECTION###############*>>* if($(fn{s.len}) > 10) { # IF WE CHECK FOR FROM: ROUTEID MUST BE LONGER*>>* THAN 10 DIGITS TO BE A VALID ROUTE*>>**>>* xlog("out header CHECK more than 10 digits BEFORE*>>* from_uri=$fu;($ct++)<$tU---=$var(n)> to_uri=$tu; intid=$fU;*>>* type_call=$si; dst_ip=$ru; carriercode=$var(z);callmode=$var(out)");*>>* $var(n)=$(tU{s.substr,3,0});*>>* $var(i)=$(ct{re.subst,/^.*00700(.*)/"\1/});*>>* $var(t)=$(fn{re.subst,/^.*00700(.*)/"\1/});*>>* $var(r)=$rd; ##to domain*>>* $fU=$(fU{s.substr,14,0});*>>* $fn=$var(t);*>>* $tU=$var(n);*>>* $td=$var(r);*>>**>>* subst('/^Contact:.*11811(.*)$/Contact: <sip:\1\2/ig'); # Remove number*>>* from Contact*>>**>>* ##if(!t_relay()){ sl_reply_error(); drop; exit;}*>>**>>* if (!t_relay()) { sl_reply_error(); break; };*>>**>>* # t_relay();*>>**>>* drop;*>>* exit;*>>**>>* };*>>**>>* ################ENDrouteselect##############################*>>**>>**>>* ###############AFTER LAST IF##############reply 488 ANY CALL THAT DID*>>* NOT FOUND A ROUTE.*>>* sl_send_reply("488","Not Acceptable Here");*>>* drop;*>>* exit;*>>* }*>>**>>* ###################END MAINROUTE#################*>>**>>**>>**>>**>>**>>* On My dispatcher.lst i have*>>**>>**>>* 1 sip:1.1.1.1:5060 http://1.1.1.1:5060*>>* 2 sip:2.2.2.2:5060 http://2.2.2.2:5060*>>* 3 sip:3.3.3.3:5060 http://3.3.3.3:5060*>>* 3 sip:3.3.3.5:5060 http://3.3.3.5:5060*>>* ...*>>**>>**>>**>>**>>* _______________________________________________*>>* SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list*>>* sr-users at lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users*>>* http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users*%3E%3E**%3E**%... _______________________________________________*>* SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list*>* sr-users at lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users*>* http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users*
It's difficult and time consuming to debug issues without seeing the config file and without seeing the packet traces (ngrep -W byline -d any -t -q -p "" port 5060).
Anyway, as an admin you should understand how Kamailio works. Thus it would be a good exercise to find the problem yourself. In severl places in your config you have routing decisions (if ... {}). Identify these places, and put meaningful logging (xlog("...") ) before and after the if statement.
Then make a call and watch the logfile. This will give you an understanding how Kamailio works.
regards Klaus
On 21.10.2013 16:04, julian arsanches wrote:
Daniel, Klaus thanks a lot for your responses i do appreciate them, just got me a bit confuse because on the documents as what Daniel suggest to advertise directive for listen parameter, I do if you see my config below that i advertise it and have an alias, kamailio still sends an invite to itself without recognizing that it came from the internal ip.
Is there anything else wrong that i am not putting on my advertise line ?
thanks i really apreciate your input.
Julian.
/listen=udp:1.1.1.1:5060 http://1.1.1.1:5060 advertise2.2.2.2:5060 http://2.2.2.2:5060 />>/ />>/ />>/ alias=1.1.1.1:5060 http://1.1.1.1:5060 <http://1.1.1.1:5060 http://1.1.1.1:5060/> />>/ alias=1.1.1.1 />>/ alias=2.2.2.2:5060 http://2.2.2.2:5060 <http://2.2.2.2:5060 http://2.2.2.2:5060/> />>/ alias=2.2.2.2/
Hello,
for reference, in case kamailio is running behind nat, like on AWS, one should just use advertise directive for listen parameter, like:>
listen=proto:privateip:port advertise publicip:port>
See:
http://www.kamailio.org/wiki/cookbooks/4.0.x/core#listen
It simplifies the config by not needing to use alias parameter, advertised_address/set_addvertised_address() and record_route_preset().>
Cheers, Daniel
On 10/18/13 8:23 AM, Klaus Darilion wrote: /
/>/ />/ On 17.10.2013 17:31, julian arsanches wrote: />>/ Hi all, before hand thanks for all the support received on this channel. />>/ />>/ I have an issue with an installed server on a aws instance which is />>/ giving me routing loops, my setup is simple, i have alias set for both />>/ ips internal and external and the loop still present when t_relay don't />>/ find any routes to relay it just sent it to itself with the public ip />>/ then the loop starts. />>/ />>/ can any one please advise how can i prevent that or just tell t_relay />>/ that if there is no more routes just respond with a cancel or stop />>/ searching. />/ />/ If you call t_relay, then the message will be forwarded to $ru (or to />/ $du if $du is set). t_relay itself does not have any logic inside. />/ />/ Thus, if you do not want a message to be forwarded, then you must not />/ call t_relay. />/ />/ If you do not want to send a message to a certain destination, then />/ set $ru (the domain part) to the respective destination. />/ />/ One issue may be the aliases. If Kamailio thinks that it is not />/ authoritative for a domain, then it forwards the message to the />/ domain. Kamailio by default feels authoritative for the IP addresses />/ on which it listens (the private IP addresses). Thus if a request is />/ received by Kamailio, but the RURI (request URI, $ru) indicated the />/ public IP address, KAmailio by default forwards the message to the />/ respective RURI (which my be forward again by AWS NAT to Kamailio). />/ />/ Thus, alias=public.ip.addr.ess must be added to the config. />/ />/ If there are still problems you have set debug=4 and track in the log />/ file how the message is processed, and where the routing decision />/ takes the wrong direction. />/ />/ regards />/ Klaus />/ />>/ />>/ same thing happens when a gw code is not found on the dispatcher list />>/ file. />>/ />>/ as i had read by just specifying the alias=domain it should take care of />>/ it but it is not happening perhaps because it is a AWS instance, or most />>/ likely i am missing something after the T_relay to stop the call from />>/ looping. />>/ />>/ I do have several headers fix because i have an asterisk sending calls />>/ with lots of signalling calls added to the call that i need to remove />>/ before the call is passed out to a carrier or another UA, Kamailio is />>/ just proxing the calls between asterisk and the outside world no Media />>/ handling, No registrations. />>/ />>/ Again thanks for any tips to find my answer or if anyone had a similar />>/ issue thanks again. />>/ />>/ thanks for any help . />>/ />>/ Julian. />>/ />>/ on this setup i have />>/ />>/ public ip as 2.2.2.2 />>/ />>/ private IP as 1.1.1.1 />>/ />>/ />>/ #!KAMAILIO />>/ ####### Global Parameters ######### />>/ />>/ #!ifdef WITH_DEBUG />>/ debug=4 />>/ log_stderror=yes />>/ #!else />>/ #debug=2 />>/ #log_stderror=yes />>/ #!endif />>/ />>/ memdbg=5 />>/ memlog=5 />>/ />>/ log_facility=LOG_LOCAL7 />>/ />>/ fork=yes />>/ children=6 />>/ />>/ auto_aliases=no />>/ />>/ />>/ listen=udp:1.1.1.1:5060 http://1.1.1.1:5060 <http://1.1.1.1:5060 http://1.1.1.1:5060/> advertise2.2.2.2:5060 http://2.2.2.2:5060 />>/ <http://2.2.2.2:5060 http://2.2.2.2:5060/> />>/ />>/ alias=1.1.1.1:5060 http://1.1.1.1:5060 <http://1.1.1.1:5060 http://1.1.1.1:5060/> />>/ alias=1.1.1.1 />>/ alias=2.2.2.2:5060 http://2.2.2.2:5060 <http://2.2.2.2:5060 http://2.2.2.2:5060/> />>/ alias=2.2.2.2 />>/ />>/ />>/ port=5060 />>/ />>/ enable_tls=no />>/ />>/ #tcp_connection_lifetime=3605 />>/ />>/ #!ifdef WITH_SRCPATH />>/ mpath="modules_k:modules" />>/ #!else />>/ mpath="/usr/lib64/kamailio/modules_k/:/usr/lib64/kamailio/modules/" />>/ />>/ #!endif />>/ loadmodule "db_mysql.so" />>/ ##loadmodule "mi_fifo.so" />>/ loadmodule "tm.so" />>/ loadmodule "sl.so" />>/ loadmodule "acc.so" />>/ loadmodule "rr.so" />>/ loadmodule "maxfwd.so" />>/ loadmodule "uac.so" />>/ loadmodule "textops.so" />>/ loadmodule "pv.so" />>/ loadmodule "dispatcher.so" />>/ loadmodule "usrloc.so" />>/ loadmodule "registrar.so" />>/ loadmodule "siputils.so" />>/ loadmodule "sanity.so" />>/ loadmodule "ctl.so" />>/ loadmodule "mi_rpc.so" />>/ loadmodule "avpops.so" />>/ #!ifdef WITH_NAT />>/ loadmodule "nathelper.so" />>/ loadmodule "rtpproxy.so" />>/ #!endif />>/ loadmodule "xlog.so" />>/ ##mysqlcdr />>/ modparam("acc", "db_flag", 2) />>/ modparam("acc", "db_missed_flag", 3) />>/ modparam("acc", "report_cancels", 1) />>/ modparam("acc", "db_url", "mysql://openser:password@1.1.1.2/openser />>/ http://openser:password@1.1.1.2/openser") />>/ modparam("acc", "db_extra", "from_uri=$fu; to_uri=$tu; intid=$fU; />>/ type_call=$si; dst_ip=$ru; carriercode=$tu;callmode=$var(out)" ) />>/ />>/ #loadmodule "carrierroute" />>/ modparam("tm", "cancel_b_method", 1) />>/ modparam("tm", "failure_reply_mode", 3) />>/ modparam("tm", "fr_timer", 30000) />>/ modparam("tm", "fr_inv_timer", 120000) />>/ />>/ modparam("dispatcher", "list_file", "/etc/kamailio/dispatcher.lst") />>/ modparam("rr", "enable_full_lr", 1) />>/ />>/ #!ifdef WITH_NAT />>/ # ----- rtpproxy params ----- />>/ modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:7722 http://127.0.0.1:7722 />>/ <http://127.0.0.1:7722 http://127.0.0.1:7722/>") />>/ />>/ # ----- nathelper params ----- />>/ modparam("nathelper", "natping_interval", 30) />>/ modparam("nathelper", "ping_nated_only", 1) />>/ modparam("nathelper", "sipping_bflag", FLB_NATSIPPING) />>/ modparam("nathelper", "sipping_from", "sip:pinger at kamailio.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users />>/ <mailto:sip% mailto:sip%253Apinger at kamailio.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users>") />>/ # ----- mi_fifo params ----- />>/ />>/ ##modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo") />>/ />>/ # params needed for NAT traversal in other modules />>/ modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)") />>/ modparam("usrloc", "nat_bflag", FLB_NATB) />>/ #!endif />>/ modparam("xlog", "buf_size", 8192) />>/ modparam("xlog", "force_color", 1) />>/ #carrierroute />>/ #modparam("carrierroute", "config_file", />>/ "/etc/kamailio/carrierroute.conf") />>/ #end carrierroute />>/ />>/ modparam("pv", "shvset", "ruta=s:$ru") />>/ modparam("pv", "varset","in=s:IN") />>/ modparam("pv", "varset","out=s:OUT") />>/ #################BEGINING MAINROUTE################## />>/ request_route { />>/ />>/ if (!mf_process_maxfwd_header("4")) { />>/ sl_send_reply("483","Too Many Hops"); />>/ drop; />>/ exit; />>/ } />>/ ## />>/ # initial sanity checks -- too long messages />>/ if (msg:len >= 2048 ) { />>/ sl_send_reply("513", "Message too big"); />>/ xlog("out header CHECK 513 baderror from_uri=$fu;($ct++)<$tU---=$var(n)> />>/ to_uri=$tu; intid=$fU; type_call=$si; dst_ip=$ru; />>/ carriercode=$var(z);callmode=$var(out)"); />>/ drop; />>/ exit; />>/ }; />>/ # />>/ if(is_method("OPTIONS")) { />>/ # send reply for each options request />>/ sl_send_reply("200", "ok"); />>/ exit(); />>/ } />>/ />>/ />>/ />>/ # />>/ if ( is_method("ACK") ) { />>/ if ( t_check_trans() ) { />>/ # no loose-route, but stateful ACK; />>/ # must be an ACK after a 487 />>/ # or e.g. 404 from upstream server />>/ $var(n)=$(tU{s.substr,3,0}); />>/ $var(i)=$(ct{re.subst,/^.*11811(.*)/"\1/}); />>/ />>/ $var(t)=$(fn{re.subst,/^.*11811(.*)/"\1/}); />>/ />>/ $var(r)=$rd; ##to domain />>/ $fU=$(fU{s.substr,14,0}); />>/ $fn=$var(t); />>/ $tU=$var(n); />>/ $td=$var(r); />>/ />>/ subst('/^Contact:.*11811(.*)$/Contact: sip:\1\2/ig'); />/ />>/ # Remove prefixes numbers from Contact\ />>/ t_relay(); />>/ exit; />>/ } else { />>/ # ACK without matching transaction ... ignore and discard />>/ $var(n)=$(tU{s.substr,3,0}); />>/ $var(i)=$(ct{re.subst,/^.*11811(.*)/"\1/}); />>/ />>/ $var(t)=$(fn{re.subst,/^.*11811(.*)/"\1/}); />>/ />>/ $var(r)=$rd; ##to domain />>/ $fU=$(fU{s.substr,14,0}); />>/ $fn=$var(t); />>/ $tU=$var(n); />>/ $td=$var(r); />>/ />>/ subst('/^Contact:.*11811(.*)$/Contact: sip:\1\2/ig'); />/ t_relay(); />>/ exit; />>/ } />>/ } />>/ ##responding to bye requests and modifying headers to match invite />>/ if(method=="BYE") { />>/ #Account BYE transactions />>/ #$var(d) = $tu; />>/ #$var(e)=$(var(d){s.substr,4,3}); />>/ setflag(2); />>/ setflag(10); />>/ $var(n)=$(tU{s.substr,3,0}); />>/ $var(i)=$(ct{re.subst,/^.*11811(.*)/"\1/}); />>/ />>/ $var(t)=$(fn{re.subst,/^.*11811(.*)/"\1/}); />>/ />>/ $var(r)=$rd; ##to domain />>/ $fU=$(fU{s.substr,14,0}); />>/ $fn=$var(t); />>/ $tU=$var(n); />>/ $td=$var(r); />>/ />>/ subst('/^Contact:.*11811(.*)$/Contact: sip:\1\2/ig'); />/ t_relay(); />>/ exit; />>/ }; />>/ />>/ #CANCEL processing />>/ if (method=="CANCEL") { />>/ setflag(2); />>/ setflag(3); />>/ $var(n)=$(tU{s.substr,3,0}); />>/ $var(i)=$(ct{re.subst,/^.*11811(.*)/"\1/}); />>/ />>/ $var(t)=$(fn{re.subst,/^.*11811(.*)/"\1/}); />>/ />>/ $var(r)=$rd; ##to domain />>/ $fU=$(fU{s.substr,14,0}); />>/ $fn=$var(t); />>/ $tU=$var(n); />>/ $td=$var(r); />>/ />>/ subst('/^Contact:.*11811(.*)$/Contact: sip:\1\2/ig'); />/ t_relay(); />>/ exit; />>/ ##if (t_check_trans()) t_relay(); />>/ />>/ exit; />>/ }; />>/ />>/ />>/ # />>/ />>/ />>/ # />>/ if (loose_route()) { />>/ />>/ />>/ ## />>/ if(is_method("OPTIONS")) { />>/ # send reply for each options request />>/ sl_send_reply("200", "ok"); />>/ exit(); />>/ } />>/ ## />>/ if(method=="BYE") { />>/ #Account BYE transactions />>/ setflag(2); />>/ }; />>/ />>/ />>/ ##CANCEL processing />>/ if (method=="CANCEL") { />>/ setflag(3); />>/ $var(n)=$(tU{s.substr,3,0}); />>/ $var(i)=$(ct{re.subst,/^.*11811(.*)/"\1/}); />>/ />>/ $var(t)=$(fn{re.subst,/^.*11811(.*)/"\1/}); />>/ />>/ $var(r)=$rd; ##to domain />>/ $fU=$(fU{s.substr,14,0}); />>/ $fn=$var(t); />>/ $tU=$var(n); />>/ $td=$var(r); />>/ subst('/^Contact:.*11811(.*)$/Contact: sip:\1\2/ig'); />/ if (t_check_trans()) t_relay(); />>/ exit; />>/ }; />>/ />>/ if (!t_relay()) { />>/ sl_reply_error(); />>/ } />>/ exit; />>/ } />>/ />>/ />>/ if (is_method("INVITE")) { #Procesing invites />>/ />>/ />>/ record_route(); />>/ } />>/ ##LOGGING CALL BEFORE IS PROCESSED />>/ xlog("before strip,< time [$Tf] > Aip= $src_ip, r-uri($ru\n"); />>/ xlog("before from_uri=$fu; to_uri=$tu; pai=<<$ct>>;intid=$fU; />>/ type_call=$si; dst_ip=$ru; carriercode=$tu;callmode=$var(out) />>/ --$$--$ou"); />>/ #creando rutas />>/ setflag(2); />>/ # Account Missed calls />>/ setflag(3); />>/ ###VARIABLES FOR MODIFICATIONS />>/ $var(x) = $(ru); />>/ />>/ $var(y)=$(var(x){s.substr,4,3}); />>/ />>/ $var(z)=$(var(y){s.int http://s.int <http://s.int http://s.int/>}); />>/ />>/ $var(t)=$(var(x){s.substr,7,0}); />>/ />>/ $var(h)=$(var(x){s.substr,0,7}); />>/ />>/ $var(o)=$(fU{s.substr,14,0}); />>/ />>/ if($(var(x){s.len}) < 3) />>/ { />>/ $var(z)='0'+ $var(z); />>/ } />>/ />>/ xlog("dsroute $var(z)fullruri($ru)\n"); />>/ />>/ />>/ strip(3); />>/ />>/ xlog("after strip time [$Tf] method ($rm) via el code />>/ ($var(z)--varhex($var(h))-- ($var(y))\n"); />>/ xlog("after from_uri=$fu; to_uri=$tu; intid=$fU; type_call=$si; />>/ dst_ip=$ru; carriercode=$var(z);callmode=$var(out)"); />>/ />>/ ds_select_domain ("$var(z)", "4");#carrer dynamic />>/ />>/ />>/ ###########KILLING BUGGIES#######when t_realy fails to find a route a />>/ loop is generate then strip takes off a digit until0 at 2.2.2.2 http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users />>/ <mailto:0 at 2.2.2.2 http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users> is left for to: user this kills that call.##### />>/ if ($(tU{s.len}) < 4) { />>/ xlog("CHECK TU 1bad kILLING BUGGIES>>> $tu--$td-$tU-$tt--$dd-$dd-$du- />>/ -<<$rd>$ru --- $oU> pai+++ <<$ct>>++ from_uri=$fu;<$tU---=$var(n)> />>/ to_uri=$tu; }pai<$ai> id=$fU; type_call=$si; dst_ip=$ru; />>/ carriercode=$var(z);callmode=$var(out)"); />>/ ##sl_reply_error(); />>/ ##sl_send_reply("513", "Message too big"); />>/ ##sl_send_reply("488","Not Acceptable Here"); />>/ sl_send_reply("488","Not Acceptable Here"); />>/ #t_reset_retr(); />>/ #t_release(); />>/ ##if(!t_relay()){ sl_reply_error(); drop; exit;} />>/ />>/ #if (!t_relay()) { sl_reply_error(); break; }; />>/ # t_relay(); />>/ #setflag(2); />>/ drop; />>/ exit; />>/ />>/ }; ## Endif less than 4 />>/ ##############END KILLING########### />>/ ################ROUTE SELECTION############### />>/ if($(fn{s.len}) > 10) { # IF WE CHECK FOR FROM: ROUTEID MUST BE LONGER />>/ THAN 10 DIGITS TO BE A VALID ROUTE />>/ />>/ xlog("out header CHECK more than 10 digits BEFORE />>/ from_uri=$fu;($ct++)<$tU---=$var(n)> to_uri=$tu; intid=$fU; />>/ type_call=$si; dst_ip=$ru; carriercode=$var(z);callmode=$var(out)"); />>/ $var(n)=$(tU{s.substr,3,0}); />>/ $var(i)=$(ct{re.subst,/^.*00700(.*)/"\1/}); />>/ $var(t)=$(fn{re.subst,/^.*00700(.*)/"\1/}); />>/ $var(r)=$rd; ##to domain />>/ $fU=$(fU{s.substr,14,0}); />>/ $fn=$var(t); />>/ $tU=$var(n); />>/ $td=$var(r); />>/ />>/ subst('/^Contact:.*11811(.*)$/Contact: <sip:\1\2/ig'); # Remove number />>/ from Contact />>/ />>/ ##if(!t_relay()){ sl_reply_error(); drop; exit;} />>/ />>/ if (!t_relay()) { sl_reply_error(); break; }; />>/ />>/ # t_relay(); />>/ />>/ drop; />>/ exit; />>/ />>/ }; />>/ />>/ ################ENDrouteselect############################## />>/ />>/ />>/ ###############AFTER LAST IF##############reply 488 ANY CALL THAT DID />>/ NOT FOUND A ROUTE. />>/ sl_send_reply("488","Not Acceptable Here"); />>/ drop; />>/ exit; />>/ } />>/ />>/ ###################END MAINROUTE################# />>/ />>/ />>/ />>/ />>/ />>/ On My dispatcher.lst i have />>/ />>/ />>/ 1 sip:1.1.1.1:5060 http://1.1.1.1:5060 <http://1.1.1.1:5060 http://1.1.1.1:5060/> />>/ 2 sip:2.2.2.2:5060 http://2.2.2.2:5060 <http://2.2.2.2:5060 http://2.2.2.2:5060/> />>/ 3 sip:3.3.3.3:5060 http://3.3.3.3:5060 <http://3.3.3.3:5060 http://3.3.3.3:5060/> />>/ 3 sip:3.3.3.5:5060 http://3.3.3.5:5060 <http://3.3.3.5:5060 http://3.3.3.5:5060/> />>/ ... />>/ />>/ />>/ />>/ />>/ _______________________________________________ />>/ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list />>/ sr-users at lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users />>/ http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users />>/ />/ />/ _______________________________________________ />/ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list />/ sr-users at lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users />/ http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users / -- Daniel-Constantin Mierla -http://www.asipto.com http://www.asipto.com/ http://twitter.com/#!/miconda -http://www.linkedin.com/in/miconda Kamailio Advanced Trainings - Berlin, Nov 25-28; Miami, Nov 18-20, 2013 - more details about Kamailio trainings athttp://www.asipto.com http://www.asipto.com/ -
- Previous message: [SR-Users] Loop detected on aws setup http://lists.sip-router.org/pipermail/sr-users/2013-October/080128.html
- Next message: [SR-Users] Proxy-Registrar call issues http://lists.sip-router.org/pipermail/sr-users/2013-October/080126.html
- *Messages sorted by:* [ date ] http://lists.sip-router.org/pipermail/sr-users/2013-October/date.html#80129 [ thread ] http://lists.sip-router.org/pipermail/sr-users/2013-October/thread.html#80129 [ subject ] http://lists.sip-router.org/pipermail/sr-users/2013-October/subject.html#80129 [ author ] http://lists.sip-router.org/pipermail/sr-users/2013-October/author.html#80129
More information about the sr-users mailing list http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Thank you Klaus i am trying to do that myself if you see on my config on the body of the message i log everything i solve the issue by providing a specific route and eliminating 0 in from of the prefix, it is ok but kamailio still not recognizes itself on aws setup even when i had advertise both ips and i had alias for both ips, if i dont define enything it will loop over until exhaustion, for now i reply with 488 wich tell me something is bad but i thought that kamailio will know when a message is send from itself to itself.
i appreciate your recommendations, unfortunately since i solved that way i have no more traces i will take the routing i added then i will sent some packed traces.
thank you.
On Mon, Oct 21, 2013 at 11:05 AM, Klaus Darilion < klaus.mailinglists@pernau.at> wrote:
It's difficult and time consuming to debug issues without seeing the config file and without seeing the packet traces (ngrep -W byline -d any -t -q -p "" port 5060).
Anyway, as an admin you should understand how Kamailio works. Thus it would be a good exercise to find the problem yourself. In severl places in your config you have routing decisions (if ... {}). Identify these places, and put meaningful logging (xlog("...") ) before and after the if statement.
Then make a call and watch the logfile. This will give you an understanding how Kamailio works.
regards Klaus
On 21.10.2013 16:04, julian arsanches wrote:
Daniel, Klaus thanks a lot for your responses i do appreciate them, just got me a bit confuse because on the documents as what Daniel suggest to advertise directive for listen parameter, I do if you see my config below that i advertise it and have an alias, kamailio still sends an invite to itself without recognizing that it came from the internal ip.
Is there anything else wrong that i am not putting on my advertise line ?
thanks i really apreciate your input.
Julian.
/listen=udp:1.1.1.1:5060 http://1.1.1.1:5060 advertise2.2.2.2:5060 < http://2.2.2.2:5060%3E />>/ />>/ />>/ alias=1.1.1.1:5060 http://1.1.1.1:5060 <http://1.1.1.1:5060 < http://1.1.1.1:5060/%3E%3E />>/ alias=1.1.1.1 />>/ alias=2.2.2.2:5060 http://2.2.2.2:5060 <http://2.2.2.2:5060 < http://2.2.2.2:5060/%3E%3E />>/ alias=2.2.2.2/
Hello,
for reference, in case kamailio is running behind nat, like on AWS, one should just use advertise directive for listen parameter, like:>
listen=proto:privateip:port advertise publicip:port>
See:
http://www.kamailio.org/wiki/**cookbooks/4.0.x/core#listenhttp://www.kamailio.org/wiki/cookbooks/4.0.x/core#listen
It simplifies the config by not needing to use alias parameter, advertised_address/set_**addvertised_address() and record_route_preset().>
Cheers, Daniel
On 10/18/13 8:23 AM, Klaus Darilion wrote: /
/>/ />/ On 17.10.2013 17:31, julian arsanches wrote: />>/ Hi all, before hand thanks for all the support received on this channel. />>/ />>/ I have an issue with an installed server on a aws instance which is />>/ giving me routing loops, my setup is simple, i have alias set for both />>/ ips internal and external and the loop still present when t_relay don't />>/ find any routes to relay it just sent it to itself with the public ip />>/ then the loop starts. />>/ />>/ can any one please advise how can i prevent that or just tell t_relay />>/ that if there is no more routes just respond with a cancel or stop />>/ searching. />/ />/ If you call t_relay, then the message will be forwarded to $ru (or to />/ $du if $du is set). t_relay itself does not have any logic inside. />/ />/ Thus, if you do not want a message to be forwarded, then you must not />/ call t_relay. />/ />/ If you do not want to send a message to a certain destination, then />/ set $ru (the domain part) to the respective destination. />/ />/ One issue may be the aliases. If Kamailio thinks that it is not />/ authoritative for a domain, then it forwards the message to the />/ domain. Kamailio by default feels authoritative for the IP addresses />/ on which it listens (the private IP addresses). Thus if a request is />/ received by Kamailio, but the RURI (request URI, $ru) indicated the />/ public IP address, KAmailio by default forwards the message to the />/ respective RURI (which my be forward again by AWS NAT to Kamailio). />/ />/ Thus, alias=public.ip.addr.ess must be added to the config. />/ />/ If there are still problems you have set debug=4 and track in the log />/ file how the message is processed, and where the routing decision />/ takes the wrong direction. />/ />/ regards />/ Klaus />/ />>/ />>/ same thing happens when a gw code is not found on the dispatcher list />>/ file. />>/ />>/ as i had read by just specifying the alias=domain it should take care of />>/ it but it is not happening perhaps because it is a AWS instance, or most />>/ likely i am missing something after the T_relay to stop the call from />>/ looping. />>/ />>/ I do have several headers fix because i have an asterisk sending calls />>/ with lots of signalling calls added to the call that i need to remove />>/ before the call is passed out to a carrier or another UA, Kamailio is />>/ just proxing the calls between asterisk and the outside world no Media />>/ handling, No registrations. />>/ />>/ Again thanks for any tips to find my answer or if anyone had a similar />>/ issue thanks again. />>/ />>/ thanks for any help . />>/ />>/ Julian. />>/ />>/ on this setup i have />>/ />>/ public ip as 2.2.2.2 />>/ />>/ private IP as 1.1.1.1 />>/ />>/ />>/ #!KAMAILIO />>/ ####### Global Parameters ######### />>/ />>/ #!ifdef WITH_DEBUG />>/ debug=4 />>/ log_stderror=yes />>/ #!else />>/ #debug=2 />>/ #log_stderror=yes />>/ #!endif />>/ />>/ memdbg=5 />>/ memlog=5 />>/ />>/ log_facility=LOG_LOCAL7 />>/ />>/ fork=yes />>/ children=6 />>/ />>/ auto_aliases=no />>/ />>/ />>/ listen=udp:1.1.1.1:5060 http://1.1.1.1:5060 < http://1.1.1.1:5060 http://1.1.1.1:5060/> advertise2.2.2.2:5060 < http://2.2.2.2:5060%3E />>/ <http://2.2.2.2:5060 http://2.2.2.2:5060/> />>/ />>/ alias=1.1.1.1:5060 http://1.1.1.1:5060 <http://1.1.1.1:5060 < http://1.1.1.1:5060/%3E%3E />>/ alias=1.1.1.1 />>/ alias=2.2.2.2:5060 http://2.2.2.2:5060 <http://2.2.2.2:5060 < http://2.2.2.2:5060/%3E%3E />>/ alias=2.2.2.2 />>/ />>/ />>/ port=5060 />>/ />>/ enable_tls=no />>/ />>/ #tcp_connection_lifetime=3605 />>/ />>/ #!ifdef WITH_SRCPATH />>/ mpath="modules_k:modules" />>/ #!else />>/ mpath="/usr/lib64/kamailio/**modules_k/:/usr/lib64/** kamailio/modules/" />>/ />>/ #!endif />>/ loadmodule "db_mysql.so" />>/ ##loadmodule "mi_fifo.so" />>/ loadmodule "tm.so" />>/ loadmodule "sl.so" />>/ loadmodule "acc.so" />>/ loadmodule "rr.so" />>/ loadmodule "maxfwd.so" />>/ loadmodule "uac.so" />>/ loadmodule "textops.so" />>/ loadmodule "pv.so" />>/ loadmodule "dispatcher.so" />>/ loadmodule "usrloc.so" />>/ loadmodule "registrar.so" />>/ loadmodule "siputils.so" />>/ loadmodule "sanity.so" />>/ loadmodule "ctl.so" />>/ loadmodule "mi_rpc.so" />>/ loadmodule "avpops.so" />>/ #!ifdef WITH_NAT />>/ loadmodule "nathelper.so" />>/ loadmodule "rtpproxy.so" />>/ #!endif />>/ loadmodule "xlog.so" />>/ ##mysqlcdr />>/ modparam("acc", "db_flag", 2) />>/ modparam("acc", "db_missed_flag", 3) />>/ modparam("acc", "report_cancels", 1) />>/ modparam("acc", "db_url", "mysql://openser:password@1.1.** 1.2/openser http://openser:password@1.1.1.2/openser />>/ <http://openser:password@1.1.**1.2/openserhttp://openser:password@1.1.1.2/openser
")
/>>/ modparam("acc", "db_extra", "from_uri=$fu; to_uri=$tu; intid=$fU; />>/ type_call=$si; dst_ip=$ru; carriercode=$tu;callmode=$var(**out)" ) />>/ />>/ #loadmodule "carrierroute" />>/ modparam("tm", "cancel_b_method", 1) />>/ modparam("tm", "failure_reply_mode", 3) />>/ modparam("tm", "fr_timer", 30000) />>/ modparam("tm", "fr_inv_timer", 120000) />>/ />>/ modparam("dispatcher", "list_file", "/etc/kamailio/dispatcher.lst"* *) />>/ modparam("rr", "enable_full_lr", 1) />>/ />>/ #!ifdef WITH_NAT />>/ # ----- rtpproxy params ----- />>/ modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:7722 < http://127.0.0.1:7722%3E />>/ <http://127.0.0.1:7722 http://127.0.0.1:7722/>") />>/ />>/ # ----- nathelper params ----- />>/ modparam("nathelper", "natping_interval", 30) />>/ modparam("nathelper", "ping_nated_only", 1) />>/ modparam("nathelper", "sipping_bflag", FLB_NATSIPPING) />>/ modparam("nathelper", "sipping_from", "sip:pinger at kamailio.org < http://lists.sip-router.org/**cgi-bin/mailman/listinfo/sr-**usershttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
/>>/ <mailto:sip% mailto:sip%253Apinger at kamailio.org < http://lists.sip-router.org/**cgi-bin/mailman/listinfo/sr-**usershttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
")
/>>/ # ----- mi_fifo params ----- />>/ />>/ ##modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo") />>/ />>/ # params needed for NAT traversal in other modules />>/ modparam("nathelper|registrar"**, "received_avp", "$avp(RECEIVED)") />>/ modparam("usrloc", "nat_bflag", FLB_NATB) />>/ #!endif />>/ modparam("xlog", "buf_size", 8192) />>/ modparam("xlog", "force_color", 1) />>/ #carrierroute />>/ #modparam("carrierroute", "config_file", />>/ "/etc/kamailio/carrierroute.**conf") />>/ #end carrierroute />>/ />>/ modparam("pv", "shvset", "ruta=s:$ru") />>/ modparam("pv", "varset","in=s:IN") />>/ modparam("pv", "varset","out=s:OUT") />>/ #################BEGINING MAINROUTE################## />>/ request_route { />>/ />>/ if (!mf_process_maxfwd_header("4"**)) { />>/ sl_send_reply("483","Too Many Hops"); />>/ drop; />>/ exit; />>/ } />>/ ## />>/ # initial sanity checks -- too long messages />>/ if (msg:len >= 2048 ) { />>/ sl_send_reply("513", "Message too big"); />>/ xlog("out header CHECK 513 baderror from_uri=$fu;($ct++)<$tU---=$** var(n)> />>/ to_uri=$tu; intid=$fU; type_call=$si; dst_ip=$ru; />>/ carriercode=$var(z);callmode=$**var(out)"); />>/ drop; />>/ exit; />>/ }; />>/ # />>/ if(is_method("OPTIONS")) { />>/ # send reply for each options request />>/ sl_send_reply("200", "ok"); />>/ exit(); />>/ } />>/ />>/ />>/ />>/ # />>/ if ( is_method("ACK") ) { />>/ if ( t_check_trans() ) { />>/ # no loose-route, but stateful ACK; />>/ # must be an ACK after a 487 />>/ # or e.g. 404 from upstream server />>/ $var(n)=$(tU{s.substr,3,0}); />>/ $var(i)=$(ct{re.subst,/^.***11811(.*)/"\1/}); />>/ />>/ $var(t)=$(fn{re.subst,/^.***11811(.*)/"\1/}); />>/ />>/ $var(r)=$rd; ##to domain />>/ $fU=$(fU{s.substr,14,0}); />>/ $fn=$var(t); />>/ $tU=$var(n); />>/ $td=$var(r); />>/ />>/ subst('/^Contact:.*11811(.*)$/**Contact: sip:\1\2/ig'); />/ />>/ # Remove prefixes numbers from Contact\ />>/ t_relay(); />>/ exit; />>/ } else { />>/ # ACK without matching transaction ... ignore and discard />>/ $var(n)=$(tU{s.substr,3,0}); />>/ $var(i)=$(ct{re.subst,/^.***11811(.*)/"\1/}); />>/ />>/ $var(t)=$(fn{re.subst,/^.***11811(.*)/"\1/}); />>/ />>/ $var(r)=$rd; ##to domain />>/ $fU=$(fU{s.substr,14,0}); />>/ $fn=$var(t); />>/ $tU=$var(n); />>/ $td=$var(r); />>/ />>/ subst('/^Contact:.*11811(.*)$/**Contact: sip:\1\2/ig'); />/ t_relay(); />>/ exit; />>/ } />>/ } />>/ ##responding to bye requests and modifying headers to match invite />>/ if(method=="BYE") { />>/ #Account BYE transactions />>/ #$var(d) = $tu; />>/ #$var(e)=$(var(d){s.substr,4,**3}); />>/ setflag(2); />>/ setflag(10); />>/ $var(n)=$(tU{s.substr,3,0}); />>/ $var(i)=$(ct{re.subst,/^.***11811(.*)/"\1/}); />>/ />>/ $var(t)=$(fn{re.subst,/^.***11811(.*)/"\1/}); />>/ />>/ $var(r)=$rd; ##to domain />>/ $fU=$(fU{s.substr,14,0}); />>/ $fn=$var(t); />>/ $tU=$var(n); />>/ $td=$var(r); />>/ />>/ subst('/^Contact:.*11811(.*)$/**Contact: sip:\1\2/ig'); />/ t_relay(); />>/ exit; />>/ }; />>/ />>/ #CANCEL processing />>/ if (method=="CANCEL") { />>/ setflag(2); />>/ setflag(3); />>/ $var(n)=$(tU{s.substr,3,0}); />>/ $var(i)=$(ct{re.subst,/^.***11811(.*)/"\1/}); />>/ />>/ $var(t)=$(fn{re.subst,/^.***11811(.*)/"\1/}); />>/ />>/ $var(r)=$rd; ##to domain />>/ $fU=$(fU{s.substr,14,0}); />>/ $fn=$var(t); />>/ $tU=$var(n); />>/ $td=$var(r); />>/ />>/ subst('/^Contact:.*11811(.*)$/**Contact: sip:\1\2/ig'); />/ t_relay(); />>/ exit; />>/ ##if (t_check_trans()) t_relay(); />>/ />>/ exit; />>/ }; />>/ />>/ />>/ # />>/ />>/ />>/ # />>/ if (loose_route()) { />>/ />>/ />>/ ## />>/ if(is_method("OPTIONS")) { />>/ # send reply for each options request />>/ sl_send_reply("200", "ok"); />>/ exit(); />>/ } />>/ ## />>/ if(method=="BYE") { />>/ #Account BYE transactions />>/ setflag(2); />>/ }; />>/ />>/ />>/ ##CANCEL processing />>/ if (method=="CANCEL") { />>/ setflag(3); />>/ $var(n)=$(tU{s.substr,3,0}); />>/ $var(i)=$(ct{re.subst,/^.***11811(.*)/"\1/}); />>/ />>/ $var(t)=$(fn{re.subst,/^.***11811(.*)/"\1/}); />>/ />>/ $var(r)=$rd; ##to domain />>/ $fU=$(fU{s.substr,14,0}); />>/ $fn=$var(t); />>/ $tU=$var(n); />>/ $td=$var(r); />>/ subst('/^Contact:.*11811(.*)$/**Contact: sip:\1\2/ig'); />/ if (t_check_trans()) t_relay(); />>/ exit; />>/ }; />>/ />>/ if (!t_relay()) { />>/ sl_reply_error(); />>/ } />>/ exit; />>/ } />>/ />>/ />>/ if (is_method("INVITE")) { #Procesing invites />>/ />>/ />>/ record_route(); />>/ } />>/ ##LOGGING CALL BEFORE IS PROCESSED />>/ xlog("before strip,< time [$Tf] > Aip= $src_ip, r-uri($ru\n"); />>/ xlog("before from_uri=$fu; to_uri=$tu; pai=<<$ct>>;intid=$fU; />>/ type_call=$si; dst_ip=$ru; carriercode=$tu;callmode=$var(**out) />>/ --$$--$ou"); />>/ #creando rutas />>/ setflag(2); />>/ # Account Missed calls />>/ setflag(3); />>/ ###VARIABLES FOR MODIFICATIONS />>/ $var(x) = $(ru); />>/ />>/ $var(y)=$(var(x){s.substr,4,3}**); />>/ />>/ $var(z)=$(var(y){s.int http://s.int <http://s.int < http://s.int/%3E%3E%7D); />>/ />>/ $var(t)=$(var(x){s.substr,7,0}**); />>/ />>/ $var(h)=$(var(x){s.substr,0,7}**); />>/ />>/ $var(o)=$(fU{s.substr,14,0}); />>/ />>/ if($(var(x){s.len}) < 3) />>/ { />>/ $var(z)='0'+ $var(z); />>/ } />>/ />>/ xlog("dsroute $var(z)fullruri($ru)\n"); />>/ />>/ />>/ strip(3); />>/ />>/ xlog("after strip time [$Tf] method ($rm) via el code />>/ ($var(z)--varhex($var(h))-- ($var(y))\n"); />>/ xlog("after from_uri=$fu; to_uri=$tu; intid=$fU; type_call=$si; />>/ dst_ip=$ru; carriercode=$var(z);callmode=$**var(out)"); />>/ />>/ ds_select_domain ("$var(z)", "4");#carrer dynamic />>/ />>/ />>/ ###########KILLING BUGGIES#######when t_realy fails to find a route a />>/ loop is generate then strip takes off a digit until0 at 2.2.2.2 < http://lists.sip-router.org/**cgi-bin/mailman/listinfo/sr-**usershttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
/>>/ <mailto:0 at 2.2.2.2 <http://lists.sip-router.org/** cgi-bin/mailman/listinfo/sr-**usershttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users>> is left for to: user this kills that call.##### />>/ if ($(tU{s.len}) < 4) { />>/ xlog("CHECK TU 1bad kILLING BUGGIES>>> $tu--$td-$tU-$tt--$dd-$dd-$du- />>/ -<<$rd>$ru --- $oU> pai+++ <<$ct>>++ from_uri=$fu;<$tU---=$var(n)> />>/ to_uri=$tu; }pai<$ai> id=$fU; type_call=$si; dst_ip=$ru; />>/ carriercode=$var(z);callmode=$**var(out)"); />>/ ##sl_reply_error(); />>/ ##sl_send_reply("513", "Message too big"); />>/ ##sl_send_reply("488","Not Acceptable Here"); />>/ sl_send_reply("488","Not Acceptable Here"); />>/ #t_reset_retr(); />>/ #t_release(); />>/ ##if(!t_relay()){ sl_reply_error(); drop; exit;} />>/ />>/ #if (!t_relay()) { sl_reply_error(); break; }; />>/ # t_relay(); />>/ #setflag(2); />>/ drop; />>/ exit; />>/ />>/ }; ## Endif less than 4 />>/ ##############END KILLING########### />>/ ################ROUTE SELECTION############### />>/ if($(fn{s.len}) > 10) { # IF WE CHECK FOR FROM: ROUTEID MUST BE LONGER />>/ THAN 10 DIGITS TO BE A VALID ROUTE />>/ />>/ xlog("out header CHECK more than 10 digits BEFORE />>/ from_uri=$fu;($ct++)<$tU---=$**var(n)> to_uri=$tu; intid=$fU; />>/ type_call=$si; dst_ip=$ru; carriercode=$var(z);callmode=$** var(out)"); />>/ $var(n)=$(tU{s.substr,3,0}); />>/ $var(i)=$(ct{re.subst,/^.***00700(.*)/"\1/}); />>/ $var(t)=$(fn{re.subst,/^.***00700(.*)/"\1/}); />>/ $var(r)=$rd; ##to domain />>/ $fU=$(fU{s.substr,14,0}); />>/ $fn=$var(t); />>/ $tU=$var(n); />>/ $td=$var(r); />>/ />>/ subst('/^Contact:.*11811(.*)$/**Contact: <sip:\1\2/ig'); # Remove number />>/ from Contact />>/ />>/ ##if(!t_relay()){ sl_reply_error(); drop; exit;} />>/ />>/ if (!t_relay()) { sl_reply_error(); break; }; />>/ />>/ # t_relay(); />>/ />>/ drop; />>/ exit; />>/ />>/ }; />>/ />>/ ################**ENDrouteselect################**############## />>/ />>/ />>/ ###############AFTER LAST IF##############reply 488 ANY CALL THAT DID />>/ NOT FOUND A ROUTE. />>/ sl_send_reply("488","Not Acceptable Here"); />>/ drop; />>/ exit; />>/ } />>/ />>/ ###################END MAINROUTE################# />>/ />>/ />>/ />>/ />>/ />>/ On My dispatcher.lst i have />>/ />>/ />>/ 1 sip:1.1.1.1:5060 http://1.1.1.1:5060 <http://1.1.1.1:5060 < http://1.1.1.1:5060/%3E%3E />>/ 2 sip:2.2.2.2:5060 http://2.2.2.2:5060 <http://2.2.2.2:5060 < http://2.2.2.2:5060/%3E%3E />>/ 3 sip:3.3.3.3:5060 http://3.3.3.3:5060 <http://3.3.3.3:5060 < http://3.3.3.3:5060/%3E%3E />>/ 3 sip:3.3.3.5:5060 http://3.3.3.5:5060 <http://3.3.3.5:5060 < http://3.3.3.5:5060/%3E%3E />>/ ... />>/ />>/ />>/ />>/ />>/ ______________________________**_________________ />>/ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list />>/ sr-users at lists.sip-router.org <http://lists.sip-router.org/** cgi-bin/mailman/listinfo/sr-**usershttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
/>>/ http://lists.sip-router.org/**cgi-bin/mailman/listinfo/sr-**usershttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users />>/ />/ />/ ______________________________**_________________ />/ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list />/ sr-users at lists.sip-router.org <http://lists.sip-router.org/** cgi-bin/mailman/listinfo/sr-**usershttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
/>/ http://lists.sip-router.org/**cgi-bin/mailman/listinfo/sr-**usershttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users / -- Daniel-Constantin Mierla -http://www.asipto.com http://www.asipto.com/ http://twitter.com/#!/miconda -http://www.linkedin.com/in/**micondahttp://www.linkedin.com/in/miconda
Kamailio Advanced Trainings - Berlin, Nov 25-28; Miami, Nov 18-20, 2013 - more details about Kamailio trainings athttp://www.asipto.com < http://www.asipto.com/%3E -
------------------------------**------------------------------**
- Previous message: [SR-Users] Loop detected on aws setup <http://lists.sip-router.org/**pipermail/sr-users/2013-**
October/080128.htmlhttp://lists.sip-router.org/pipermail/sr-users/2013-October/080128.html
- Next message: [SR-Users] Proxy-Registrar call issues <http://lists.sip-router.org/**pipermail/sr-users/2013-**
October/080126.htmlhttp://lists.sip-router.org/pipermail/sr-users/2013-October/080126.html
- *Messages sorted by:* [ date ] <http://lists.sip-router.org/**pipermail/sr-users/2013-**
October/date.html#80129http://lists.sip-router.org/pipermail/sr-users/2013-October/date.html#80129
[ thread ] <http://lists.sip-router.org/**pipermail/sr-users/2013-**
October/thread.html#80129http://lists.sip-router.org/pipermail/sr-users/2013-October/thread.html#80129
[ subject ] <http://lists.sip-router.org/**pipermail/sr-users/2013-**
October/subject.html#80129http://lists.sip-router.org/pipermail/sr-users/2013-October/subject.html#80129
[ author ] <http://lists.sip-router.org/**pipermail/sr-users/2013-**
October/author.html#80129http://lists.sip-router.org/pipermail/sr-users/2013-October/author.html#80129
------------------------------**------------------------------**
More information about the sr-users mailing list <http://lists.sip-router.org/**cgi-bin/mailman/listinfo/sr-**usershttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
______________________________**_________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/**cgi-bin/mailman/listinfo/sr-**usershttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
On 21.10.2013 22:47, julian arsanches wrote:
for now i reply with 488 wich tell me something is bad but i thought that kamailio will know when a message is send from itself to itself.
Sending a message to itself is a legal use case (it is called "spiraling"), thus there is no such automatic detection in Kamailio. Spiraling is OK, as long as the spiral stops somewhere.
regards Klaus