Looks like the data received on sip port is not a sip message. Use a traffic sniffer (tcpdump, wireshark, ngrep) to see what comes over the network.
Cheers, Daniel
On 22.03.22 19:13, Seyyed Soroosh Hosseinalipour wrote:
ITNOA
Description
I try to connect Kamailio and Freeswitch together, and initiate call from Zoiper5 soft phone through Kamailio
My Kamailio config is below
|#!ifdef ACCDB_COMMENT| | ALTER TABLE acc ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT '';| | ALTER TABLE acc ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT '';| | ALTER TABLE acc ADD COLUMN src_ip varchar(64) NOT NULL default '';| | ALTER TABLE acc ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT '';| | ALTER TABLE acc ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';| | ALTER TABLE acc ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT '';| | ALTER TABLE missed_calls ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT '';| | ALTER TABLE missed_calls ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT '';| | ALTER TABLE missed_calls ADD COLUMN src_ip varchar(64) NOT NULL default '';| | ALTER TABLE missed_calls ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT '';| | ALTER TABLE missed_calls ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';| | ALTER TABLE missed_calls ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT '';| |#!endif| | | |####### Include Local Config If Exists #########| |import_file "kamailio-local.cfg"| | | |####### Defined Values #########| | | |# *** Value defines - IDs used later in config| |#!ifdef WITH_DEBUG| |#!define DBGLEVEL 3| |#!else| |#!define DBGLEVEL 2| |#!endif| | | |#!ifdef WITH_MYSQL| |# - database URL - used to connect to database server by modules such| |# as: auth_db, acc, usrloc, a.s.o.| |#!trydef DBURL "mysql://kamailio:kamailiorw@localhost/kamailio"| |#!endif| | | |#!ifdef WITH_MULTIDOMAIN| |# - the value for 'use_domain' parameters| |#!define MULTIDOMAIN 1| |#!else| |#!define MULTIDOMAIN 0| |#!endif| | | |# - 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=DBGLEVEL| | | |/* set to 'yes' to print log messages to terminal or use '-E' cli option */| |log_stderror=yes| | | |memdbg=5| |memlog=5| | | |log_facility=LOG_LOCAL0| |log_prefix="{$mt $hdr(CSeq) $ci} "| | | |/* number of SIP routing processes for each UDP socket| |* - value inherited by tcp_children and sctp_children when not set explicitely */| |children=8| | | |/* uncomment the next line to disable TCP (default on) */| |disable_tcp=yes| | | |/* number of SIP routing processes for all TCP/TLS sockets */| |# tcp_children=8| | | |/* uncomment the next line to disable the auto discovery of local aliases| |* based on reverse DNS on IPs (default on) */| |auto_aliases=no| | | |/* add local domain aliases - it can be set many times */| |# alias="sip.mydomain.com"| | | |/* listen sockets - if none set, Kamailio binds to all local IP addresses| |* - basic prototype (full prototype can be found in Wiki - Core Cookbook):| |* listen=[proto]:[localip]:[lport] advertise [publicip]:[pport]| |* - it can be set many times to add more sockets to listen to */| |listen=udp:172.28.72.99:5060 advertise 172.28.72.99:5060| |#listen=tcp:172.28.72.99:5060| | | |/* life time of TCP connection when there is no traffic| |* - a bit higher than registration expires to cope with UA behind NAT */| |tcp_connection_lifetime=3605| | | |/* upper limit for TCP connections (it includes the TLS connections) */| |tcp_max_connections=2048| | | |#!ifdef WITH_JSONRPC| |tcp_accept_no_cl=yes| |#!endif| | | |#!ifdef WITH_TLS| |enable_tls=no| | | |/* upper limit for TLS connections */| |tls_max_connections=2048| |#!endif| | | |/* set it to yes to enable sctp and load sctp.so module */| |enable_sctp=no| | | |####### Custom Parameters #########| | | |/* These parameters can be modified runtime via RPC interface| |* - see the documentation of 'cfg_rpc' module.| |*| |* Format: group.id = value 'desc' description| |* Access: $sel(cfg_get.group.id) or @cfg_get.group.id */| | | |#!ifdef WITH_PSTN| |/* PSTN GW Routing| |*| |* - pstn.gw_ip: valid IP or hostname as string value, example:| |* pstn.gw_ip = "10.0.0.101" desc "My PSTN GW Address"| |*| |* - by default is empty to avoid misrouting */| |pstn.gw_ip = "" desc "PSTN GW Address"| |pstn.gw_port = "" desc "PSTN GW Port"| |#!endif| | | |#!ifdef WITH_VOICEMAIL| |/* VoiceMail Routing on offline, busy or no answer| |*| |* - by default Voicemail server IP is empty to avoid misrouting */| |voicemail.srv_ip = "" desc "VoiceMail IP Address"| |voicemail.srv_port = "5060" desc "VoiceMail Port"| |#!endif| | | |####### Modules Section ########| | | |/* set paths to location of modules */| |# mpath="/usr/lib/x86_64-linux-gnu/kamailio/modules/"| | | |#!ifdef WITH_MYSQL| |loadmodule "db_mysql.so"| |#!endif| | | |#!ifdef WITH_JSONRPC| |loadmodule "xhttp.so"| |#!endif| |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 "usrloc.so"| |loadmodule "registrar.so"| |loadmodule "textops.so"| |loadmodule "textopsx.so"| |loadmodule "siputils.so"| |loadmodule "xlog.so"| |loadmodule "sanity.so"| |loadmodule "ctl.so"| |loadmodule "cfg_rpc.so"| |loadmodule "acc.so"| |loadmodule "counters.so"| | | |#!ifdef WITH_AUTH| |loadmodule "auth.so"| |loadmodule "auth_db.so"| |#!ifdef WITH_IPAUTH| |loadmodule "permissions.so"| |#!endif| |#!endif| | | |#!ifdef WITH_ALIASDB| |loadmodule "alias_db.so"| |#!endif| | | |#!ifdef WITH_SPEEDDIAL| |loadmodule "speeddial.so"| |#!endif| | | |#!ifdef WITH_MULTIDOMAIN| |loadmodule "domain.so"| |#!endif| | | |#!ifdef WITH_PRESENCE| |loadmodule "presence.so"| |loadmodule "presence_xml.so"| |#!endif| | | |#!ifdef WITH_NAT| |loadmodule "nathelper.so"| |#!ifdef WITH_RTPENGINE| |loadmodule "rtpengine.so"| |#!else| |loadmodule "rtpproxy.so"| |#!endif| |#!endif| | | |#!ifdef WITH_TLS| |loadmodule "tls.so"| |#!endif| | | |#!ifdef WITH_ANTIFLOOD| |loadmodule "htable.so"| |loadmodule "pike.so"| |#!endif| | | |#!ifdef WITH_DEBUG| |loadmodule "debugger.so"| |#!endif| | | |# ----------------- setting module-specific parameters ---------------| | | | | |# ----- jsonrpcs params -----| |modparam("jsonrpcs", "pretty_format", 1)| |/* set the path to RPC fifo control file */| |# modparam("jsonrpcs", "fifo_name", "/run/kamailio/kamailio_rpc.fifo")| |/* set the path to RPC unix socket control file */| |# modparam("jsonrpcs", "dgram_socket", "/run/kamailio/kamailio_rpc.sock")| |#!ifdef WITH_JSONRPC| |modparam("jsonrpcs", "transport", 7)| |#!endif| | | |# ----- ctl params -----| |/* set the path to RPC unix socket control file */| |# modparam("ctl", "binrpc", "unix:/run/kamailio/kamailio_ctl")| | | |# ----- sanity params -----| |modparam("sanity", "autodrop", 0)| | | |# ----- tm params -----| |# auto-discard branches from previous serial forking leg| |modparam("tm", "failure_reply_mode", 3)| |# default retransmission timeout: 30sec| |modparam("tm", "fr_timer", 30000)| |# default invite retransmission timeout after 1xx: 120sec| |modparam("tm", "fr_inv_timer", 120000)| | | |# ----- rr params -----| |# set next param to 1 to add value to ;lr param (helps with some UAs)| |modparam("rr", "enable_full_lr", 0)| |# do not append from tag to the RR (no need for this script)| |modparam("rr", "append_fromtag", 0)| | | |# ----- registrar params -----| |modparam("registrar", "method_filtering", 1)| |/* uncomment the next line to disable parallel forking via location */| |# modparam("registrar", "append_branches", 0)| |/* uncomment the next line not to allow more than 10 contacts per AOR */| |# modparam("registrar", "max_contacts", 10)| |/* max value for expires of registrations */| |modparam("registrar", "max_expires", 3600)| |/* set it to 1 to enable GRUU */| |modparam("registrar", "gruu_enabled", 0)| |/* set it to 0 to disable Path handling */| |modparam("registrar", "use_path", 1)| |/* save Path even if not listed in Supported header */| |modparam("registrar", "path_mode", 0)| | | |# ----- acc params -----| |/* what special events should be accounted ? */| |modparam("acc", "early_media", 0)| |modparam("acc", "report_ack", 0)| |modparam("acc", "report_cancels", 0)| |/* by default ww do not adjust the direct of the sequential requests.| |* if you enable this parameter, be sure the enable "append_fromtag"| |* in "rr" module */| |modparam("acc", "detect_direction", 0)| |/* account triggers (flags) */| |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)| |/* enhanced DB accounting */| |#!ifdef WITH_ACCDB| |modparam("acc", "db_flag", FLT_ACC)| |modparam("acc", "db_missed_flag", FLT_ACCMISSED)| |modparam("acc", "db_url", DBURL)| |modparam("acc", "db_extra",| | "src_user=$fU;src_domain=$fd;src_ip=$si;"| | "dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")| |#!endif| | | |# ----- usrloc params -----| |modparam("usrloc", "timer_interval", 60)| |modparam("usrloc", "timer_procs", 1)| |modparam("usrloc", "use_domain", MULTIDOMAIN)| |/* enable DB persistency for location entries */| |#!ifdef WITH_USRLOCDB| |modparam("usrloc", "db_url", DBURL)| |modparam("usrloc", "db_mode", 2)| |#!endif| | | |# ----- auth_db params -----| |#!ifdef WITH_AUTH| |modparam("auth_db", "db_url", DBURL)| |modparam("auth_db", "calculate_ha1", yes)| |modparam("auth_db", "password_column", "password")| |modparam("auth_db", "load_credentials", "")| |modparam("auth_db", "use_domain", MULTIDOMAIN)| | | |# ----- permissions params -----| |#!ifdef WITH_IPAUTH| |modparam("permissions", "db_url", DBURL)| |modparam("permissions", "db_mode", 1)| |#!endif| | | |#!endif| | | |# ----- alias_db params -----| |#!ifdef WITH_ALIASDB| |modparam("alias_db", "db_url", DBURL)| |modparam("alias_db", "use_domain", MULTIDOMAIN)| |#!endif| | | |# ----- speeddial params -----| |#!ifdef WITH_SPEEDDIAL| |modparam("speeddial", "db_url", DBURL)| |modparam("speeddial", "use_domain", MULTIDOMAIN)| |#!endif| | | |# ----- domain params -----| |#!ifdef WITH_MULTIDOMAIN| |modparam("domain", "db_url", DBURL)| |/* register callback to match myself condition with domains list */| |modparam("domain", "register_myself", 1)| |#!endif| | | |#!ifdef WITH_PRESENCE| |# ----- presence params -----| |modparam("presence", "db_url", DBURL)| | | |# ----- presence_xml params -----| |modparam("presence_xml", "db_url", DBURL)| |modparam("presence_xml", "force_active", 1)| |#!endif| | | |#!ifdef WITH_NAT| |#!ifdef WITH_RTPENGINE| |# ----- rtpengine params -----| |modparam("rtpengine", "rtpengine_sock", "udp:127.0.0.1:2223")| |#!else| |# ----- rtpproxy params -----| |modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:7722")| |#!endif| |# ----- 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@kamailio.org")| | | |# params needed for NAT traversal in other modules| |modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)")| |modparam("usrloc", "nat_bflag", FLB_NATB)| |#!endif| | | |#!ifdef WITH_TLS| |# ----- tls params -----| |modparam("tls", "config", "/etc/kamailio/tls.cfg")| |#!endif| | | |#!ifdef WITH_ANTIFLOOD| |# ----- pike params -----| |modparam("pike", "sampling_time_unit", 2)| |modparam("pike", "reqs_density_per_unit", 16)| |modparam("pike", "remove_latency", 4)| | | |# ----- htable params -----| |/* ip ban htable with autoexpire after 5 minutes */| |modparam("htable", "htable", "ipban=>size=8;autoexpire=300;")| |#!endif| | | |#!ifdef WITH_DEBUG| |# ----- debugger params -----| |modparam("debugger", "cfgtrace", 1)| |modparam("debugger", "log_level_name", "exec")| |#!endif| | | |####### Routing Logic ########| | | | | |/* Main SIP request routing logic| |* - processing of any incoming SIP request starts with this route| |* - note: this is the same as route { ... } */| |request_route {| | | | # per request initial checks| | # route(REQINIT);| | | | # NAT detection| | #route(NATDETECT);| | | | # 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();| | }| | | | if (is_method("REGISTER")) {| | xdbg("request from gggggggggggggggggggggggggggggggggggggggggg - $rm from $fu (IP:$si:$sp)\n");| | }| | rewritehostport("172.28.69.52:5060");| | | | # handle requests within SIP dialogs| | # route(WITHINDLG);| | | | ### only initial requests (no To tag)| | | | # authentication| | # route(AUTH);| | | | # record routing for dialog forming requests (in case they are routed)| | # - remove preloaded route headers| | #remove_hf("Route");| | #if (is_method("INVITE|SUBSCRIBE")) {| | # record_route();| | #}| | | | # account only INVITEs| | #if (is_method("INVITE")) {| | # setflag(FLT_ACC); # do accounting| | #}| | | | # dispatch requests to foreign domains| | #route(SIPOUT);| | | | ### requests for my local domains| | | | # handle presence related requests| | #route(PRESENCE);| | | | # handle registrations| | # route(REGISTRAR);| | | | #if ($rU==$null) {| | # # request with no Username in RURI| | # sl_send_reply("484","Address Incomplete");| | # exit;| | #}| | | | # dispatch destinations to PSTN| | #route(PSTN);| | | | # user location service| | #route(LOCATION);| |}| | | |# 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] {| | # no connect for sending replies| | set_reply_no_connect();| | # enforce symmetric signaling| | # - send back replies to the source address of request| | force_rport();| | | |#!ifdef WITH_ANTIFLOOD| | # flood detection from same IP and traffic ban for a while| | # be sure you exclude checking trusted peers, such as pstn gateways| | # - local host excluded (e.g., loop to self)| | if(src_ip!=myself) {| | if($sht(ipban=>$si)!=$null) {| | # ip is already blocked| | xdbg("request from blocked IP - $rm from $fu (IP:$si:$sp)\n");| | exit;| | }| | if (!pike_check_req()) {| | xlog("L_ALERT","ALERT: pike blocking $rm from $fu (IP:$si:$sp)\n");| | $sht(ipban=>$si) = 1;| | exit;| | }| | }| |#!endif| | if($ua =~ "friendly|scanner|sipcli|sipvicious|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("17895", "7")) {| | xlog("Malformed SIP request from $si:$sp\n");| | exit;| | }| |}| | | |# Handle requests within SIP dialogs| |route[WITHINDLG] {| | if (!has_totag()) return;| | | | # sequential request withing a dialog should| | # take the path determined by record-routing| | if (loose_route()) {| | route(DLGURI);| | if (is_method("BYE")) {| | setflag(FLT_ACC); # do accounting ...| | setflag(FLT_ACCFAILED); # ... even if the transaction fails| | } else if ( is_method("ACK") ) {| | # ACK is forwarded statelessly| | route(NATMANAGE);| | } else if ( is_method("NOTIFY") ) {| | # Add Record-Route for in-dialog NOTIFY as per RFC 6665.| | record_route();| | }| | route(RELAY);| | exit;| | }| | | | if (is_method("SUBSCRIBE") && uri == myself) {| | # in-dialog subscribe requests| | route(PRESENCE);| | 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| | route(RELAY);| | exit;| | } else {| | # ACK without matching transaction ... ignore and discard| | exit;| | }| | }| | sl_send_reply("404","Not here");| | exit;| |}| | | |# Handle SIP registrations| |route[REGISTRAR] {| | if (!is_method("REGISTER")) return;| | | | if(isflagset(FLT_NATS)) {| | setbflag(FLB_NATB);| |#!ifdef WITH_NATSIPPING| | # do SIP NAT pinging| | setbflag(FLB_NATSIPPING);| |#!endif| | }| | if (!save("location")) {| | sl_reply_error();| | }| | exit;| |}| | | |# User location service| |route[LOCATION] {| | | |#!ifdef WITH_SPEEDDIAL| | # search for short dialing - 2-digit extension| | if($rU=~"^[0-9][0-9]$") {| | if(sd_lookup("speed_dial")) {| | route(SIPOUT);| | }| | }| |#!endif| | | |#!ifdef WITH_ALIASDB| | # search in DB-based aliases| | if(alias_db_lookup("dbaliases")) {| | route(SIPOUT);| | }| |#!endif| | | | $avp(oexten) = $rU;| | if (!lookup("location")) {| | $var(rc) = $rc;| | route(TOVOICEMAIL);| | t_newtran();| | switch ($var(rc)) {| | case -1:| | case -3:| | send_reply("404", "Not Found");| | exit;| | case -2:| | send_reply("405", "Method Not Allowed");| | exit;| | }| | }| | | | # when routing via usrloc, log the missed calls also| | if (is_method("INVITE")) {| | setflag(FLT_ACCMISSED);| | }| | | | route(RELAY);| | exit;| |}| | | |# Presence server processing| |route[PRESENCE] {| | if(!is_method("PUBLISH|SUBSCRIBE")) return;| | | | if(is_method("SUBSCRIBE") && $hdr(Event)=="message-summary") {| | route(TOVOICEMAIL);| | # returns here if no voicemail server is configured| | sl_send_reply("404", "No voicemail service");| | exit;| | }| | | |#!ifdef WITH_PRESENCE| |#!ifdef WITH_MSGREBUILD| | # apply changes in case the request headers or body were modified| | msg_apply_changes();| |#!endif| | if (!t_newtran()) {| | sl_reply_error();| | exit;| | }| | | | if(is_method("PUBLISH")) {| | handle_publish();| | t_release();| | } else if(is_method("SUBSCRIBE")) {| | handle_subscribe();| | t_release();| | }| | exit;| |#!endif| | | | # if presence enabled, this part will not be executed| | if (is_method("PUBLISH") || $rU==$null) {| | sl_send_reply("404", "Not here");| | exit;| | }| | return;| |}| | | |# IP authorization and user authentication| |route[AUTH] {| |#!ifdef WITH_AUTH| | | |#!ifdef WITH_IPAUTH| | if((!is_method("REGISTER")) && allow_source_address()) {| | # source IP allowed| | return;| | }| |#!endif| | | | if (is_method("REGISTER") || from_uri==myself) {| | # authenticate requests| | if (!auth_check("$fd", "subscriber", "1")) {| | auth_challenge("$fd", "0");| | exit;| | }| | # user authenticated - remove auth header| | if(!is_method("REGISTER|PUBLISH"))| | consume_credentials();| | }| | # if caller is not local subscriber, then check if it calls| | # a local destination, otherwise deny, not an open relay here| | if (from_uri!=myself && uri!=myself) {| | sl_send_reply("403","Not relaying");| | exit;| | }| | | |#!else| | | | # authentication not enabled - do not relay at all to foreign networks| | if(uri!=myself) {| | sl_send_reply("403","Not relaying");| | exit;| | }| | | |#!endif| | return;| |}| | | |# Caller NAT detection| |route[NATDETECT] {| |#!ifdef WITH_NAT| | if (nat_uac_test("19")) {| | if (is_method("REGISTER")) {| | fix_nated_register();| | } else {| | if(is_first_hop()) {| | set_contact_alias();| | }| | }| | setflag(FLT_NATS);| | }| |#!endif| | return;| |}| | | |# RTPProxy control and signaling updates for NAT traversal| |route[NATMANAGE] {| |#!ifdef WITH_NAT| | if (is_request()) {| | if(has_totag()) {| | if(check_route_param("nat=yes")) {| | setbflag(FLB_NATB);| | }| | }| | }| | if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB))) return;| | | |#!ifdef WITH_RTPENGINE| | if(nat_uac_test("8")) {| | rtpengine_manage("replace-origin replace-session-connection");| | } else {| | rtpengine_manage("trust-address replace-origin replace-session-connection");| | }| |#!else| | if(nat_uac_test("8")) {| | rtpproxy_manage("co");| | } else {| | rtpproxy_manage("cor");| | }| |#!endif| | | | if (is_request()) {| | if (!has_totag()) {| | if(t_is_branch_route()) {| | add_rr_param(";nat=yes");| | }| | }| | }| | if (is_reply()) {| | if(isbflagset(FLB_NATB)) {| | if(is_first_hop())| | set_contact_alias();| | }| | }| | | | if(isbflagset(FLB_NATB)) {| | # no connect message in a dialog involving NAT traversal| | if (is_request()) {| | if(has_totag()) {| | set_forward_no_connect();| | }| | }| | }| |#!endif| | return;| |}| | | |# URI update for dialog requests| |route[DLGURI] {| |#!ifdef WITH_NAT| | if(!isdsturiset()) {| | handle_ruri_alias();| | }| |#!endif| | return;| |}| | | |# Routing to foreign domains| |route[SIPOUT] {| | if (uri==myself) return;| | | | append_hf("P-Hint: outbound\r\n");| | route(RELAY);| | exit;| |}| | | |# PSTN GW routing| |route[PSTN] {| |#!ifdef WITH_PSTN| | # check if PSTN GW IP is defined| | if (strempty($sel(cfg_get.pstn.gw_ip))) {| | xlog("SCRIPT: PSTN routing enabled but pstn.gw_ip not defined\n");| | return;| | }| | | | # route to PSTN dialed numbers starting with '+' or '00'| | # (international format)| | # - update the condition to match your dialing rules for PSTN routing| | if(!($rU=~"^(+|00)[1-9][0-9]{3,20}$")) return;| | | | # only local users allowed to call| | if(from_uri!=myself) {| | sl_send_reply("403", "Not Allowed");| | exit;| | }| | | | # normalize target number for pstn gateway| | # - convert leading 00 to +| | if (starts_with("$rU", "00")) {| | strip(2);| | prefix("+");| | }| | | | if (strempty($sel(cfg_get.pstn.gw_port))) {| | $ru = "sip:" + $rU + "@" + $sel(cfg_get.pstn.gw_ip);| | } else {| | $ru = "sip:" + $rU + "@" + $sel(cfg_get.pstn.gw_ip)
- ":"|
| + $sel(cfg_get.pstn.gw_port);| | }| | | | route(RELAY);| | exit;| |#!endif| | | | return;| |}| | | |# JSONRPC over HTTP(S) routing| |#!ifdef WITH_JSONRPC| |event_route[xhttp:request] {| | set_reply_close();| | set_reply_no_connect();| | if(src_ip!=127.0.0.1) {| | xhttp_reply("403", "Forbidden", "text/html",| | "<html><body>Not allowed from $si</body></html>");| | exit;| | }| | if ($hu =~ "^/RPC") {| | jsonrpc_dispatch();| | exit;| | }| | | | xhttp_reply("200", "OK", "text/html",| | "<html><body>Wrong URL $hu</body></html>");| | exit;| |}| |#!endif| | | |# Routing to voicemail server| |route[TOVOICEMAIL] {| |#!ifdef WITH_VOICEMAIL| | if(!is_method("INVITE|SUBSCRIBE")) return;| | | | # check if VoiceMail server IP is defined| | if (strempty($sel(cfg_get.voicemail.srv_ip))) {| | xlog("SCRIPT: VoiceMail routing enabled but IP not defined\n");| | return;| | }| | if(is_method("INVITE")) {| | if($avp(oexten)==$null) return;| | | | $ru = "sip:" + $avp(oexten) + "@" + $sel(cfg_get.voicemail.srv_ip)| | + ":" + $sel(cfg_get.voicemail.srv_port);| | } else {| | if($rU==$null) return;| | | | $ru = "sip:" + $rU + "@" + $sel(cfg_get.voicemail.srv_ip)| | + ":" + $sel(cfg_get.voicemail.srv_port);| | }| | route(RELAY);| | exit;| |#!endif| | | | return;| |}| | | |# Manage outgoing branches| |branch_route[MANAGE_BRANCH] {| | xdbg("new branch [$T_branch_idx] to $ru\n");| | route(NATMANAGE);| |}| | | |# Manage incoming replies| |reply_route {| | if(!sanity_check("17604", "6")) {| | xlog("Malformed SIP response from $si:$sp\n");| | drop;| | }| |}| | | |# Manage incoming replies in transaction context| |onreply_route[MANAGE_REPLY] {| | xdbg("incoming reply\n");| | if(status=~"[12][0-9][0-9]") {| | route(NATMANAGE);| | }| |}| | | |# Manage failure routing cases| |failure_route[MANAGE_FAILURE] {| | route(NATMANAGE);| | | | if (t_is_canceled()) exit;| | | |#!ifdef WITH_BLOCK3XX| | # block call redirect based on 3xx replies.| | if (t_check_status("3[0-9][0-9]")) {| | t_reply("404","Not found");| | exit;| | }| |#!endif| | | |#!ifdef WITH_BLOCK401407| | # block call redirect based on 401, 407 replies.| | if (t_check_status("401|407")) {| | t_reply("404","Not found");| | exit;| | }| |#!endif| | | |#!ifdef WITH_VOICEMAIL| | # serial forking| | # - route to voicemail on busy or no answer (timeout)| | if (t_check_status("486|408")) {| | $du = $null;| | route(TOVOICEMAIL);| | exit;| | }| |#!endif| |}|
As you can see I just one thing in |request_route|
|request_route {| | | | # per request initial checks| | # route(REQINIT);| | | | # NAT detection| | #route(NATDETECT);| | | | # 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();| | }| | | | if (is_method("REGISTER")) {| | xdbg("request from gggggggggggggggggggggggggggggggggggggggggg - $rm from $fu (IP:$si:$sp)\n");| | }| | rewritehostport("172.28.69.52:5060");|
The |172.28.69.52| is ip of my Freeswitch
After I try to call from Zoiper5, I get below error in Kamailio log and Zoiper does not work.
|4(10) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |4(10) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)|
Troubleshooting Reproduction
- pull official Kamailio docker image |kamailio/kamailio 5.4.6-buster|
- then run below command
|docker run --net=host --name kamailio | | -v /home/ssoroosh/kamailio:/etc/kamailio | | kamailio/kamailio:5.4.6-buster|
Debugging Data
I do not have any debug data
Log Messages
|Listening on| | udp: 172.28.72.99 [172.28.72.99]:5060 advertise 172.28.72.99:5060| |Aliases:| | | |0(1) INFO: rr [../outbound/api.h:52]: ob_load_api(): unable to import bind_ob - maybe module is not loaded| |0(1) INFO: rr [rr_mod.c:185]: mod_init(): outbound module not available| |0(1) INFO: <core> [main.c:2919]: main(): processes (at least): 16 - shm size: 67108864 - pkg size: 8388608| |0(1) INFO: <core> [core/udp_server.c:154]: probe_max_receive_buffer(): SO_RCVBUF is initially 212992| |0(1) INFO: <core> [core/udp_server.c:206]: probe_max_receive_buffer(): SO_RCVBUF is finally 425984| |13(19) INFO: jsonrpcs [jsonrpcs_sock.c:443]: jsonrpc_dgram_process(): a new child 0/19| |15(21) INFO: ctl [io_listener.c:210]: io_listen_loop(): io_listen_loop: using epoll_lt as the io watch method (auto detected)| |2(8) INFO: <core> [core/parser/parse_fline.c:156]: parse_first_line(): ERROR:parse_first_line: method not followed by SP| |2(8) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 0)| |2(8) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||��||>| |2(8) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |4(10) INFO: <core> [core/parser/parse_fline.c:156]: parse_first_line(): ERROR:parse_first_line: method not followed by SP| |4(10) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 0)| |4(10) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |4(10) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |1(7) INFO: <core> [core/parser/parse_fline.c:156]: parse_first_line(): ERROR:parse_first_line: method not followed by SP| |1(7) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 0)| |1(7) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |1(7) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |3(9) INFO: <core> [core/parser/parse_fline.c:156]: parse_first_line(): ERROR:parse_first_line: method not followed by SP| |3(9) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 0)| |3(9) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |3(9) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |5(11) INFO: <core> [core/parser/parse_fline.c:156]: parse_first_line(): ERROR:parse_first_line: method not followed by SP| |5(11) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 0)| |5(11) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |5(11) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |8(14) INFO: <core> [core/parser/parse_fline.c:156]: parse_first_line(): ERROR:parse_first_line: method not followed by SP| |8(14) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 0)| |8(14) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |8(14) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |1(7) INFO: <core> [core/parser/parse_fline.c:156]: parse_first_line(): ERROR:parse_first_line: method not followed by SP| |1(7) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 0)| |1(7) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |1(7) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |5(11) INFO: <core> [core/parser/parse_fline.c:156]: parse_first_line(): ERROR:parse_first_line: method not followed by SP| |5(11) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 0)| |5(11) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |5(11) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |4(10) INFO: <core> [core/parser/parse_fline.c:156]: parse_first_line(): ERROR:parse_first_line: method not followed by SP| |4(10) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 0)| |4(10) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |4(10) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |5(11) INFO: <core> [core/parser/parse_fline.c:156]: parse_first_line(): ERROR:parse_first_line: method not followed by SP| |5(11) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 0)| |5(11) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |5(11) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |6(12) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 41)| |6(12) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||��||>| |6(12) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |7(13) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 41)| |7(13) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |7(13) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |8(14) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 41)| |8(14) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |8(14) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |2(8) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 41)| |2(8) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |2(8) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |4(10) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 41)| |4(10) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |4(10) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |1(7) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 41)| |1(7) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |1(7) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |3(9) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 41)| |3(9) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |3(9) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |5(11) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 41)| |5(11) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |5(11) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |6(12) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 41)| |6(12) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |6(12) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)| |7(13) ERROR: <core> [core/parser/parse_fline.c:271]: parse_first_line(): parse_first_line: bad message (offset: 41)| |7(13) ERROR: <core> [core/parser/msg_parser.c:681]: parse_msg(): ERROR: parse_msg: message=<||���||>| |7(13) ERROR: <core> [core/receive.c:310]: receive_msg(): core parsing of SIP message failed (172.28.64.1:51370/1)|
SIP Traffic
My pcap is attached sip.zip https://github.com/kamailio/kamailio/files/8326814/sip.zip
Possible Solutions
I have not any solution yet.
Additional Information
- *Kamailio Version* - output of |kamailio -v|
|version: kamailio 5.4.6 (x86_64/linux)| |flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED| |ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB| |poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.| |id: unknown| |compiled with gcc 8.3.0|
- *Operating System*:
|Linux master 5.4.0-104-generic #118-Ubuntu SMP Wed Mar 2 19:02:41 UTC 2022 x86_64 GNU/Linux| | | |root@master:/home# lsb_release -a| |No LSB modules are available.| |Distributor ID: Debian| |Description: Debian GNU/Linux 10 (buster)| |Release: 10| |Codename: buster|
*How to resolve this?*
thanks
Kamailio - Users Mailing List - Non Commercial Discussions
- sr-users@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: