[Serusers] Re: NATHelper Issues

Jan Janak jan at iptel.org
Sat Aug 27 09:32:19 CEST 2005


This function is available in 0.9.3 too.

  Jan.

On 26-08-2005 11:17, Darren Nay wrote:
> Hey All,
> 
> I think I may have found the solution.  It looks like there might be a
> feature available in the CVS head version of SER that will solve the
> problem that we are experiencing.
> 
> However, Problem is, this is CVS head!  Is this feature available in any of
> the stable releases of SER.  If not, is it back portable?
> 
> --------
> 1.5.4. fix_nated_register()
> 
>    The function creates a URI consisting of the source IP, port,
>    and protocol and stores the URI in an Attribute-Value-Pair.
>    The URI will be appended as "received" parameter to Contact in
>    200 OK and registrar will store it in the user location
>    database.
> 
>    Example 1-8. fix_nated_register usage
> ...
> fix_nated_register();
> ...
> -------
> 
> Thanks for the help!
> Darren Nay
> 
> 
> On 8/25/05 4:01 PM, "Darren Nay" <dnay at ionosphere.net> wrote:
> 
> > Hey All,
> > 
> > Got a question for you all.  I've had a nathelper implementation in place for
> > months thinking that it was working, but recent events have made me question
> > my configuration.
> > 
> > It doesn't seem to be rewriting the contact header when the src_port and
> > contact_port are different.  Even though I am using fix_nated_contact() for
> > REGISTER requests.  Please see my details below.
> > 
> > I am using SER v8.12
> > 
> > Here is an example ngrep capture for a REGISTER.  Notice that the source port
> > is 53492, and the contact port is 53616.
> > 
> > --------------
> > U 66.110.232.221:53492 -> 208.253.183.40:5060 at 01:52:55 08/26/2005
> > REGISTER sip:proxy.ionosphere.net SIP/2.0
> > Via: SIP/2.0/UDP 66.110.232.221:53492;branch=z9hG4bK-7c0d1eaa
> > From: spectrum wireless
> > <sip:+13367908202 at proxy.ionosphere.net>;tag=f8c505c5a8fc2e3o0
> > To: spectrum wireless <sip:+13367908202 at proxy.ionosphere.net>
> > Call-ID: e0bd4b00-2770688f at 192.168.1.29
> > CSeq: 10 REGISTER
> > Max-Forwards: 70
> > Contact: spectrum wireless <sip:+13367908202 at 66.110.232.221:53616>;expires=600
> > User-Agent: IONOSPHERE I-PHONE v1.0
> > Content-Length: 0
> > Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER
> > Supported: x-sipura
> > -------
> > U 208.253.183.40:5060 -> 66.110.232.221:53492 at 01:52:55 08/26/2005
> > SIP/2.0 200 OK
> > Via: SIP/2.0/UDP 66.110.232.221:53492;branch=z9hG4bK-7c0d1eaa
> > From: spectrum wireless
> > <sip:+13367908202 at proxy.ionosphere.net>;tag=f8c505c5a8fc2e3o0
> > To: spectrum wireless
> > <sip:+13367908202 at proxy.ionosphere.net>;tag=309667ea73a5d01d816917cdbd4fb3ac.6
> > 723
> > Call-ID: e0bd4b00-2770688f at 192.168.1.29
> > CSeq: 10 REGISTER
> > Contact: <sip:+13367908202 at 66.110.232.221:53616>;q=0.00;expires=600
> > Server: Sip EXpress router (0.8.12-tcp_nonb (i386/linux))
> > Content-Length: 0
> > Warning: 392 208.253.183.40:5060 "Noisy feedback tells:  pid=31855
> > req_src_ip=66.110.232.221 req_src_port=53492 in_uri=sip:proxy.ionosphere.net
> > out_uri=sip:proxy.ionosphere.net via_cnt==1"
> > -------------
> > 
> > Here is a snipet for REGISTER requests from my ser.cfg
> > 
> > --------
> > 
> > 
> >          # Nathelper
> >          if (nat_uac_test("3")) {
> >            if (method == "REGISTER" || !search("^Record-Route:")) {
> >              log("LOG:Someone trying to use private IP, rewriting\n");
> >              fix_nated_contact(); # Rewrite contact with source IP
> >              force_rport();
> >              setflag(6);
> >            };
> >          };
> > 
> >          # Turn on SIP accounting
> >          setflag(3);
> > 
> >          if (!method=="REGISTER") record_route();
> > 
> >          # loose-route processing
> >          if (loose_route()) {
> >            route(1);
> >            break;
> >          };
> > 
> >          lookup("aliases");
> >          if (!uri==myself) {
> >                 # mark routing logic in request
> >                 append_hf("P-hint: outbound\r\n");
> >                 route(1);
> >                 break;
> >          };
> > 
> >          if (uri==myself) {
> > 
> >              if (method=="REGISTER") {
> >                if (!www_authorize("proxy.ionosphere.net", "subscriber")) {
> >                  www_challenge("proxy.ionosphere.net", "0");
> >                  break;
> >                };
> >             
> >                save("location")
> >                break;
> >              };
> > 
> >             ## etc..................
> >          };
> > --------
> > 
> > Then the registration is always recorded as the contact port.  Here is a
> > serctl ul output:
> > 
> > <sip:+13367908202 at 66.110.232.221:53616>;q=0.00;expires=529
> > 
> > 
> > Does anyone have idea why this is happening?  Is my SER.CFG incorrect?
> > 
> > Thanks so much!
> > 
> > Darren Nay
> > VoIP Network Development
> > Ionosphere, Inc.
> > dnay at ionosphere.net
> 
> 
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers




More information about the sr-users mailing list