[OpenSIPS-Users] Public IP in REGISTER

David Villasmil david.villasmil.work at gmail.com
Sun Mar 8 23:30:31 EST 2020


Make sure you don’t have 2 contacts

On Sun, 8 Mar 2020 at 23:22, Jehanzaib Younis <jehanzaib.kiani at gmail.com>
wrote:

> but i have strange issue.
> nathelper keep on sending the OPTION to old IP:PORT. As soon as the new
> REGISTER comes in, it should only send the option to the latest one.
> For example, I see OPTION going to xx.xxx.xx.xx:25001 and opensips keep on
> sending to this after every 120 seconds (which is my setting)
> The new register comes in and the  xx.xxx.xx.xx:25004 letsay and now
> opensips sends to 25001 as well as 25004. Obviously my cpe only replies to
> the latest one.
>
> Anyone have faced this issue ?
>
> Thank you
>
> On Fri, Mar 6, 2020 at 2:54 PM Jehanzaib Younis <jehanzaib.kiani at gmail.com>
> wrote:
>
>> Thank you for your suggestions Diptesh,
>>
>> Actually adding modparam("nathelper", "received_avp", "$avp(s:rcv)") &
>> modparam("registrar", "received_avp", "$avp(s:rcv)") did the trick.
>>
>>
>>
>> On Thu, Mar 5, 2020 at 7:25 PM Dipteshkumar Patel <
>> diptesh.patel at ecosmob.com> wrote:
>>
>>> Hello Jehan,
>>>
>>> OpenSIPS handle NAT different way for INVITE and REGISTER packets. If we
>>> use fix_nated_contact(), it will get the actual source ip from network and
>>> create a lump for that and replace the headers(like Contact, Received in
>>> Via and c parameter in SDP packet) just before sent out or relay the packet.
>>>
>>> In your case, You need to manage the REGISTER and we are using OpenSIPS
>>> as a Registrar so we are not relay the packet so fix_nated_contact() will
>>> not help you. and your location table will have the private ip not public.
>>> So Let me guide how NAT can be managed in Registration.
>>>
>>> There are three modules are responsible for the registration with NAT
>>> handling.
>>> 1. registrar module
>>> 2. usrloc module
>>> 3. nathelper module
>>>
>>> nathelper module can check the packet source is behind nat or nat and
>>> get the public ip from source ip.
>>>
>>> We need to define a module parameter for netheper module with an
>>> avp variable so the module will store the received IP in that avp. and
>>> similar avp should be in registrar module so registrar module can read the
>>> avp and store it into location as received parameter.
>>>
>>> modparam("nathelper", "received_avp", "$avp(received)")
>>>
>>> modparam("registrar", "received_avp", "$avp(received)")
>>>
>>>
>>> Refer the following snippet.
>>>
>>> /*Other registrar Parameters*/
>>> modparam("registrar", "received_avp", "$avp(received)")
>>>
>>> /*Other nethelper Parameters*/
>>> modparam("nathelper", "received_avp", "$avp(received)") #keep in mind
>>> that this avp should be same in registrar module.
>>>
>>> /*Other usrloc Parameters*/
>>> modparam("usrloc", "nat_bflag", "NAT_FLAG")
>>>
>>> route(NAT_MANAGE);
>>> -------
>>> /*Some Authentication Stuff*/
>>> -------
>>> if(!save("location")) {
>>>             sl_reply_error();
>>> }
>>>
>>> route[NAT_MANAGE] {
>>>     if(nat_uac_test("19")){
>>>         xlog("L_INFO","--- [NAT_MANAGE] UAC IS BEHIND NAT ---");
>>>         if(is_method("REGISTER")){
>>>             fix_nated_register();
>>>             setbflag(NAT_FLAG);
>>>         } else {
>>>             fix_nated_contact();
>>>             setflag(NAT_FLAG);
>>>             if (has_body("application/sdp")){
>>>                 fix_nated_sdp("3");
>>>             }
>>>         }
>>>     }
>>> }
>>>
>>> Output of opensipsctl ul show
>>> -----------------------------------------------
>>>
>>> AOR:: 100 at world.provider.in
>>>     Contact:: sip:100@[ACTUAL CONTACT IP]:5060 Q=
>>>             ContactID:: 2522655082190201667
>>>             Expires:: 2219
>>>             Callid:: 18480129104911-28121824031899 at 192.168.30.238
>>>             Cseq:: 6
>>>             User-agent:: Phone Ver2.2
>>>             Received:: sip:[RECEIVED IP]:5060 /*This IP will be used as
>>> request domain on relay the packet*/
>>>             State:: CS_SYNC
>>>             Flags:: 0
>>>             Cflags:: SIPPING_RTO SIPPING_ENABLE NAT_FLAG
>>>             Socket:: udp:[OPENSIPS LISTEN SOCKET]:5070
>>>             Methods:: 7551
>>>
>>> I hope this will solve your problem.
>>>
>>> Thanks & Regards
>>> *Diptesh Patel*
>>> Software Developer
>>> Ecosmob Technologies Ltd,
>>> Ahmedabad
>>> Mo:*+919898962659*
>>>
>>>
>>> On Thu, Mar 5, 2020 at 4:35 AM Jehanzaib Younis <
>>> jehanzaib.kiani at gmail.com> wrote:
>>>
>>>> Thank you for your email Callum,
>>>> I can not see the public IP in the command line that is strange. but
>>>> OPTION is working fine. i can see 200 OK in the OPTION.
>>>> I have already tried what you have suggested i.e fixed_nated_contact on
>>>> INVITE it is still sending to my 10.xx.xx.xx ip.
>>>>
>>>> Here is my URL location
>>>> AOR:: xxxxxx
>>>>         Contact:: sip:xxx at 10.202.128.xx:5060;transport=udp Q=
>>>>                 Expires:: 2914
>>>>                 Callid:: n883832msp1lm0nl3cmjks88jkpinsc0 at 10.202.128.xx
>>>>                 Cseq:: 12
>>>>                 User-agent:: HUAWEI-EchoLife HG8240H/V3R013C10S108
>>>>                 State:: CS_NEW
>>>>                 Flags:: 0
>>>>                 Cflags:: 3
>>>>                 Socket:: udp:mysipserverip:5060
>>>>                 Methods:: 8191
>>>>
>>>> here is my url and nat module parameters
>>>>
>>>> loadmodule "usrloc.so"
>>>> modparam("usrloc", "nat_bflag", "NAT")
>>>> modparam("usrloc", "db_mode",   0)
>>>>
>>>> loadmodule "nathelper.so"
>>>> modparam("nathelper", "natping_interval", 120) # Ping interval 120 s
>>>> modparam("nathelper", "ping_nated_only", 1)   # Ping only clients
>>>> behind NAT
>>>> modparam("nathelper", "sipping_method", "OPTIONS")
>>>> modparam("nathelper", "sipping_from", "sip:pinger at mytestdomain.com")
>>>> modparam("nathelper", "received_avp", "$avp(i:42)")
>>>> modparam("nathelper", "sipping_bflag", 7)
>>>>
>>>> loadmodule "nat_traversal.so"
>>>> modparam("nat_traversal", "keepalive_interval", 120)
>>>> modparam("nat_traversal", "keepalive_method", "OPTIONS")
>>>> modparam("nat_traversal", "keepalive_from", "
>>>> sip:pinger at mytestdomain.com")
>>>>
>>>> Any suggestions please?
>>>>
>>>> Thank you
>>>>
>>>>
>>>> On Wed, Mar 4, 2020 at 9:50 PM Callum Guy <callum.guy at x-on.co.uk>
>>>> wrote:
>>>>
>>>>> Hi Jehan,
>>>>>
>>>>> Sounds like you want to be using fix_nated_contact() - when the INVITE
>>>>> arrives you can try the following:
>>>>>
>>>>> # Check if contact is RFC1918
>>>>> if (nat_uac_test(1)) {
>>>>>     # Replace the contact IP with the received address from the network
>>>>>     fix_nated_contact();
>>>>> }
>>>>>
>>>>> If you look at the registrations via CLI or database (if in use)
>>>>> you'll see that OpenSIPs is tracking both a contact and received value to
>>>>> deal with this - that will be where your NAT pings are getting the address
>>>>> from.
>>>>>
>>>>> Hopefully that helps to get you on the correct path!
>>>>>
>>>>> Callum
>>>>>
>>>>> On Tue, 3 Mar 2020 at 21:06, Jehanzaib Younis <
>>>>> jehanzaib.kiani at gmail.com> wrote:
>>>>>
>>>>>> Hi gang,
>>>>>>
>>>>>> I have quite strange issue. When in some cases when my customer's
>>>>>> have 10.202.128.xx range they are behind NAT. when i see opensipsctl ul
>>>>>> show number at sip
>>>>>> i see contact header as Contact:: sip:number at 10.202.128.xx:5060;transport=udp
>>>>>> Q=
>>>>>> which means when i try to relay the invite goes to that
>>>>>> 10.202.128.xx:5060 which is wrong. It should go to its public IP:port
>>>>>>
>>>>>> but weird thing is, i see the OPTION is sent to its Public IP
>>>>>> (OPTIONS sip:180.xx.xx.xx:1502). I also see the 200 OK which is perfect.
>>>>>>
>>>>>> I tried to use fix_nated_register(); but it does not change anything.
>>>>>>
>>>>>> Can anyone help please?
>>>>>>
>>>>>> Thank you
>>>>>>
>>>>>>
>>>>>> Regards,
>>>>>> Jehan
>>>>>> _______________________________________________
>>>>>> Users mailing list
>>>>>> Users at lists.opensips.org
>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>
>>>>>
>>>>>
>>>>> *0333 332 0000  |  www.x-on.co.uk <http://www.x-on.co.uk>  |   **
>>>>> <https://www.linkedin.com/company/x-on>   <https://www.facebook.com/XonTel>
>>>>>   <https://twitter.com/xonuk> *
>>>>>
>>>>> X-on is a trading name of Storacall Technology Ltd a limited company
>>>>> registered in England and Wales.
>>>>> Registered Office : Avaland House, 110 London Road, Apsley, Hemel
>>>>> Hempstead, Herts, HP3 9SD
>>>>> <https://www.google.com/maps/search/110+London+Road,+Apsley,+Hemel+Hempstead,%0D%0AHerts,+HP3+9SD?entry=gmail&source=g>.
>>>>> Company Registration No. 2578478.
>>>>> The information in this e-mail is confidential and for use by the
>>>>> addressee(s) only. If you are not the intended recipient, please notify
>>>>> X-on immediately on +44(0)333 332 0000 and delete the
>>>>> message from your computer. If you are not a named addressee you must
>>>>> not use, disclose, disseminate, distribute, copy, print or reply to this
>>>>> email. Views or opinions expressed by an individual
>>>>> within this email may not necessarily reflect the views of X-on or its
>>>>> associated companies. Although X-on routinely screens for viruses,
>>>>> addressees should scan this email and any attachments
>>>>> for viruses. X-on makes no representation or warranty as to the
>>>>> absence of viruses in this email or any attachments.
>>>>>
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> Users at lists.opensips.org
>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>
>>>>
>>
>>>
>>>>> A cloud hosted phone system <https://vndpbx.com>
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at lists.opensips.org
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>
>>>
>>> *Disclaimer*
>>> In addition to generic Disclaimer which you have agreed on our website,
>>> any views or opinions presented in this email are solely those of the
>>> originator and do not necessarily represent those of the Company or its
>>> sister concerns. Any liability (in negligence, contract or otherwise)
>>> arising from any third party taking any action, or refraining from taking
>>> any action on the basis of any of the information contained in this email
>>> is hereby excluded.
>>>
>>> *Confidentiality*
>>> This communication (including any attachment/s) is intended only for the
>>> use of the addressee(s) and contains information that is PRIVILEGED AND
>>> CONFIDENTIAL. Unauthorized reading, dissemination, distribution, or copying
>>> of this communication is prohibited. Please inform originator if you have
>>> received it in error.
>>>
>>> *Caution for viruses, malware etc.*
>>> This communication, including any attachments, may not be free of
>>> viruses, trojans, similar or new contaminants/malware, interceptions or
>>> interference, and may not be compatible with your systems. You shall carry
>>> out virus/malware scanning on your own before opening any attachment to
>>> this e-mail. The sender of this e-mail and Company including its sister
>>> concerns shall not be liable for any damage that may incur to you as a
>>> result of viruses, incompleteness of this message, a delay in receipt of
>>> this message or any other computer problems.
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>
>>
>> --
>> Regards,
>> Jehanzaib
>>
>
>
> --
> Regards,
> Jehanzaib
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
-- 
Regards,

David Villasmil
email: david.villasmil.work at gmail.com
phone: +34669448337
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20200308/45aa523b/attachment-0001.html>


More information about the Users mailing list