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./listen=udp:1.1.1.1:5060 <http://1.1.1.1:5060> advertise2.2.2.2:5060 <http://2.2.2.2:5060>
Is there anything else wrong that i am not putting on my advertise line ?
thanks i really apreciate your input.
Julian.
/>>/
/>>/
/>>/ 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%25>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> <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- more details about Kamailio trainings athttp://www.asipto.com <http://www.asipto.com/> -
Kamailio Advanced Trainings - Berlin, Nov 25-28; Miami, Nov 18-20, 2013
------------------------------------------------------------------------
* 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>sr-users@lists.sip-router.org
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users