i used kamailio v4.1
part of kamailio.cfg for examples:
disable_tcp=no auto_aliases=no
port=5085 enable_tls=yes listen=udp:10.2.45.111:5085 listen=tcp:10.2.45.111:5085 listen=tls:10.2.45.111:5086 listen=tcp:10.2.45.111:5087 listen=tls:10.2.45.111:5088
and i excute /etc/init.d/kamailio start it can run
but when on ka v4.4.0 the same contents in kamailio.cfg but can`t run
both 4.1.x and 4.4.x when i change disable_tcp=yes it can run but only listen on udp 5085
v4.1 i change disable_tcp=no it can listen tls,tcp.udp
i use modules: dispatcher v4.4 i setup a new modules : evapi
why tcp can`t run properly?
`#!KAMAILIO
####### Global Parameters #########
debug=0 log_stderror=no
memdbg=5 memlog=5
log_facility=LOG_LOCAL1 fork=yes children=5 tcp_children=4
#disable_tcp=no
auto_aliases=no
port=5085
#4.1 enable_tls=yes
listen=udp:10.2.45.111:5085 listen=tcp:10.2.45.111:5085 listen=tls:10.2.45.111:5086 listen=tcp:10.2.45.111:5087 listen=tls:10.2.45.111:5088
sip_warning=no
#4.1 tcp_accept_no_cl=yes tcp_connection_lifetime=3604 tcp_rd_buf_size=16384 exit_timeout = 300 #4.1
mpath="/home/administrator/kamailio/modules_k/:/home/administrator/kamailio_proxy/lib64/kamailio/modules/"
loadmodule "db_mysql.so" loadmodule "mi_fifo.so" loadmodule "kex.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 "mi_rpc.so" loadmodule "acc.so" loadmodule "dispatcher.so"
#4.1 loadmodule "tls.so" loadmodule "auth.so" loadmodule "auth_db.so" loadmodule "xhttp.so" loadmodule "websocket.so" loadmodule "usrloc.so" loadmodule "nathelper.so" loadmodule "registrar.so" #4.1
#added by liqixin #loadmodule "evapi.so" #added by liqixin
# ----------------- setting module-specific parameters ---------------
# ----- mi_fifo params ----- modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")
# ----- rr params ----- # add value to ;lr param to cope with most of the UAs modparam("rr", "enable_full_lr", 1) # do not append from tag to the RR (no need for this script) modparam("rr", "append_fromtag", 0)
# ----- acc params ----- modparam("acc", "log_flag", 1) modparam("acc", "failed_transaction_flag", 3) modparam("acc", "log_extra", "src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd;src_ip=$si")
# ----- tm params ----- modparam("tm", "fr_timer", 2000) modparam("tm", "fr_inv_timer", 40000)
# ----- dispatcher params -----
modparam("dispatcher", "db_url", "mysql://kamailio:kamailiorw@localhost/kamailio") modparam("dispatcher", "table_name", "dispatcher") modparam("dispatcher", "flags", 2) modparam("dispatcher", "dst_avp", "$avp(AVP_DST)") modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)") modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)")
#4.4 modparam("dispatcher", "sock_avp", "$avp(AVP_SOCK)") #4.4
#4.1 modparam("dispatcher", "ds_ping_method", "OPTIONS") modparam("dispatcher", "ds_ping_from", "sip:kamailio@10.2.45.111") modparam("dispatcher", "ds_ping_interval", 10) modparam("dispatcher", "ds_probing_threshold", 3) modparam("dispatcher", "ds_ping_reply_codes", "class=2;code=400;class=3") modparam("dispatcher", "ds_probing_mode", 1) #4.1
#4.1 # ----- usrloc params ----- /* enable DB persistency for location entries */ modparam("usrloc", "db_url", "mysql://kamailio:kamailiorw@localhost/kamailio") modparam("usrloc", "db_mode", 0)
modparam("registrar", "method_filtering", 1) modparam("registrar", "max_expires", 3600) modparam("registrar", "gruu_enabled", 0) modparam("registrar", "use_path", 1) modparam("registrar", "path_mode", 1) modparam("registrar", "path_use_received", 0) modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)") modparam("usrloc", "nat_bflag", 6) #4.1
#4.1
# ----- tls params ----- #modparam("websocket", "cors_mode", 0); modparam("websocket", "keepalive_mechanism", 0);
# ----- tls params ----- modparam("tls", "config", "/home/administrator/kamailio_proxy/etc/kamailio/tls.cfg")
#4.1
#-------evapi---------- #modparam("evapi", "workers", 2) #modparam("evapi", "bind_addr", "10.2.45.111:5085")
####### Routing Logic ########
# main request routing logic
route {
route(REQINIT);
#4.1 if (nat_uac_test(64)) { # Do NAT traversal stuff for requests from a WebSocket # connection - even if it is not behind a NAT! # This won't be needed in the future if Kamailio and the # WebSocket client support Outbound and Path. force_rport(); fix_nated_register(); add_contact_alias(); }
if (is_method("CANCEL")) { if (t_check_trans()) t_relay(); exit; } #4.1
route(WITHINDLG);
#4.4
# if (is_method("CANCEL")) # { # if (t_check_trans()) # t_relay(); # exit; # }
#4.4
t_check_trans();
#4.4 # remove_hf("Route");
# if (is_method("INVITE|SUBSCRIBE")) # record_route();
# if (is_method("INVITE")) # { # setflag(1); # do accounting # }
# route(PRESENCE);
# route(REGISTRAR);
# if ($rU==$null) # { # request with no Username in RURI # sl_send_reply("484","Address Incomplete"); # exit; # } #4.4
route(DISPATCH);
#4.1 route(RELAY); #4.1
}
#4.1 xlog route[RELAY] { if (!t_relay()) { sl_reply_error(); } exit; } #---4.1---
# Per SIP request initial checks route[REQINIT] { #4.4 if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; } #4.4
if(!sanity_check("1511", "7")) { xlog("Malformed SIP message from $si:$sp\n"); exit; } }
# Handle requests within SIP dialogs route[WITHINDLG] { if (has_totag()) { if (loose_route()) {
if (is_method("BYE")) { setflag(1); # do accounting ... setflag(3); # ... even if the transaction fails }
#4.1 # if ($du == "") { # handle_ruri_alias(); # } #4.1
route(RELAY); } else {
#4.4 if (is_method("SUBSCRIBE") && uri == myself) { # in-dialog subscribe requests route(PRESENCE); exit; } #4.4
if ( is_method("ACK") ) { if ( t_check_trans() ) {
t_relay(); exit; } else {
exit; } } sl_send_reply("404","Not here");
#4.1 if ( is_method("ACK") ) { # if ( t_check_trans() ) {
# t_relay(); # exit; # } else { # exit; # } # } # sl_send_reply("404","Not here");
}
#4.1 route(RELAY); exit; } }
# Handle SIP registrations 4.4 route[REGISTRAR] { if(!is_method("REGISTER")) return; sl_send_reply("404", "No registrar"); exit; }
# Presence server route 4.4 route[PRESENCE] { if(!is_method("PUBLISH|SUBSCRIBE")) return;
sl_send_reply("404", "Not here"); exit; }
# Dispatch requests-------4.4 # route[DISPATCH] { # round robin dispatching on gateways group '1' # if(!ds_select_dst("1", "4")) # { # send_reply("404", "No destination"); # exit; # } # xlog("L_DBG", "--- SCRIPT: going to <$ru> via <$du>\n"); # t_on_failure("RTF_DISPATCH"); # route(RELAY); # exit; # } # Dispatch requests-------4.4
#4.1----------------dispatch # Dispatch requests route[DISPATCH] { # round robin dispatching on gateways group '1' if(is_method("REGISTER")){ if(ds_select_dst("1", "0")) { loose_route(); # route(RELAY); } else { send_reply("404", "No destination"); exit; } }
else if (is_method("INVITE")) { if ($du == "") { if (!handle_ruri_alias()) { xlog("L_ERR", "Bad alias <$ru>\n"); sl_send_reply("400", "Bad Request"); exit; } }
$avp(route)=$(hdr(Route)[0]); $avp(LastRouteParam)=$(avp(route){param.count})-1; if($(avp(route){param.name,$avp(LastRouteParam)})=="fccs>"){ #xlog("the method invite from sipserver \n"); loose_route(); if( $(ru{param.value,transport}) == "TCP"||$(ru{param.value,transport}) == "tcp" ){ record_route_preset("10.2.45.111:5085;transport=tcp","10.2.45.111:5085"); } else if( $(ru{param.value,transport}) == "TLS"||$(ru{param.value,transport}) == "tls" ){ record_route_preset("10.2.45.111:5086;transport=tls","10.2.45.111:5085"); } else if( $(ru{param.value,transport}) == "WS"||$(ru{param.value,transport}) == "ws" ){ record_route_preset("10.2.45.111:5087;transport=ws","10.2.45.111:5085"); } else if( $(ru{param.value,transport}) == "WSS"||$(ru{param.value,transport}) == "ws" ){ record_route_preset("10.2.45.111:5088;transport=wss","10.2.45.111:5085");
} else{ record_route_preset("10.2.45.111:5085","10.2.45.111:5085"); }
route(RELAY); } else{ if (ds_select_dst("1", "6")) { #xlog("the first invite load balance \n"); if(proto==TCP){ record_route_preset("10.2.45.111:5085","10.2.45.111:5085;transport=tcp"); } else if(proto==TLS){ record_route_preset("10.2.45.111:5085","10.2.45.111:5086;transport=tls"); } else if(proto==WS){ record_route_preset("10.2.45.111:5085","10.2.45.111:5087;transport=ws"); } else if(proto==WSS){ record_route_preset("10.2.45.111:5085","10.2.45.111:5088;transport=wss"); }
else{ record_route_preset("10.2.45.111:5085","10.2.45.111:5085"); } loose_route(); route(RELAY); } else{ send_reply("503","Invite Load_balance Service Unavailable"); exit;
} } }
else if(is_method("MESSAGE")||is_method("REFER")||is_method("PUBLISH")||is_method("SUBSCRIBE")||is_method("NOTIFY")){ $avp(route2)=$(hdr(Route)[0]); $avp(LastRouteParam2)=$(avp(route){param.count})-1;
if($(avp(route2){param.name,$avp(LastRouteParam2)})=="fccs>"){ loose_route(); route(RELAY);
} else{ if(ds_select_dst("1", "0")) { loose_route(); # route(RELAY); } else { send_reply("404", "No destination"); exit; } } }
else{ send_reply("400","method not defined \n"); }
xlog("L_DBG", "--- SCRIPT: going to <$ru> via <$du>\n"); t_on_failure("RTF_DISPATCH"); return;
}
#----------------4.1 dispatch
# Sample failure route ----4.4 #failure_route[RTF_DISPATCH] { # if (t_is_canceled()) { # exit; # } # next DST - only for 500 or local timeout # if (t_check_status("500") # or (t_branch_timeout() and !t_branch_replied())) # { # if(ds_next_dst()) # { # t_on_failure("RTF_DISPATCH"); # route(RELAY); # exit; # } # } # }
# Sample failure route ----4.4
# Sample failure route failure_route[RTF_DISPATCH] { if (t_is_canceled()) { exit; } # next DST - only for 500 or local timeout if (t_check_status("500") or (t_branch_timeout() and !t_branch_replied())) { if(ds_next_dst()) { t_on_failure("RTF_DISPATCH"); route(RELAY); exit; } #4.1 ds_mark_dst("ip"); # set to inactive and probing #4.1 } }
#4.1 onreply_route { if (nat_uac_test(64)) { # Do NAT traversal stuff for replies to a WebSocket connection # - even if it is not behind a NAT! # This won't be needed in the future if Kamailio and the # WebSocket client support Outbound and Path. add_contact_alias(); } } #4.1
event_route[xhttp:request] { set_reply_close(); set_reply_no_connect(); #set_forward_close(); #set_forward_no_connect(); #t_relay(); if ($Rp != 5087 && $Rp != 5088) { xlog("L_WARN", "HTTP request received on $Rp\n"); xhttp_reply("403", "Forbidden", "", ""); exit; }
xlog("L_DBG", "HTTP Request Received\n");
if ($hdr(Upgrade)=~"websocket" && $hdr(Connection)=~"Upgrade" && $rm=~"GET") { #xlog("websocket upgrade ok\n"); # Validate Host - make sure the client is using the correct # alias for WebSockets if ($hdr(Host) == $null || !is_myself("sip:" + $hdr(Host))) { xlog("L_WARN", "Bad host $hdr(Host)\n"); xhttp_reply("403", "Forbidden", "", ""); exit; }
# Optional... validate Origin - make sure the client is from an # authorised website. For example, # # if ($hdr(Origin) != "http://communicator.MY_DOMAIN" # && $hdr(Origin) != "https://communicator.MY_DOMAIN") { # xlog("L_WARN", "Unauthorised client $hdr(Origin)\n"); # xhttp_reply("403", "Forbidden", "", ""); # exit; # }
# Optional... perform HTTP authentication
# ws_handle_handshake() exits (no further configuration file # processing of the request) when complete. if (ws_handle_handshake()) { # Optional... cache some information about the # successful connection
exit; }
} #route(RELAY); xhttp_reply("404", "Http Not Found", "", ""); }
event_route[websocket:closed] { xlog("L_INFO", "WebSocket connection from $si:$sp has closed\n"); }
#added by liqixin #event_route[evapi:connection-new] { # xlog("new connection from $evapi(srcaddr):$evapi(srcport)\n"); #}
#event_route[evapi:connection-closed] { # xlog("connection closed by $evapi(srcaddr):$evapi(srcport)\n"); #} #added by liqixin`
--- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/585
Look inside syslog file and see the error messages -- there might be something wrong in the new config. If you don't figureout the issue yourself, paste the log messages here.
Otherwise I do not recall any change on the disable_tcp behaviour for many years.
--- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/585#issuecomment-215000032
there is nothing in /var/log/kamailio.log when i excute /etc/init.d/kamailio start what`s more when i set disable_tcp=no enable_tls=no it run with tcp ,udp without tls
when set disable_tcp=no enable_tls=yes it can`t work
tcp and tls can`t work together
--- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/585#issuecomment-215023104
Not very clear for me -- is kamailio starting or not? If not starting, then some error message must be there in syslog.
--- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/585#issuecomment-215032128
you are right i set the loglevel too low
here is the problem seem like tls
Apr 27 05:14:11 localhost /home/liqixin/kamailio_proxy/sbin/kamailio[18444]: : tls [tls_init.c:557]: init_tls_h(): ERROR: tls: init_tls_h: installed openssl library version is too different from the library the Kamailio tls module was compiled with: installed "OpenSSL 1.0.1e-fips 11 Feb 2013" (0x1000105f), compiled "OpenSSL 1.0.2a 19 Mar 2015" (0x1000201f).#012 Please make sure a compatible version is used (tls_force_run in kamailio.cfg will override this check)
Apr 27 05:14:11 localhost /home/liqixin/kamailio_proxy/sbin/kamailio[18444]: CRITICAL: <core> [main.c:2577]: main(): could not initialize tls, exiting...
---------------------------------------------------------------------------------------------- [liqixin@localhost log]$ openssl version -a
OpenSSL 1.0.2a 19 Mar 2015 built on: reproducible build, date unspecified platform: linux-x86_64 options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM OPENSSLDIR: "/usr/local/ssl"
--- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/585#issuecomment-215065508
tls`s solution way: v4.1:tls`s key and pem is installed in kamailio_proxy v4.4:not installed in
there still exists error in version 4.4 not in v4.1 -----------------------------------------------------------------------------------------------------------------------------
Apr 27 19:41:30 localhost /home/administrator/kamailio_proxy/sbin/kamailio[4068]: ERROR: dispatcher [dispatcher.c:787]: ds_warn_fixup(): failover functions used, but required AVP parameters are NULL -- feature disabled Apr 27 19:41:30 localhost /home/administrator/kamailio_proxy/sbin/kamailio[4068]: ERROR: dispatcher [dispatcher.c:787]: ds_warn_fixup(): failover functions used, but required AVP parameters are NULL -- feature disabled
--- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/585#issuecomment-215292204
Closed #585.
--- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/585#event-645352945
Thanks for describing what was wrong and how it was solved. It will help others facing same issues.
--- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/585#issuecomment-215668097