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

oso che bol ndlgroup1 at gmail.com
Thu Apr 2 13:09:30 CEST 2009


Dear Bogdan,

Thanks you for your spending time on this.

It works like a charm :)

Thanks and Regards,
-LN

On Thu, Apr 2, 2009 at 5:42 PM, Bogdan-Andrei Iancu
<bogdan at voice-system.ro>wrote:

> Hi,
>
> even if this was already discussed on the #opensips IRC channel, for the
> sake of completion:
>
> The 400 Bad request was because of the malformed SDP - some bogus space
> were inserted while nathelper did some changes. This is an old bug and it
> was fixed starting wit 1.4.2.
>
> In this report 1.4.1 was used, so upgrading to 1.4.5 should solve the
> problem.
>
> Regards,
> Bogdan
>
> oso che bol wrote:
>
>> Dear Bogdan,
>>
>> I meet the issues of callee reply "400 - bad request"
>>
>> Attach is my trace from opensips server.
>>
>> Bellow is my configure of Opensips. Please take a time for my issues:
>>
>> route {
>>    log(1,
>> "----------------------------------------------------------------------------------");
>>    log(1, " ENTER MAIN LOOP\n");
>>    log(1,
>> "----------------------------------------------------------------------------------");
>>    #---------
>>    #Sanity Check
>>    #-------------
>>    if (!mf_process_maxfwd_header("10")) {
>>        sl_send_reply("483","Too Many Hops");
>>        exit;
>>    };
>>    if ( msg:len >= max_len ) {
>>        sl_send_reply("513", "Message too big");
>>        exit;
>>    }
>>      #--------------------------------------
>>    #Record-Route all messages
>>    #-- to make sure subsequent messages will go through our proxy
>>    #--------------------------------------
>>    if (method!="REGISTER") {
>>        record_route();
>>    }
>>    #-------------------------------
>>    # Loose-Route
>>    #-------------------------------
>>    if (loose_route()) {
>>        append_hf("P-hint: rr-enforced\r\n");
>>        route(1);
>>        exit;
>>    }
>>    #--------------------------------
>>    # uri != myself
>>    #--------------------------------------
>>    if (uri!=myself) {
>>        append_hf("P-hint: Outbound\r\n");
>>        route(1);
>>        exit;
>>    }
>>    #----------------------------------
>>    # uri==myself
>>    #--------------------------------
>>    if (uri==myself) {
>>        if (method=="REGISTER") {
>>            if (nat_uac_test("19")) {
>>                setbflag(6);
>>                force_rport();
>>                fix_nated_register();
>>                      }
>>            sl_send_reply("100", " Trying\r\n");
>>            #AUTHENTICATE
>>            if(!www_authorize("174.132.X.Y", "subscriber")) {
>>                www_challenge("174.132.X.Y", "0");
>>                exit;
>>            }
>>            consume_credentials();
>>                      save("location");
>>            exit;
>>              }
>>        lookup("aliases");
>>        if (uri!=myself) {
>>            append_hf("P-hint:  outbound alias\r\n");
>>            route(1);
>>            exit;
>>        }
>>        if (!lookup("location")) {
>>            sl_send_reply("404", " Not Found");
>>            exit;
>>        }
>>          } #End uri==myself
>>      #
>>    #
>>    #
>>    if (method=="INVITE") {
>>        t_on_failure("1");
>>    } else if (method=="BYE" || method=="CANCEL") {
>>        unforce_rtp_proxy();
>>    }
>>
>>  #---------------------------------------------------------------------
>>    # LOOSE_ROUTE - INVITE - FORCE_RTP_PROXY
>>
>>  #-----------------------------------------------------------------------
>>    if (loose_route()) {
>>        if (method=="INVITE" || method=="ACK") {
>>            append_hf("P-hint:- LOOSE ROUTE - Relay re-INVITE +
>> FORCE_RTP_PROXY\r\n");
>>            force_rtp_proxy();
>>        }
>>        # t-relay()
>>        t_relay();
>>        exit;
>>    }
>>
>>  #-----------------------------------------------------------------------
>>    #NAT - fix_nated_contact()
>>
>>  #------------------------------------------------------------------------
>>    if (nat_uac_test("19") && !search("^Record-Route:")) {
>>        append_hf("P-hint: Fix nated contact\r\n");
>>        force_rport();
>>        fix_nated_contact();
>>    }
>>      if (method=="INVITE") {
>>        append_hf("P-hint:  INVITE go to on_reply_route[1]\r\n");
>>        t_on_reply("1");
>>    }
>>      if (method=="INVITE" || method=="ACK") {
>>        append_hf("P-hint: INVITE||ACK + FORCE_RTP_PROXY\r\n");
>>        force_rtp_proxy();
>>    }
>>      if (!t_relay()) {
>>        append_hf("P-hint: INVITE||ACK - UNFORCE_RTP_PROXY\r\n");
>>        if (method=="INVITE" || method=="ACK") {
>>            unforce_rtp_proxy();
>>        }
>>        sl_reply_error();
>>    }
>>      append_hf("P-hint: usrloc applied\r\n");
>>
>> }
>>
>> route[1] {
>>    append_hf("P-hint:Route[1] Processing\r\n");
>>    if (!t_relay()) {
>>        sl_reply_error();
>>    }
>> }
>>
>> failure_route[1] {
>>    unforce_rtp_proxy();
>> }
>>
>> onreply_route[1] {
>>    append_hf("P-hint: On_reply_route[1] processing\r\n");
>>    if (status=~"(180)|(183)|2[0-9][0-9]") {
>>        if (nat_uac_test("1")) {
>>            fix_nated_contact();
>>        }
>>        force_rtp_proxy();
>>    }
>> }
>>
>> Thanks and Regards,
>> -LN
>> On Wed, Apr 1, 2009 at 5:46 PM, Bogdan-Andrei Iancu <
>> bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>> wrote:
>>
>>    Hi,
>>
>>    risntance is just an URI parameter and from server pov it is
>>    opaque - has no meaning. It is exclusively used by phone (X-lite).
>>    Tipically such param is used by phones that register multiple
>>    accounts, in order to make distinction between the accounts (as
>>    for all of them , the IP and port from contact will be the same).
>>
>>    To see why the call is drop, you need to take a sip trace (use
>>    ngrep) to see the signalling on the proxy.
>>
>>
>>    Regards,
>>    Bogdan
>>
>>
>>    oso che bol wrote:
>>
>>        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 <mailto:ndlgroup1 at gmail.com>
>>        <mailto:ndlgroup1 at gmail.com <mailto: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 <mailto:bogdan at voice-system.ro>
>>        <mailto:bogdan at voice-system.ro
>>        <mailto: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:  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> <mailto:bogdan at voice-system.ro
>>        <mailto:bogdan at voice-system.ro>>
>>                   <mailto:bogdan at voice-system.ro
>>        <mailto:bogdan at voice-system.ro>
>>                   <mailto: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>
>> >>
>>                   <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>>
>>                   <mailto:sip%253A5000 at 192.168.1.100<sip%25253A5000 at 192.168.1.100>
>>        <mailto:sip%25253A5000 at 192.168.1.100<sip%2525253A5000 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>>
>>                   <mailto:sip%253A5000 at 192.168.1.100<sip%25253A5000 at 192.168.1.100>
>>        <mailto:sip%25253A5000 at 192.168.1.100<sip%2525253A5000 at 192.168.1.100>
>> >>
>>                          <mailto:sip%253A5000 at 192.168.1.100<sip%25253A5000 at 192.168.1.100>
>>        <mailto:sip%25253A5000 at 192.168.1.100<sip%2525253A5000 at 192.168.1.100>
>> >
>>                   <mailto:sip%25253A5000 at 192.168.1.100<sip%2525253A5000 at 192.168.1.100>
>>        <mailto:sip%2525253A5000 at 192.168.1.100<sip%252525253A5000 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
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.opensips.org/pipermail/users/attachments/20090402/8f417831/attachment-0001.htm 


More information about the Users mailing list