[Serusers] NAT Traversal using nathelper module

samuel samu60 at gmail.com
Thu May 4 09:56:08 CEST 2006


I would add a condition like

 if (!search("^Content-Length:[ ]*0")) {
       fix_mated_sdp()
 }

So replies without body (180,100,101,...) will not raise the ERROR you
have in the logs.

It would be also nice to check wether the reply is not an error (>299)
so you do not need to use NAT transversal for error replies.
if (status=~"(180)|(183)|2[0-9][0-9]") {

}
I recommend you to check www.onsip.org and the discussion about the
on_reply route in the getting started and the config files.

Hope it helps,

Samuel.


2006/5/3, Kostas Marneris <K.Marneris at otenet.gr>:
>
> Hello all,
>
> I'm trying to find a solution to overcome the NAT issue using only the nathelper module.
> (I've already successfully worked with 'STUN' & 'MediaProxy'
> solutions but I'm trying also this).
>
>
> 1. OUTBOUND direction:
> --- INVITE handler ---
>         ...
>         # NAT Traversal mechanism for INVITEs
>         if (nat_uac_test("19")) {
>                 setflag(7);
>                 force_rport();
>                 fix_nated_contact();
>                 fix_nated_sdp("3");
>         };
>         #
>         ...
>
> The solution above works fine for OUTBOUND calls,
> either on-net (a) or off-net (b). (For off-net calls I use a Cisco GW).
>
> a/ SIP_UA_behind_NAT -------- SER ------- SIP_UA_on_public_IP
> b/ SIP_UA_behind_NAT -------- SER ------- Cisco_PSTN_GW ------- PSTN
>
>
>
>
> 2. INBOUND direction:
> route[1] {
>         # Default Message Handler
>         t_on_reply("1");
>         if (!t_relay()) {
>                 log(1, "  - Cannot RELAY !!!");
>                 sl_reply_error();
>         };
> }
>
> onreply_route[1] {
>         if (nat_uac_test("19")) {
>                 log(1, " - Response behind NAT...");
>                 setflag(7);
>                 force_rport();
>                 fix_nated_contact();
>                 fix_nated_sdp("3");
>         };
>
> }
>
>
> Although I have two-way audio between calling and called parties,
> I get the following logging mesgs :
>
> May  3 17:22:26 server ./ser[13705]: ERROR: extract_body: message body has length zero
> May  3 17:22:26 server ./ser[13705]: ERROR: fix_nated_sdp: cannot extract body from msg!
> May  3 17:22:26 server ./ser[13705]: ERROR: on_reply processing failed
>
>
>
> My question is :
> Is the above the correct way for NAT traversal of SIP Responses (200 OK) ?
> Do I have to add something else somewhere in ser.cfg ?
> Any idea on the log mesgs above ?
>
>
> thanks in advance for any help,
> Kostas
>
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>




More information about the sr-users mailing list