Hi all,
I've tried to create a reverse proxy to forward incoming request that came from SIP provider to Asterisk PBX and forward the requests from asterisk to kamailio then sip provider. What i get is that I see the invite, but is like no ACK. Thanks in advance. M
kamailio.cfg:
#!KAMAILIO #
####### Defined Values ######### # - flags # FLT_ - per transaction (message) flags # FLB_ - per branch flags #!define FLT_ACC 1 #!define FLT_ACCMISSED 2 #!define FLT_ACCFAILED 3 #!define FLT_NATS 5
#!define FLB_NATB 6 #!define FLB_NATSIPPING 7
####### Global Parameters ######### ### LOG Levels: 3=DBG, 2=INFO, 1=NOTICE, 0=WARN, -1=ERR debug=3 log_stderror=yes memdbg=5 memlog=5
log_facility=LOG_LOCAL0 log_prefix="{$mt $hdr(CSeq) $ci} " children=1
server_id = 10 xavp_via_params = "via" disable_tcp=yes auto_aliases=no listen=udp:0.0.0.0:5060
####### Modules Section ########
loadmodule "jsonrpcs.so" loadmodule "kex.so" loadmodule "corex.so" loadmodule "tm.so" loadmodule "tmx.so" loadmodule "sl.so" loadmodule "rr.so" loadmodule "pv.so" loadmodule "maxfwd.so" loadmodule "textops.so" loadmodule "siputils.so" loadmodule "xlog.so" loadmodule "sanity.so" loadmodule "ctl.so" loadmodule "cfg_rpc.so" loadmodule "acc.so" loadmodule "counters.so"
# ----------------- setting module-specific parameters ---------------
# ----- jsonrpcs params ----- modparam("jsonrpcs", "pretty_format", 1) modparam("jsonrpcs", "fifo_name", "/var/run/kamailio/kamailio_rpc.fifo") modparam("jsonrpcs", "dgram_socket", "/var/run/kamailio/kamailio_rpc.sock") modparam("ctl", "binrpc", "unix:/var/run/kamailio/kamailio_ctl")
# ----- tm params ----- modparam("tm", "failure_reply_mode", 3) modparam("tm", "fr_timer", 30000) modparam("tm", "fr_inv_timer", 120000) modparam("rr", "enable_full_lr", 0) modparam("rr", "append_fromtag", 0) modparam("acc", "early_media", 0) modparam("acc", "report_ack", 0) modparam("acc", "report_cancels", 0) modparam("acc", "detect_direction", 0) modparam("acc", "log_flag", FLT_ACC) modparam("acc", "log_missed_flag", FLT_ACCMISSED) modparam("acc", "log_extra", "src_user=$fU;src_domain=$fd;src_ip=$si;" "dst_ouser=$tU;dst_user=$rU;dst_domain=$rd") modparam("acc", "failed_transaction_flag", FLT_ACCFAILED)
####### Routing Logic ########
request_route {
# per request initial checks route(REQINIT);
# CANCEL processing if (is_method("CANCEL")) { if (t_check_trans()) { route(RELAY); } exit; }
# handle retransmissions if (!is_method("ACK")) { if(t_precheck_trans()) { t_check_trans(); exit; } t_check_trans(); }
# handle requests within SIP dialogs route(WITHINDLG);
# record routing for dialog forming requests (in case they are routed) remove_hf("Route"); if (is_method("INVITE|SUBSCRIBE|REFER")) { record_route(); }
# account only INVITEs if (is_method("INVITE")) { setflag(FLT_ACC); sl_send_reply("100","Trying");
if ($si == "172.16.16.1") { sl_send_reply("183","Incoming session from Avoxi"); rewritehost("10.1.1.10"); #exit; } else if ($si == "10.1.1.10"){ # receiving response from client sl_send_reply("183","Outgoing session to Avoxi"); #rewritehost("172.16.16.1"); drop; exit; } else { sl_send_reply("500","No configured IP!"); drop; exit; } }
if ($rU==$null) { sl_send_reply("484","Address Incomplete"); exit; }
# received from main server - send to client and add via tokens for anycast handling via_add_srvid("1"); $xavp(via=>node) = "10.1.1.4"; via_add_xavp_params("1"); route(RELAY); exit; }
# Wrapper for relaying requests route[RELAY] {
# enable additional event routes for forwarded requests # - serial forking, RTP relaying handling, a.s.o. if (is_method("INVITE|BYE|SUBSCRIBE|UPDATE")) { if(!t_is_set("branch_route")) t_on_branch("MANAGE_BRANCH"); } if (is_method("INVITE|SUBSCRIBE|UPDATE")) { if(!t_is_set("onreply_route")) t_on_reply("MANAGE_REPLY"); } if (is_method("INVITE")) { if(!t_is_set("failure_route")) t_on_failure("MANAGE_FAILURE"); }
if (!t_relay()) { sl_reply_error(); } exit; }
# Per SIP request initial checks route[REQINIT] { if($ua =~ "friendly-scanner|sipcli|VaxSIPUserAgent") { # silent drop for scanners - uncomment next line if want to reply sl_send_reply("200", "OK"); exit; }
if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; }
if(is_method("OPTIONS") && uri==myself && $rU==$null) { sl_send_reply("200","Keepalive"); exit; }
if(!sanity_check("1511", "7")) { xlog("Malformed SIP message from $si:$sp\n"); exit; }
if ($si == "10.1.1.4") { xlog("L_WARN", "$ci|end|dropping message"); exit; }
}
# Handle requests within SIP dialogs route[WITHINDLG] { if (!has_totag()) return; if (loose_route()) { if (is_method("BYE")) { setflag(FLT_ACC); setflag(FLT_ACCFAILED); } else if ( is_method("NOTIFY") ) { record_route(); } route(RELAY); exit; }
if ( is_method("ACK") ) { if ( t_check_trans() ) { route(RELAY); exit; } else { exit; } } sl_send_reply("400","Loop detected"); exit; }
# TM manage for outgoing branches branch_route[MANAGE_BRANCH] { xdbg("new branch [$T_branch_idx] to $ru\n"); }
# TM manage for incoming replies onreply_route[MANAGE_REPLY] { xdbg("incoming reply\n"); }
# TM manage for failure routing cases failure_route[MANAGE_FAILURE] { if (t_is_canceled()) exit; }
asterisk - sip.conf
[opensips-trunk](sip-provider) fromdomain=10.1.1.10 host=10.1.1.4 context=from-trunk type=friend insecure=invite,port trunk=yes