[Serusers] nathelper / calling UAs behind symmetric NATs

Klaus Darilion darilion at ict.tuwien.ac.at
Mon Dec 29 17:01:12 CET 2003


It is not necessary to use 2 tables. You could also use the nat_flag as
described in

http://lists.iptel.org/pipermail/serusers/2003-December/004412.html

regards,
Klaus

> -----Original Message-----
> From: Thilo Salmon [mailto:salmon at netzquadrat.de] 
> Sent: Monday, December 29, 2003 4:53 PM
> To: serusers at lists.iptel.org
> Subject: [Serusers] nathelper / calling UAs behind symmetric NATs
> 
> 
> Hi,
> 
> I am trying to force incoming calls destined for a UA behind 
> a symmetric
> NAT through rtpproxy. In order to distinguish between those agents
> behind a NAT and those out in the open, I saved their location in two
> different tables upon registration. It now appears that even though I
> set db_mode to '1' to force usrloc to immediately  write-back all data
> to the db, ser remembers a successful registration in the regular
> location tables.
> 
> A REGISTER request is immediately written into my NAT tables while the
> regular tables follows only a little later. When I call the UA in
> question ser will find the agent in my regular location table.  When I
> manually delete the UA entry from the location table (and 
> restart ser!)
> my configuration will force the rtp stream just as expected.
> 
> Can anybody enlighten my whether this is a bug or a feature? Also I
> would be very interested in learning how to handle UAs behind 
> symmetric
> NATs or how to keep state learned at registration time.
> 
> I attached  parts of my configuration hoping to clarify what 
> I am trying
> to do. 
> 
> Thilo
> 
> P.S.: this is ser 0.8.12
> 
>                 if (method=="REGISTER") {
>                          if ("header indicates symmetric NAT") { 
>                                  save("natlocation");
>                          } else {
>                                  save("location");
>                          };
>                 };
> 
> [...]
> 
>                 if ((method==INVITE)) {
>                          if(lookup("location")) {
>                                           xlog("L_ERR", "UA found in
> 'location'\n");
>                                  }
>                                  else {
>                                      if(lookup("natlocation")) {
>                                           xlog("L_ERR", "UA found in
> 'natlocation'\n");
>                                           force_rtp_proxy();
>                                           t_on_reply("2");
>                                  } else {
>                                           sl_send_reply("404", "Not
> Found");
>                                           break;
>                                  };
>                      };
>              };
> 
> [...]
> 
> onreply_route[2] {
>         if (status=~"2[0-9][0-9]"){
>                      xlog("L_ERR", "forcing rtp stream back from NATed
> UA through localhost\n");
>                      force_rport();
>                      force_rtp_proxy();
>         };
> }
> 
> 
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
> 
> 




More information about the sr-users mailing list