[Serusers] rtpproxy + nathelper problem

Matt Schulte mschulte at netlogic.net
Wed Dec 15 14:39:45 CET 2004


First off, make sure your sipura has NAT mapping enabled, this must be
done in the "Advanced" options under the lineX menu. Second, it sounds
like your getting stuck in the register (not the invite?). Here is a
snippet of my config, I took it from (Java?) the list and modified it to
suit my needs. 

This should go near the top of your routing. It's my understand that all
NAT clients get tagged before any other info is passed, else it may not
get there. This should at least get your registering. good luck!

 if (nat_uac_test("3")) {
                # Allow RR-ed requests, as these may indicate that
                # a NAT-enabled proxy takes care of it; unless it is
                # a REGISTER

                if (method == "REGISTER" || ! search("^Record-Route:"))
{
                    log(1, "LOG: Someone trying to register from private
IP, rewriting\n");

                    # This will work only for user agents that support
symmetric
                    # communication. We tested quite many of them and
majority is
                    # smart enough to be symmetric. In some phones it
takes a configuration
                    # option. With Cisco 7960, it is called
NAT_Enable=Yes, with kphone it is
                    # called "symmetric media" and "symmetric
signalling".
                if (!search("(c|Contact): .*@xxx.xxx.xxx.xxx" )) {
                        log(1, "NOT LEVEL 3, FIXXING NATTED CONTACT\n");
                    fix_nated_contact(); # Rewrite contact with source
IP of signalling
                        }
                    if (method == "INVITE") {
                        fix_nated_sdp("1"); # Add direction=active to
SDP
                    };
                    force_rport(); # Add rport parameter to topmost Via
                    setflag(6);    # Mark as NATed
                };
        };

-----Original Message-----
From: support [mailto:support at cybertel.biz] 
Sent: Wednesday, December 15, 2004 2:38 AM
To: serusers at lists.iptel.org
Subject: [Serusers] rtpproxy + nathelper problem


Hi,

I have installed the latest rtpproxy and run it with ser-0.8-14. I have
also include nathelper modules. When I try to register a siprua gateway
with SER, the IP is still 192.168.1.xx. It cannot be translated to NAT
public IP.

Why is that so?

Thanks.


Thomas


Appendix: my ser.cfg
  --------------------------------------------------
  #
  # $Id: ser.cfg,v 1.21 2003/06/04 13:47:36 jiri Exp $
  #
  # simple quick-start config script
  #

   # ----------- global configuration parameters
------------------------

  debug=3         # debug level (cmd line: -dddddddddd)
  fork=yes
  log_stderror=no	# (cmd line: -E)

  /* Uncomment these lines to enter debugging mode 
  debug=7
  fork=no
  log_stderror=yes
  */

  check_via=no	# (cmd. line: -v)
  dns=no           # (cmd. line: -r)
  rev_dns=no      # (cmd. line: -R)
  port=5060
  children=4
  fifo="/tmp/ser_fifo"

  alias=mydomain.dyndns.org

  # ------------------ module loading ----------------------------------

  
  loadmodule "/usr/local/lib/ser/modules/nathelper.so"
  loadmodule "/usr/local/lib/ser/modules/textops.so"
  loadmodule "/usr/local/lib/ser/modules/sl.so"
  loadmodule "/usr/local/lib/ser/modules/tm.so"
  loadmodule "/usr/local/lib/ser/modules/rr.so"
  loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
  loadmodule "/usr/local/lib/ser/modules/usrloc.so"
  loadmodule "/usr/local/lib/ser/modules/registrar.so"

  
  # ----------------- setting module-specific parameters ---------------
  # -- usrloc params --
  modparam("usrloc", "db_mode",   0)


  # -- rr params --
  # add value to ;lr param to make some broken UAs happy
  modparam("rr", "enable_full_lr", 1)

  # -------------------------  request routing logic -------------------

  # main routing logic

  route{

	# initial sanity checks -- messages with
	# max_forwards==0, or excessively long requests
	if (!mf_process_maxfwd_header("10")) {
		sl_send_reply("483","Too Many Hops");
		break;
	};
	if (len_gt( max_len )) {
		sl_send_reply("513", "Message too big");
		break;
	};

	# we record-route all messages -- to make sure that
	# subsequent messages will go through our proxy; that's
	# particularly good if upstream and downstream entities
	# use different transport protocol
	record_route();	
	# loose-route processing
	if (loose_route()) {
		t_relay();
		break;
	};

	# if the request is for other domain use UsrLoc
	# (in case, it does not work, use the following command
	# with proper names and addresses in it)
	if (uri==myself) {

		if (method=="REGISTER") {
			save("location");
			break;
		};

		# native SIP destinations are handled using our USRLOC
DB
		if (!lookup("location")) {
			sl_send_reply("404", "Not Found");
			break;
		};
	};

       #inserted by klaus
       if (method=="INVITE") {
                record_route();
                force_rtp_proxy();
                /* set up reply processing */
                t_on_reply("1");
        };


	# forward to current uri now; use stateful forwarding; that
	# works reliably even if we forward from TCP to UDP
	if (!t_relay()) {
		sl_reply_error();
	};

  }

  #inserted by klaus
  # all incoming replies for t_onrepli-ed transactions enter here
  onreply_route[1] {
       if (status=~"[12][0-9][0-9]")
                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