[SR-Users] Nathelper module, FLT_NATS, FLT_NATB

SamyGo govoiper at gmail.com
Tue Jun 26 06:12:08 CEST 2012


I had this thread already starred here in inbox, a wiki page is definitely
going to be bookmarked.

On Mon, Jun 25, 2012 at 9:44 PM, Daniel-Constantin Mierla <miconda at gmail.com
> wrote:

>
> On 6/25/12 3:34 PM, SamyGo wrote:
>
> This is a great thread, really full of answers and concepts for me
> atleast.
> :)
>
>
> looks like we will have a new wiki page with the digested content of this
> thread :-)
>
> Cheers,
> Daniel
>
>
> On Mon, Jun 25, 2012 at 5:57 PM, Richard Brady <rnbrady at gmail.com> wrote:
>
>> Klaus / Daniel
>>
>> Thanks again for assistance with this.
>>
>> I've tried the solution based on add_contact_alias() and
>> handle_ruri_alias() and it works perfectly.
>>
>> Richard
>>
>> On 22 June 2012 13:47, Klaus Darilion <klaus.mailinglists at pernau.at>
>> wrote:
>> >
>> >
>> > On 22.06.2012 13:50, Richard Brady wrote:
>> >>
>> >> Thanks guys, fantastic answers.
>> >>
>> >> You mention that NAT detection happens before save() and the flag is
>> set
>> >> by lookup() which makes much more sense. However, if Kamailio is not
>> the
>> >> registrar, as is the case with my current project, those functions are
>> >> not called, so an alternative is needed. There are clearly several
>> >> options.
>> >>
>> >> The solution I have gone for is to replace fix_nated_register() with
>> >> fix_nated_contact() so that the REGISTER request is relayed with a
>> >> modified Contact header containing the external ip:port of the client.
>> >
>> >
>> > The cleanest solution would be to use add_contact_alias() and
>> > handle_ruri_alias(). The do not change the contact but put the public
>> > address into a uri parameter. Thus, the URI seen by the client is
>> always the
>> > one it sends:
>> >
>> http://www.kamailio.org/docs/modules/3.2.x/modules_k/nathelper.html#id2550431
>> >
>> >
>> >> That is then stored by the registrar (FreeSWITCH in my case) and used
>> >> later to originate calls for that user. The FreeSWITCH know to send
>> >> those calls to Kamailio through either use of the Path header and
>> module
>> >> in Kamailio, or through static configuration of fs_path or proxy
>> >> parameters in FreeSWITCH.
>> >
>> >
>> > This is fine.
>> >
>> >
>> >> The works for the first INVITE to the registered client behind NAT. But
>> >> that client sends back a 200 OK with a Contact header containing its
>> >> private IP address, and so fix_nated_contact() needs to be invoked on
>> >> that response, and normally it would be due to FLB_NATB being set, but
>> >> if Kamailio was not the registrar then that flag is not set. So I need
>> >> to detect NAT on the client at the time of receiving the reply, or
>> >> alternatively by having the registrar store a cookie and setting it
>> >> based on that.
>> >
>> >
>> > You are correct. For in-dialog messages received from SIP clients I
>> would
>> > always use add_contact_alias() and remove the NAT flags completely.
>> >
>> >>
>> >> I suppose then my next question then is can I call nat_uac_test() on a
>> >> UAS?
>> >
>> >
>> > Today, almost any SIP clients are SIP symmetric. This means, that they
>> > receive SIP from the some port/connection where they send. Thus, skip
>> the
>> > NAT tests completely and always use add_contact_alias() for messages
>> receive
>> > from SIP clients and handle_ruri_alias() for messages sent to SIP
>> clients.
>> >
>> > Depending on if you use Freeswitch also as media relay you can also
>> remove
>> > the media proxy stuff from the Kamailio config.
>> >
>> > On important thing is NAT-keep-alive. This is usually done by nathelper
>> > module by querying the location table for contact with NAT-flag set.
>> Thus,
>> > either you do NAT keep-alive by freeswitch (e.g sending OPTIONS
>> requests) or
>> > do it in your Kamailio proxy (e.g. set the nat_bflag
>> >
>> http://www.kamailio.org/docs/modules/3.2.x/modules_k/usrloc.html#id2541477
>> > and call save("location","0x02") before relaying REGISTER to freeswitch.
>> > Then Kamailio will do NAT-pinging. Note, if you want to keep-alive only
>> for
>> > successfully registered clients, you man want to call save() in the
>> > reply-route of the REGISTER request).
>> >
>> > regards
>> > Klaus
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>> sr-users at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing listsr-users at lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
> --
> Daniel-Constantin Mierla - http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
> Kamailio Advanced Training, Seattle, USA, Sep 23-26, 2012 - http://asipto.com/u/katu
> Kamailio Practical Workshop, Netherlands, Sep 10-12, 2012 - http://asipto.com/u/kpw
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20120626/f0696614/attachment.htm>


More information about the sr-users mailing list