[SR-Users] Nathelper module, FLT_NATS, FLT_NATB

Daniel-Constantin Mierla miconda at gmail.com
Mon Jun 25 18:44:17 CEST 2012


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 
> <mailto: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
>     <mailto: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 <mailto: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 list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://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/20120625/c1ef9ec4/attachment.htm>


More information about the sr-users mailing list