[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