[Serusers] NAT Problem No Voice

Kamran Ahmad p_kami at yahoo.com
Sat Apr 9 12:59:13 CEST 2005


i am getting following error
-------------------------------------------------
WARNING: no fork mode  and more than one listen
address found (will use only the the first one)
 0(25979) DEBUG: init_mod: sl_module
stateless - initializing
 0(25979) DEBUG: register_fifo_cmd: new command
(sl_stats) registered
 0(25979) DEBUG: MD5 calculated:
b27e1a1d33761e85846fc98f5f3a7e58
 0(25979) DEBUG: init_mod: tm
 0(25979) TM - initializing...
 0(25979) Call-ID initialization: '7f7bddf7'
 0(25979) DEBUG: register_fifo_cmd: new command
(t_uac_dlg) registered
 0(25979) DEBUG: register_fifo_cmd: new command
(t_uac_cancel) registered
 0(25979) DEBUG: register_fifo_cmd: new command
(t_hash) registered
 0(25979) DEBUG: lock_initialize: lock initialization
started
 0(25979) DEBUG: register_fifo_cmd: new command
(t_stats) registered
 0(25979) DEBUG: MD5 calculated:
533cb9e91f4b999cf76861cbb9ed54ed
 0(25979) DEBUG: MD5 calculated:
a6a1c5f60faecf035a1ae5b6e96e979a
 0(25979) DEBUG: init_mod: rr
 0(25979) rr - initializing
 0(25979) DEBUG: init_mod: maxfwd_module
Maxfwd module- initializing
 0(25979) DEBUG: init_mod: usrloc
 0(25979) usrloc - initializing
 0(25979) DEBUG: register_fifo_cmd: new command
(ul_stats) registered
 0(25979) DEBUG: register_fifo_cmd: new command
(ul_rm) registered
 0(25979) DEBUG: register_fifo_cmd: new command
(ul_rm_contact) registered
 0(25979) DEBUG: register_fifo_cmd: new command
(ul_dump) registered
 0(25979) DEBUG: register_fifo_cmd: new command
(ul_flush) registered
 0(25979) DEBUG: register_fifo_cmd: new command
(ul_add) registered
 0(25979) DEBUG: register_fifo_cmd: new command
(ul_show_contact) registered
 0(25979) DEBUG: init_mod: registrar
 0(25979) registrar - initializing
 0(25979) find_export: found <sl_send_reply> in module
sl_module [/usr/local/lib/ser/modules/sl.so]
 0(25979) find_export: found <ul_bind_usrloc> in
module usrloc [/usr/local/lib/ser/modules/usrloc.so]
 0(25979) find_export: found <ul_register_udomain> in
module usrloc [/usr/local/lib/ser/modules/usrloc.so]
 0(25979) find_export: found <ul_get_all_ucontacts> in
module usrloc [/usr/local/lib/ser/modules/usrloc.so]
 0(25979) find_export: found <ul_insert_urecord> in
module usrloc [/usr/local/lib/ser/modules/usrloc.so]
 0(25979) find_export: found <ul_delete_urecord> in
module usrloc [/usr/local/lib/ser/modules/usrloc.so]
 0(25979) find_export: found <ul_get_urecord> in
module usrloc [/usr/local/lib/ser/modules/usrloc.so]
 0(25979) find_export: found <ul_lock_udomain> in
module usrloc [/usr/local/lib/ser/modules/usrloc.so]
 0(25979) find_export: found <ul_unlock_udomain> in
module usrloc [/usr/local/lib/ser/modules/usrloc.so]
 0(25979) find_export: found <ul_release_urecord> in
module usrloc [/usr/local/lib/ser/modules/usrloc.so]
 0(25979) find_export: found <ul_insert_ucontact> in
module usrloc [/usr/local/lib/ser/modules/usrloc.so]
 0(25979) find_export: found <ul_delete_ucontact> in
module usrloc [/usr/local/lib/ser/modules/usrloc.so]
 0(25979) find_export: found <ul_get_ucontact> in
module usrloc [/usr/local/lib/ser/modules/usrloc.so]
 0(25979) find_export: found <ul_update_ucontact> in
module usrloc [/usr/local/lib/ser/modules/usrloc.so]
 0(25979) DEBUG: init_mod: uri
 0(25979) uri - initializing
 0(25979) find_export: <db_use_table> not found
 0(25979) uri:mod_init(): No database module found
 0(25979) init_mod(): Error while initializing module
uri
ERROR: error while initializing modules
 0(25979) DEBUG: tm_shutdown : start
 0(25979) DEBUG: tm_shutdown : empting DELETE list
 0(25979) DEBUG: tm_shutdown : empting hash table
 0(25979) DEBUG: tm_shutdown: releasing timers
 0(25979) DEBUG: tm_shutdown : removing semaphores
 0(25979) DEBUG: tm_shutdown : done
 0(25979) shm_mem_destroy
 0(25979) destroying the shared memory lock
-----------------------------------------------------
ser.cfg
-----------------------------------------------------
#debug=3
#fork=yes
#log_stderror=no

debug=7
fork=no
log_stderror=yes

dns=no
rev_dns=no
fifo="/tmp/ser_fifo"
#fifo_db_url="mysql://ser:heslo@localhost/ser"

#loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
#loadmodule "/usr/local/lib/ser/modules/auth.so"
#loadmodule "/usr/local/lib/ser/modules/auth_db.so"

loadmodule "/usr/local/lib/ser/modules/uri.so"
loadmodule "/usr/local/lib/ser/modules/domain.so"
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
#loadmodule "/usr/local/lib/ser/modules/uri_db.so"

#modparam("auth_db|usrloc|uri_db", "db_url",
"mysql://ser:heslo@localhost/ser")
#modparam("auth_db", "calculate_ha1", 1)
#modparam("auth_db", "password_column", "password")

modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "rtpproxy_sock",
"unix:/var/run/rtpproxy.sock")
modparam("usrloc", "db_mode", 0)
modparam("registrar", "nat_flag", 6)
modparam("rr", "enable_full_lr", 1)


route {
     #
-----------------------------------------------------------------
     # Sanity Check Section
     #
-----------------------------------------------------------------
     if (!mf_process_maxfwd_header("10")) {
             sl_send_reply("483", "Too Many Hops");
             break;
     };
     if (msg:len > max_len) {
             sl_send_reply("513", "Message Overflow");
             break;
     };
     #
-----------------------------------------------------------------
     # Record Route Section
     #
-----------------------------------------------------------------
     if (method!="REGISTER") {
             record_route();
     };
     if (method=="BYE" || method=="CANCEL") {
             unforce_rtp_proxy();
     }
     #
-----------------------------------------------------------------
     # Loose Route Section
     #
-----------------------------------------------------------------
     if (loose_route()) {

           if (has_totag() && method=="INVITE") {
                   if (nat_uac_test("19")) {
                           setflag(6);
                           force_rport();
                           fix_nated_contact();
                   };

                   force_rtp_proxy("l");
           };
           route(1);
           break;
    };
    #
-----------------------------------------------------------------
    # Call Type Processing Section
    #
-----------------------------------------------------------------
    if (uri==myself) {
           if (method=="INVITE") {
                   route(3);
                   break;
           } else if (method=="REGISTER") {
                   route(2);
                   break;
           };
 
          if (!lookup("location")) {
                   sl_send_reply("404", "User Not
Found");
                   break;
           };
          route(1);
    };
}


route[1] {
     #
-----------------------------------------------------------------
     # Default Message Handler
     #
-----------------------------------------------------------------
     t_on_reply("1");
     if (!t_relay()) {
            if (method=="INVITE" && isflagset(6)) {
                    unforce_rtp_proxy();
            };
            sl_reply_error();
     };
}


route[2] {
     #
-----------------------------------------------------------------
     # REGISTER Message Handler
     #
----------------------------------------------------------------
     if (!search("^Contact: \*") &&
nat_uac_test("19")) {
             setflag(6);
#             fix_nated_register();
		fix_nated_contact();
             force_rport();
     };
     sl_send_reply("100", "Trying");

#     if (!www_authorize("","subscriber")) {
#             www_challenge("","0");
#             break;
#     };

     if (!check_to()) {
             sl_send_reply("401", "Unauthorized");
             break;
     };

#     consume_credentials();

     if (!save("location")) {
	     sl_reply_error();
	};
}


route[3] {
     #
-----------------------------------------------------------------
     # INVITE Message Handler
     #
-----------------------------------------------------------------
     if (nat_uac_test("19")) {
             setflag(6);
     }
     if (!lookup("location")) {
             sl_send_reply("404", "User Not Found");
             break;
     };
#     if (!proxy_authorize("","subscriber")) {
#             proxy_challenge("","0");
#             break;
#     } else if (!check_from()) {
#	if(!check_from()) {
#             sl_send_reply("403", "Use From=ID");
#             break;
#     };

#     consume_credentials();

     if (isflagset(6)) {
             force_rport();
             fix_nated_contact();
             force_rtp_proxy();
     };
	
	t_on_reply("1");

     if (!t_relay()) {

             if(isflagset(6)) {
                    unforce_rtp_proxy();
             }

             sl_reply_error();
     };
}

onreply_route[1] {
     if (isflagset(6) &&
status=~"(180)|(183)|2[0-9][0-9]") {
             if (!search("^Content-Length:\ 0")) {
                    force_rtp_proxy();
             };
     } else if (nat_uac_test("1")) {
             fix_nated_contact();
     };
}
-----------------------------------------------------

--- "Greger V. Teigre" <greger at teigre.com> wrote:

> Kamran,
> There is not rtpproxy installation. Just start it...
>  It will communicate 
> through the default Unix socket.  You need to make
> sure that rtpproxy has 
> the correct version number to communicate with your
> ser version.
>     You will find instructions in the Getting
> Started document at 
> http://onsip.org/ as well as a ser Getting Started
> source package where the 
> versions match.
> g-)
> 
> Kamran Ahmad wrote:
> > hello
> >
> > NATHelper Module is usefull in communicating
> through
> > sip.
> >
> > now i am getting calles on both sides of NAT but
> > without voice. here is my "var/log/messages"
> >
> > need help on RTP Proxy. how to install RTPProxy.
> >
> >
>
------------------------------------------------------
> > Apr  9 01:55:10 achieva ser[10869]: ERROR:
> > force_rtp_proxy2: support for RTP proxy is
> disabled
> > Apr  9 01:55:15 achieva ser[10870]: ERROR:
> > send_rtpp_command: can't connect to RTP proxy
> > Apr  9 01:55:15 achieva ser[10870]: WARNING:
> > rtpp_test: can't get version of the RTP proxy
> > Apr  9 01:55:15 achieva ser[10870]: WARNING:
> > rtpp_test: support for RTP proxyhas been disabled
> > temporarily
> > Apr  9 01:55:15 achieva ser[10870]: ERROR:
> > force_rtp_proxy2: support for RTP proxy is
> disabled
> > Apr  9 01:55:15 achieva ser[10870]: ERROR:
> on_reply
> > processing failed
> >
>
------------------------------------------------------
> >
> > ser.cfg
> >
>
------------------------------------------------------
> > debug=3         # debug level (cmd line:
> -dddddddddd)
> > fork=yes
> > log_stderror=no # (cmd line: -E)
> >
> > /* Uncomment these lines to enter debugging mode
> > fork=no
> > log_stderror=yes
> > */
> >
> > check_via=no # (cmd. line: -v)
> > dns=no           # (cmd. line: -r)
> > rev_dns=no      # (cmd. line: -R)
> > port=5060
> > children=4
> > fifo="/tmp/ser_fifo"
> >
> > # ------------------ module loading
> > ----------------------------------
> >
> > # Uncomment this if you want to use SQL database
> > #loadmodule "/usr/local/lib/ser/modules/mysql.so"
> >
> > loadmodule "/usr/local/lib/ser/modules/sl.so"
> > loadmodule "/usr/local/lib/ser/modules/tm.so"
> > loadmodule "/usr/local/lib/ser/modules/rr.so"
> > loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
> > loadmodule "/usr/local/lib/ser/modules/usrloc.so"
> > loadmodule
> "/usr/local/lib/ser/modules/registrar.so"
> > loadmodule "/usr/local/lib/ser/modules/textops.so"
> >
> > # Uncomment this if you want digest authentication
> > # mysql.so must be loaded !
> > #loadmodule "/usr/local/lib/ser/modules/auth.so"
> > #loadmodule
> "/usr/local/lib/ser/modules/auth_db.so"
> >
> > # !! Nathelper
> > loadmodule
> "/usr/local/lib/ser/modules/nathelper.so"
> >
> > # ----------------- setting module-specific
> parameters
> > ---------------
> >
> > # -- usrloc params --
> >
> > modparam("usrloc", "db_mode",   0)
> >
> > # Uncomment this if you want to use SQL database
> > # for persistent storage and comment the previous
> line
> > #modparam("usrloc", "db_mode", 2)
> >
> > # -- auth params --
> > # Uncomment if you are using auth module
> > #
> > #modparam("auth_db", "calculate_ha1", yes)
> > #
> > # If you set "calculate_ha1" parameter to yes
> (which
> > true in this config),
> > # uncomment also the following parameter)
> > #
> > #modparam("auth_db", "password_column",
> "password")
> >
> > # -- rr params --
> > # add value to ;lr param to make some broken UAs
> happy
> > modparam("rr", "enable_full_lr", 1)
> >
> > # !! Nathelper
> > modparam("registrar", "nat_flag", 6)
> > modparam("nathelper", "natping_interval", 30) #
> Ping
> > interval 30 s
> > modparam("nathelper", "ping_nated_only", 1)   #
> Ping
> > only clients behind NAT
> >
> > # -------------------------  request routing logic
> > -------------------
> >
> > # main routing logic
> >
> > route{
> >
> > # initial sanity checks -- messages with
> > # max_forwards==0, or excessively long requests
> > if (!mf_process_maxfwd_header("10")) {
> > sl_send_reply("483","Too Many Hops");
> > break;
> > };
> > if (msg:len >=  max_len ) {
> > sl_send_reply("513", "Message too big");
> > break;
> > };
> >
> >        # !! Nathelper
> > # Special handling for NATed clients; first, NAT
> test
> > is
> > # executed: it looks for via!=received and RFC1918
> > addresses
> > # in Contact (may fail if line-folding is used);
> > also,
> > # the received test should, if completed, should
> > check all
> > # vias for rpesence of received
> > if (nat_uac_test("3")) {
> > # Allow RR-ed requests, as these may indicate that
> > # a NAT-enabled proxy takes care of it; unless it
> is
> > # a REGISTER
> >
> > if (method == "REGISTER" || !
> > search("^Record-Route:")) {
> >     log("LOG: Someone trying to register from
> > private IP, rewriting\n");
> >
> >     # This will work only for user agents that
> > support symmetric
> >     # communication. We tested quite many of them
> > and majority is
> >     # smart enough to be symmetric. In some phones
> > it takes a configuration
> >     # option. With Cisco 7960, it is called
> > NAT_Enable=Yes, with kphone it is
> >     # called "symmetric media" and "symmetric
> > signalling".
> >
> >     fix_nated_contact(); # Rewrite contact with
> > source IP of signalling
> >     if (method == "INVITE") {
> >         fix_nated_sdp("1"); # Add direction=active
> > to SDP
> >     };
> >     force_rport(); # Add rport parameter to
> topmost
> > Via
> >     setflag(6);    # Mark as NATed
> > };
> > };
> >
> > # we record-route all messages -- to make sure
> that
> > # subsequent messages will go through our proxy;
> > that's
> > # particularly good if upstream and downstream
> 
=== message truncated ===



		
__________________________________ 
Do you Yahoo!? 
Yahoo! Small Business - Try our new resources site!
http://smallbusiness.yahoo.com/resources/




More information about the sr-users mailing list