[Serusers] Public IP Register Problem !!!

Iqbal iqbal at gigo.co.uk
Thu Apr 28 22:30:40 CEST 2005


if (method=="REGISTER") {
log(1, "REGISTER message received\n");
# Uncomment this if you want to use digest authentication
if (!www_authorize("192.168.4.10", "subscriber")) {
www_challenge("192.168.4.10", "0");
break;
};


dont u need to change the IP above, infact why not use the domain they
are coming from, and in ur IP phones set that as the realm

Iqbal

On 4/28/2005, "Felipe Martins" <fmartins at mundivox.com> wrote:

>Hi guys,
>
>	I have 2 SER Servers talking to each other, working in a Private network using 192.168.4.0/16 authenticating at a mysql server (everything is for test, so the configuration is very basic). Everything works perfect, I have 4 users registered in each server, and everybody is talking to each other with no problem.
>	My next step was to test my architecture with public IPs, so I've changed my ser.cfg to reflect my ip changes, and also configured 4 clientes (2 at each server) with public IPs, but my clients now, can't register, none of them in any server. I can see at the logs that the REGISTER Request reaches my server but the clients can't register. I also tried to use some other private network at some clients but they can't register either. So, any network could be used to make it work, but 192.168.4.0/16.
>	I know it's probably a configuration error I've made, but I can't find where the error is. I'm sending my ser.cfg for you to see. Any hand will be pleased.
>
>Best Regards
>
>
># -------------- SER.CFG ------------------------
>
>#
># $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $
>#
># simple quick-start config script
>#
>
># ----------- global configuration parameters ------------------------
>
># Uncomment these lines to enter debugging mode
>debug=9
>fork=yes
>log_stderror=no
>#listen=200.142.96.218
>listen=192.168.4.10
>port=5060
>
>alias="mundivox.com"
>alias="sipserver.com"
>#alias="200.201.187.254"
>alias="192.168.4.10"
>
># sip_warning - Should replies include extensive warnings? By default
># yes, it is good for trouble-shooting
>#sip_warnings=yes
>
># server_signature - Should locally-generated messages include server's
># signature? By default yes, it is good for trouble-shooting.
> server_signature=yes
>
># reply_to_via - A hint reply modules whether they should send reply
>
># to IP advertised in Via. Turned off by default, which means that
># replies are sent to IP address from which requests came.
># reply_to_via=no
>
># mhomed -- enable calculation of outbound interface; useful on
># multihomed servers.
># mhomed=0
>
>check_via=yes		# (cmd. line: -v)
>dns=yes           	# (cmd. line: -r)
>rev_dns=yes      	# (cmd. line: -R)
>children=4
>fifo_mode=0666
>fifo="/tmp/ser_fifo"
>
># ------------------ module loading ----------------------------------
># ------------- external module loading
>loadmodule "/usr/local/lib/ser/modules/mysql.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"
>loadmodule "/usr/local/lib/ser/modules/auth.so"
>loadmodule "/usr/local/lib/ser/modules/auth_db.so"
>loadmodule "/usr/local/lib/ser/modules/acc.so"
>loadmodule "/usr/local/lib/ser/modules/exec.so"
>loadmodule "/usr/local/lib/ser/modules/group.so"
>loadmodule "/usr/local/lib/ser/modules/msilo.so"
>#loadmodule "/usr/local/lib/ser/modules/print.so"
>loadmodule "/usr/local/lib/ser/modules/enum.so"
>loadmodule "/usr/local/lib/ser/modules/textops.so"
>#loadmodule "/usr/local/lib/ser/modules/nathelper.so"
>loadmodule "/usr/local/lib/ser/modules/uri.so"
>#loadmodule "/usr/local/lib/ser/modules/uri_db.so"
>loadmodule "/usr/local/lib/ser/modules/domain.so"
>loadmodule "/usr/local/lib/ser/modules/xlog.so"
>#loadmodule "/usr/local/lib/ser/modules/speeddial.so"
>#loadmodule "/usr/local/lib/ser/modules/options.so"
>#loadmodule "/usr/local/lib/ser/modules/rtpproxy.so"
>
># ----------------- setting module-specific parameters ---------------
>
># ------------- db_url setting
>#modparam("acc|auth_db|domain|group|speeddial|uri_db|usrloc",
>#         "db_url", "mysql://ser:heslo@localhost/ser")
>modparam("auth_db", "db_url", "mysql://ser:heslo@localhost/ser")
>
># ------------- use_domain setting
>modparam("auth_db|group|speeddial|uri_db|usrloc", "use_domain", 1)
>
># ------------- accounting parameters
>modparam("acc", "log_level", 1)
>modparam("acc", "log_flag", 1)
>#modparam("acc", "db_flag", 1)
>#modparam("acc", "db_missed_flag", 1)
>#modparam("acc", "log_fmt", "cdfimorstup")
>#modparam("acc", "failed_transactions", 1)
>#modparam("acc", "report_cancels", 1)
>#modparam("acc", "report_ack", 0)
>
># ------------- auth parameters
># allows clear text passwords in the mysql database
>modparam("auth_db", "calculate_ha1", yes)
>modparam("auth_db", "password_column", "password")
>
># ------------- domain parameters
>modparam("domain", "db_mode", 1)
>
># ------------- exec parameters
>modparam("exec", "setvars", 1)
>modparam("exec", "time_to_kill", 10)
>
># ------------- registration parameters
>modparam("registrar", "nat_flag", 2)
>modparam("registrar", "min_expires", 60)
>modparam("registrar", "max_expires", 86400)
>modparam("registrar", "default_expires", 3600)
>modparam("registrar", "desc_time_order", 1)
>modparam("registrar", "append_branches", 1)
>modparam("registrar", "use_domain", 1)
>
>#-------------- nathelper parameters
>#modparam("nathelper", "natping_interval", 30)
>#modparam("nathelper", "ping_nated_only", 1)
>
># ------------- rr parameters
># set ";lr" tag to lr=true
>modparam("rr", "enable_full_lr", 1)
>
># ------------- tm parameters
>modparam("tm", "fr_timer", 20)
>modparam("tm", "fr_inv_timer", 40)
>modparam("tm", "wt_timer", 5)
>
># ------------- usrloc parameters
># 0 = disable
># 1 = write-through
># 2 = write-back
>modparam("usrloc", "db_mode", 2)
>modparam("usrloc", "timer_interval", 60)
>modparam("usrloc", "desc_time_order", 1)
>
># ------------- logging parameters
>modparam("xlog", "buf_size", 8192)
>
>
># Checking for Username Column
>#modparam("auth_db", "user_column", "username")
>
># Checking for Domain Column
>#modparam("auth_db", "domain_column", "domain")
>
># ------------- logging parameters
>modparam("xlog", "buf_size", 8192)
>
>
># -------------------------  request routing logic -------------------
>
># main routing logic
>
>route  {
>
>	# ----------------------------------------------------------------------------
>	# 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 ( msg:len > max_len ) {
>		sl_send_reply("513", "Message too big");
>		break;
>	};
>
>	# ------------------------------------------------------------------------
>	# NOTIFY Keep-Alive Section
>	# ------------------------------------------------------------------------
>	if ((method=="NOTIFY") && search("^Event: keep-alive")) {
>		sl_send_reply("200", "OK");
>		break;
>	};
>
>	if ((method=="NOTIFY") && (uri=~"^sip:700@")) {
>		sl_send_reply("200", "OK");
>		break;
>	};
>
>
>
>	# ------------------------------------------------------------
>	# OPTIONS Section
>	#
>	# This is used by sipsak to monitor the heath of our sip proxy
>	#-------------------------------------------------------------
>
>#	if (search("^From: sip:sipsak@") &&
>#	   (method=="OPTIONS") && (!uri=~"sip:.*[@]+.*"))  {
>#		options_reply();
>#		break;
>#	};
>
>	# ------------------------------------------------------------
>	# Registration Section
>	# ------------------------------------------------------------
>#	if (method=="REGISTER")  {
>#
>#	if (!is_from_local()) {
>#
>#			sl_send_reply("403", "Unknown Domain");
>#			break;
>#		};
>#
>#		if (is_user_in("Request-URI", "disabled"))  {
>#
>#			sl_send_reply("403", "Your evaluation period has expired");
>#			break;
>#		};
>#
>#		if (!www_authorize("", "subscriber"))  {
>#
>#			www_challenge("", "0");
>#			break;
>#		};
>#
>#		if (!check_to())  {
>#
>#			sl_send_reply("401", "Unauthorized");
>#			break;
>#		};
>#
>#		if (!save("location"))  {
>#
>#			sl_reply_error();
>#		};
>#
>#		break;
>#
>#	};
>
>	# -----------------------------------------------------------------
>	# Open Relay Section
>	# -----------------------------------------------------------------
>#	if (method=="INVITE")  {
>#
>#		if (!(is_from_local() || is_uri_host_local())) {
>#			sl_send_reply("403", "Please register to use our service");
>#			break;
>#		};
>#	};
>
>	# -----------------------------------------------------------------
>	# Accounting Section
>	# -----------------------------------------------------------------
>#	if (method=="INVITE" || method=="BYE") {
>#		setflag(1);
>#	};
>
>	# -----------------------------------------------------------------
>	# Record Route Section
>	#
>	# we record-route all messages -- to make sure that subsequent messages
>	# will go through our proxy; that's particularly good if upstream and
>	# donwstream entities use different transport protocol
>	# -----------------------------------------------------------------
>	if (!method=="REGISTER") {
>		record_route();
>	};
>
>	if (method=="INVITE") record_route();
>	log(1, "INVITE message received\n");
>
>
>	# -----------------------------------------------------------------
>	# Loose Route Section
>	#
>	# Grant route routing if route headers present
>	# -----------------------------------------------------------------
>	if (loose_route())  {
>		route(2);
>		break;
>	};
>
>	# -----------------------------------------------------------------
>	# Alias Routing Section
>	# -----------------------------------------------------------------
>	lookup("aliases");
>	if (!uri==myself) {
>		route(2);
>		break;
>	};
>
>	# ------------------------------------------------------------------------
>	# Anonymous Call Rejection Section
>	# ------------------------------------------------------------------------
>	if (isflagset(24) && (method=="INVITE") && search("^(f|F)rom:.*(a|A)nonymous")) {
>		route(8);
>		break;
>	};
>
>
>	# ------------------------------------------------------------------------
>	# Call Block Section
>	# ------------------------------------------------------------------------
>#	if (is_caller_blocked()) {
>#		route(7);
>#		break;
>#	};
>
>	# ------------------------------------------------------------------------
>	# Do Not Disturb Section
>	# ------------------------------------------------------------------------
>#	if (avp_db_load("$ruri/username", "s:donotdisturb")) {
>#		if (avp_check("s:donotdisturb", "eq/y/i")) {
>#			route(5);
>#			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;
>	};
>
>
>
>	# Rota usada para guardar Logs no CDRTool - Billing
>#	if (method=="REGISTER" || method=="INVITE" || method=="BYE" || method=="CANCEL") {
>#		# Salvar mensagens no myslq para o CDRTool
>#		exec_msg("/var/www/html/serweb/sertrace.py; exit 1");
>#	};
>
>
>
>	# 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)
>	# uri==myself retorna true se o nome de dominio URI for igual ao nome do
>	# host ao qual SER esta rodando. Para configurar quais domain names o ser
>	# aceita, deve-se configurar os ALIASES do sistema para tais nomes.
>	if (uri==myself) {
>
>		if (method=="REGISTER") {
>		log(1, "REGISTER message received\n");
>			# Uncomment this if you want to use digest authentication
>			if (!www_authorize("192.168.4.10", "subscriber")) {
>				www_challenge("192.168.4.10", "0");
>				break;
>			};
>			save("location");
>			break;
>		};
>
>		# Repassando Chamadas Internacionais para Asterisk
>	        if (uri=~"^sip:[2][0-9].*@") {
>                	log(1, "Forwarding to Another Gateway - SIPProxy2 to SIPProxy1\n");
>			setflag(1);     # MARK FOR ACCOUNTING
>			rewritehost("192.168.4.11");
>			forward(192.168.4.11,5060);
>                	t_relay();
>			break;
>		}
>
>
>
>	# ----------------------------------------------------------------
>	# Call Routing Section
>	# ----------------------------------------------------------------
>		if (!lookup("location")) {
>
>			sl_send_reply("404", "User Not Found");
>			break;
>		};
>	};
>
>	# 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();
>	};
>
>}
>
>
># ------------------ EOF -------------------------
>
>
>
>
>--
>Felipe Martins
>Mundivox Communications
>Tecnologia e Projetos
>fmartins at mundivox.com
>
>Tel.: +55 +21 +3820 8839
>Cel.: +55 +21 +9823 8602
>Fax.: +55 +21 +3820 8844
>www.mundivox.com
>
>
>_______________________________________________
>Serusers mailing list
>serusers at lists.iptel.org
>http://lists.iptel.org/mailman/listinfo/serusers
>
>




More information about the sr-users mailing list