[OpenSIPS-Users] NAT Contact address issues with Nokia Mobile

oso che bol ndlgroup1 at gmail.com
Tue Mar 31 20:34:06 CEST 2009


Dear Bogdan,

Regarding about old question, could you please tell me why:
- Contact of Mobile: sip:8000 at 212.15.B.C:1120
- Contact of X-Lite: sip:6000 at 58.186.Y.Z:14553;rinstance=abb597b601e7398b

What is rinstance and does it impact to the call. I make call from Mobile
(SJPhone on winCE) to X-Lite and after 32s, it drop call. Both UAs behind
NAT.

But, x-lite --to/from -- x-lite: call successful, no drop.

Thanks,
-LN

On Tue, Mar 31, 2009 at 11:09 PM, oso che bol <ndlgroup1 at gmail.com> wrote:

> Dear Bogdan,
>
> Thanks very much for your time.
>
> Regards,
> -LN
>
>
> On Tue, Mar 31, 2009 at 8:53 PM, Bogdan-Andrei Iancu <
> bogdan at voice-system.ro> wrote:
>
>> Please use fix_nated_register() for REGISTER requests - this will set the
>> appropriate info to be saved in usrloc.
>>
>> fix_nated_register() is not changing the contact (so the usrloc will save
>> the real contact), but is just setting some additional info to be saved in
>> usrloc (the received field)
>>
>> fix_nated_contact() is actually changing the contact from the request -
>> this is to be used for non-REGISTER requests.
>>
>> Regards,
>> Bogdan
>>
>> oso che bol wrote:
>>
>>>
>>> Dear Bogdan
>>>
>>> I change the config of NATed REGISTER request to:
>>>
>>> /    if (nat_uac_test("19")) {
>>>        if (is_method("REGISTER") || !search("^Record-Route")) {
>>>            log("LOG: HTK Someone trying to register from private IP,
>>> rewriting\n");
>>>            fix_nated_contact(); # Rewrite contact with source IP of
>>> signalling
>>>            force_rport(); # Add rport parameter to topmost Via
>>>            setbflag(6);    # Mark as NATed
>>>        if (method=="INVITE") {
>>>            fix_nated_sdp("1"); # Add direction=active to SDP
>>>            force_rport(); # Add rport parameter to topmost Via
>>>            setbflag(6); # Mark as NATed
>>>         };
>>>        };/
>>>
>>> Output of "opensipsctl ul show":
>>>
>>> /[root at LN]# opensipsctl ul show
>>> database engine 'MYSQL' loaded
>>> Control engine 'FIFO' loaded
>>> entering fifo_cmd ul_dump
>>> Mar 31 07:17:27 [6412] DBG:mi_fifo:mi_parse_node: end of input tree
>>> Mar 31 07:17:27 [6412] DBG:mi_fifo:mi_fifo_server: done parsing the mi
>>> tree
>>> Domain:: aliases table=512 records=0 max_slot=0
>>> Domain:: location table=512 records=2 max_slot=1
>>>    AOR:: 5000
>>>        Contact:: sip:5000 at 77.69.220.94:5060;transport=UDP Q=
>>>            Expires:: 1038
>>>            Callid:: A9AOj5F5oIeDS04U53IMr4_65zZvf5
>>>            Cseq:: 6049
>>>            User-agent:: E66-1 RM-343 102.07.81
>>>            State:: CS_SYNC
>>>            Flags:: 0
>>>            Cflag:: 64
>>>            Socket:: udp:174.132.X.Y:5060
>>>            Methods:: 4294967295
>>>    AOR:: 6000
>>>        Contact:: sip:6000 at 58.186.156.135:11370;rinstance=dbe921dccef4bee4
>>> Q=
>>>            Expires:: 1060
>>>            Callid:: MDdmOTVkNzAzODAxN2JiMjk0MTk1NTEwNThjOWE2ZTM.
>>>            Cseq:: 6
>>>            User-agent:: X-Lite release 1100l stamp 47546
>>>            State:: CS_SYNC
>>>            Flags:: 0
>>>            Cflag:: 64
>>>            Socket:: udp:174.132.X.Y:5060
>>>            Methods:: 5951
>>> FIFO command was:
>>> :ul_dump:opensips_receiver_6568/
>>>
>>> Could you please explain why with mobile user 5000, the contact
>>> /sip:5000 at 77.69.220.94:5060;transport=UDP /and with X-Lite User 6000 the
>>> contact is /6000 at 58.186.156.135:11370;rinstance=dbe921dccef4bee4/
>>>
>>> How fix_nated_register() differ with fix_nated_register(), do we need to
>>> call fix_nated_register() at REGISTER processing?
>>>
>>> Thanks and Regards,
>>>
>>> -LN
>>>
>>> On Tue, Mar 31, 2009 at 6:19 PM, Bogdan-Andrei Iancu <
>>> bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>> wrote:
>>>
>>>    Hi,
>>>
>>>    if the online-user info is correct, it looks like the
>>>    fix_nated_register() is not done.
>>>
>>>    Please post the output of "opensipsctl ul show", for that specific
>>>    user.
>>>
>>>    Also test by using xlog if the at register time your processing
>>>    gets inside the "if (!search("^Contact:[ ]*\*") &&
>>>    nat_uac_test("19")) {".
>>>
>>>    Regards,
>>>    Bogdan
>>>
>>>    oso che bol wrote:
>>>
>>>        Dear All,
>>>
>>>        I use Opensips 1.4.1 with rtpproxy 1.2 for NAT support.
>>>
>>>        I use X-Lite which is Behind NAT, register to OpenSIPs proxy,
>>>        Opensips store right contact address. But, when i use Nokia
>>>        E66 to register to Opensips, the contact address is bellow:
>>>        Online SIP Users
>>>        Username Domain Contact Expires User Agent
>>>        5000 *sip:5000 at 192.168.1.100 <sip%3A5000 at 192.168.1.100> <mailto:
>>> sip%3A5000 at 192.168.1.100 <sip%253A5000 at 192.168.1.100>>
>>>        <mailto:sip%3A5000 at 192.168.1.100 <sip%253A5000 at 192.168.1.100>
>>>        <mailto:sip%253A5000 at 192.168.1.100 <sip%25253A5000 at 192.168.1.100>>>;transport=UDP*
>>> 2009-03-30
>>>
>>>        07:20:24.0 E66-1 RM-343 102.07.81
>>>
>>>
>>>        User 5000 do not store with external IP address of its
>>>        (external address not 192.168.1.100). Do you have any ideas
>>>        about this?
>>>
>>>        Bellow is my Opensips.conf
>>>
>>>        Thanks and Regards,
>>>
>>>        -LN
>>>
>>>        Opensips.conf
>>>
>>>        ==================
>>>
>>>        ####### Global Parameters #########
>>>
>>>        debug=4
>>>        log_stderror=yes
>>>        log_facility=LOG_LOCAL0
>>>
>>>        fork=yes
>>>        children=4
>>>
>>>        /* uncomment the following lines to enable debugging */
>>>        #debug=6
>>>        #fork=no
>>>        #log_stderror=yes
>>>
>>>        #disable_tcp=yes
>>>        #disable_dns_blacklist=no
>>>        #dns_try_ipv6=yes
>>>        #auto_aliases=no
>>>
>>>        /* uncomment the following lines to enable TLS support
>>>         (default off) */
>>>        #disable_tls = no
>>>        #listen = tls:your_IP:5061
>>>        #tls_verify_server = 1
>>>        #tls_verify_client = 1
>>>        #tls_require_client_certificate = 0
>>>        #tls_method = TLSv1
>>>        #tls_certificate = "//etc/opensips/tls/user/user-cert.pem"
>>>        #tls_private_key = "//etc/opensips/tls/user/user-privkey.pem"
>>>        #tls_ca_list = "//etc/opensips/tls/user/user-calist.pem"
>>>
>>>
>>>        port=5060
>>>        listen=udp:MY_OPENSIP_IP:5060
>>>
>>>
>>>        ####### Modules Section ########
>>>
>>>        #set module path
>>>        mpath="//lib/opensips/modules/"
>>>
>>>        /* uncomment next line for MySQL DB support */
>>>        loadmodule "db_mysql.so"
>>>        loadmodule "sl.so"
>>>        loadmodule "tm.so"
>>>        loadmodule "rr.so"
>>>        loadmodule "maxfwd.so"
>>>        loadmodule "usrloc.so"
>>>        loadmodule "registrar.so"
>>>        loadmodule "textops.so"
>>>        loadmodule "mi_fifo.so"
>>>        loadmodule "uri_db.so"
>>>        loadmodule "uri.so"
>>>        loadmodule "xlog.so"
>>>        loadmodule "acc.so"
>>>        loadmodule "auth.so"
>>>        loadmodule "auth_db.so"
>>>
>>>        #loadmodule "presence.so"
>>>        #loadmodule "presence_xml.so"
>>>
>>>        loadmodule "nathelper.so"
>>>        loadmodule "avpops.so"
>>>        ######################
>>>
>>>
>>>        modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
>>>        modparam("rr", "enable_full_lr", 1)
>>>        modparam("rr", "append_fromtag", 0)
>>>        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)
>>>        modparam("uri_db", "use_uri_table", 1)
>>>        modparam("uri_db", "db_url",
>>>        "mysql://sermyadmin:secret@MY_DATABASE_IP/sermyadmin")
>>>        #them for bug9, like guide in bug9
>>>        modparam("uri_db", "db_table", "uri")
>>>
>>>
>>>        # ----- acc params -----
>>>        /* what sepcial events should be accounted ? */
>>>        modparam("acc", "early_media", 1)
>>>        modparam("acc", "report_ack", 1)
>>>        modparam("acc", "report_cancels", 1)
>>>        modparam("acc", "detect_direction", 0)
>>>        modparam("acc", "failed_transaction_flag", 3)
>>>        modparam("acc", "log_flag", 1)
>>>        modparam("acc", "log_missed_flag", 2)
>>>        modparam("acc", "db_flag", 1)
>>>        modparam("acc", "db_missed_flag", 2)
>>>
>>>        modparam("usrloc", "db_mode",   2)
>>>        modparam("usrloc", "db_url",
>>>           "mysql://sermyadmin:secret@MY_DATABASE_IP/sermyadmin")
>>>
>>>        modparam("auth_db", "calculate_ha1", yes)
>>>        modparam("auth_db", "password_column", "password")
>>>        modparam("auth_db|permission", "db_url",
>>>           "mysql://sermyadmin:secret@MY_DATABASE_IP/sermyadmin")
>>>
>>>        modparam("avpops", "avp_url",
>>>        "mysql://sermyadmin:secret@MY_DATABASE_IP/sermyadmin")
>>>        modparam("avpops", "avp_table", "usr_preferences")
>>>
>>>        #try for fix error of Mobile Address
>>>        modparam("registrar", "received_avp", "$avp(s:rcv)")
>>>        modparam("nathelper", "received_avp", "$avp(s:rcv)")
>>>
>>>        #Theo guide
>>>        http://www.opensips.org/html/docs/modules/1.4.x/registrar.html
>>>        modparam("usrloc", "nat_bflag", 6)
>>>        modparam("nathelper", "ping_nated_only", 1)
>>>        modparam("nathelper", "sipping_bflag", 8)
>>>
>>>        #modparam("nathelper", "rtpproxy_sock", "udp:MY_RTPPROXY_IP:7890")
>>>        modparam("nathelper", "force_socket", "udp:MY_RTPPROXY_IP:7890")
>>>        modparam("nathelper", "natping_interval", 89)
>>>        modparam("nathelper", "sipping_from", "sip:1000 at MY_OPENSIP_IP")
>>>
>>>
>>>        # main request routing logic
>>>
>>>        route {
>>>
>>>           #
>>>        -----------------------------------------------------------------
>>>           # Sanity Check Section
>>>           #
>>>        -----------------------------------------------------------------
>>>           if (!mf_process_maxfwd_header("10")) {
>>>               sl_send_reply("483", "Too Many Hops");
>>>               exit;
>>>           }
>>>
>>>           if (msg:len > max_len) {
>>>               sl_send_reply("513", "Message Overflow");
>>>               exit;
>>>           }
>>>
>>>           #
>>>        -----------------------------------------------------------------
>>>           # Record Route Section
>>>           #
>>>        -----------------------------------------------------------------
>>>           if (method!="REGISTER") {
>>>               record_route();
>>>           }
>>>
>>>           if (method=="BYE" || method=="CANCEL") {
>>>               unforce_rtp_proxy();
>>>           }
>>>
>>>           #
>>>        -----------------------------------------------------------------
>>>           # Loose Route Section
>>>           #
>>>        -----------------------------------------------------------------
>>>           if (loose_route()) {
>>>
>>>               if ((method=="INVITE" || method=="REFER") &&
>>>        !has_totag()) {
>>>                   sl_send_reply("403", "Forbidden");
>>>                   exit;
>>>               }
>>>
>>>               if (method=="INVITE") {
>>>
>>>                   if (!proxy_authorize("MY_OPENSIPS_IP","subscriber")) {
>>>                       proxy_challenge("MY_OPENSIPS_IP","0");
>>>                       exit;
>>>                   } else if (!check_from()) {
>>>                       sl_send_reply("403", "Use From=ID");
>>>                       exit;
>>>                   }
>>>                   consume_credentials();
>>>
>>>                   if (nat_uac_test("19")) {
>>>                       setflag(6);
>>>                       force_rport();
>>>                       fix_nated_contact();
>>>                   }
>>>                   force_rtp_proxy("l");
>>>               }
>>>               route(1);
>>>               exit;
>>>           }
>>>
>>>           #
>>>        -----------------------------------------------------------------
>>>           # Call Type Processing Section
>>>           #
>>>        -----------------------------------------------------------------
>>>           if (uri!=myself) {
>>>               route(4);
>>>               route(1);
>>>               exit;
>>>           }
>>>
>>>           if (method=="ACK") {
>>>               route(1);
>>>               exit;
>>>           } else if (method=="CANCEL") {
>>>               route(1);
>>>               exit;
>>>           } else if (method=="INVITE") {
>>>               route(3);
>>>               exit;
>>>           } else  if (method=="REGISTER") {
>>>               route(2);
>>>               exit;
>>>           }
>>>
>>>           lookup("aliases");
>>>           if (uri!=myself) {
>>>               route(4);
>>>               route(1);
>>>               exit;
>>>           }
>>>
>>>           if (!lookup("location")) {
>>>               sl_send_reply("404", "User Not Found");
>>>               exit;
>>>           }
>>>
>>>           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();
>>>               force_rport();
>>>           }
>>>
>>>           sl_send_reply("100", "Trying");
>>>
>>>           if (!www_authorize("MY_OPENSIPS_IP","subscriber")) {
>>>               www_challenge("MY_OPENSIPS_IP","0");
>>>               exit;
>>>           }
>>>
>>>           #if (!check_to()) {
>>>           #    sl_send_reply("401", "Unauthorized Loi Ngo");
>>>           #    exit;
>>>           #}
>>>
>>>           consume_credentials();
>>>
>>>           if (!save("location")) {
>>>               sl_reply_error();
>>>           };
>>>        }
>>>
>>>        route[3] {
>>>
>>>           #
>>>        -----------------------------------------------------------------
>>>           # INVITE Message Handler
>>>           #
>>>        -----------------------------------------------------------------
>>>             #Drop because error Use From=ID when call. Open
>>>           #if (!proxy_authorize("","subscriber")) {
>>>           #    proxy_challenge("","0");
>>>           #    exit;
>>>           #} else if (!check_from()) {
>>>           #    sl_send_reply("403", "Use From=ID");
>>>           #    exit;
>>>           #}
>>>
>>>           #consume_credentials();
>>>
>>>           if (nat_uac_test("19")) {
>>>               setflag(6);
>>>           }
>>>
>>>           lookup("aliases");
>>>           if (uri!=myself) {
>>>               route(4);
>>>               route(1);
>>>               exit;
>>>           }
>>>
>>>           if (!lookup("location")) {
>>>               sl_send_reply("404", "User Not Found");
>>>               exit;
>>>           }
>>>
>>>           route(4);
>>>           route(1);
>>>        }
>>>
>>>        route[4] {
>>>
>>>           #
>>>        -----------------------------------------------------------------
>>>           # NAT Traversal Section
>>>           #
>>>        -----------------------------------------------------------------
>>>
>>>           if (isflagset(6)) {
>>>               force_rport();
>>>               fix_nated_contact();
>>>               force_rtp_proxy();
>>>           }
>>>        }
>>>
>>>        onreply_route[1] {
>>>
>>>           if (isflagset(6) && status=~"(180)|(183)|2[0-9][0-9]") {
>>>               if (!search("^Content-Length:[ ]*0")) {
>>>                   force_rtp_proxy();
>>>               }
>>>           }
>>>
>>>           if (nat_uac_test("1")) {
>>>               fix_nated_contact();
>>>           }
>>>        }
>>>
>>>
>>>  ------------------------------------------------------------------------
>>>
>>>        _______________________________________________
>>>        Users mailing list
>>>        Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>>>        http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.opensips.org/pipermail/users/attachments/20090401/81e41cb1/attachment-0001.htm 


More information about the Users mailing list