[OpenSER-Users-ES] openser + rtpproxy +NAT

Mariam M. T. mariam_mt_05 at hotmail.com
Thu Jan 24 16:38:07 CET 2008


Hola como estan. Acabo de inscribirme, soy nueva en la lista. tengo muchas dudas con respecto a openser, espero me ayuden, Antes comentare del trabajo que estoy encaminando.

Estoy trabajando en un proyecto para implementar Telefonia IP para una empresa, que me permita hacer llamadas dentro de la empresa(red local) y desde internet.

La red de esta empresa cuenta con 35 VLANs, un firewall que controla las conexiones salientes y entrantes de las VLANs (permisos) hacia el Internet,

teniendo algunas referencias de la plataforma a utilizar para este proyecto hemos elegido Linux por cierto Debian y Openser version 1.2. luego de leer la documentacion de openser comence a instalar y probar. la Autenticacion me funciona, las llamadas de igual manera pero solo en una VLAN, estoy utilizando el X-Lite. cuando hago la autenticacion de una VLAN diferente los mensajes de señalizacion no llegan a mi servidor,  de igual manera desde el internet, en mi servidor estoy monitorizando con NGREP los mensajes SIP, mi servidor cuenta con una IP publica y tambien esta instalado el rtpproxy para cuestiones de NAT, En el firewall me han dado todos los permisos, estan habilitados todos los protocolos y sus puertos(principalmente TCP y UDP), permite conexiones entrantes y salientes desde el internet a las VLANs y viciversa. 

lo primero que puse a correr es el RTPProxy(la que utilizo es rtpproxy-cvs-latest.tgz)

rtpproxy -l 200.58.82.46 -s udp:127.0.0.1:7890 -F

luego Openser.

cuando hago llamadas en el mismo VLANs como mencione anteriormente  me funcionan correctamente pero de una VLAN diferente no, tampoco de internet. la configuracion de mi openser.cfg es la siguiente


#
# sample config file to be used with nathelper/rtpproxy
#


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

debug=7            # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=yes # (cmd line: -E)
listen=200.58.82.46

/* Uncomment these lines to enter debugging mode 
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

# --- module loading

mpath="//lib/openser/modules/"

loadmodule "mysql.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "nathelper.so"
loadmodule "auth.so"
loadmodule "auth_db.so"
loadmodule "mi_fifo.so"
loadmodule "xlog.so"

# --- setting module parameters

# -- mi_fifo params --
modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")

modparam("usrloc|auth_db","db_url","mysql://openser:openserrw@localhost/openser")

# -- usrloc params --
modparam("usrloc", "db_mode", 2)
modparam("usrloc", "nat_bflag", 6)

# -- registrar params --
modparam("registrar|nathelper", "received_avp", "$avp(i:42)")

# -- auth params --
#modparam("auth_db", "calculate_ha1", no)
#modparam("auth_db", "password_column", "ha1")
#modparam("auth_db", "password_column_2", "ha1b")

modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")

# -- rr params --
modparam("rr", "enable_full_lr", 1)

# -- nathelper params ---

modparam("nathelper", "rtpproxy_sock", "udp:127.0.0.1:7890")
modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "sipping_bflag", 7)
modparam("nathelper", "sipping_from", "sip:200.58.82.46")

# --- main routing logic
route{

	if (!mf_process_maxfwd_header("10")) {
		sl_send_reply("483","Too Many Hops");
		exit;
	};
	if (msg:len>=  2048 ) {
		sl_send_reply("513", "Message too big");
		exit;
	};

	# NAT detection
	
	route(2);

	if (!method=="REGISTER")
		record_route();

	if (loose_route()) {
		append_hf("P-hint: rr-enforced\r\n"); 
		route(1);
	};

	if (!uri==myself) {
		append_hf("P-hint: outbound\r\n"); 
		route(1);
	};

	if (uri==myself) {
		
		if (method=="REGISTER") {
			
			if (!www_authorize("", "subscriber")) {
				www_challenge("", "0");
				exit;
			};
			
			if (isflagset(5)) {
				# set branch flag -- when someone will call this user
				# the INVITE will have branch flag 6 set after lookup("location")
				setbflag(6);
				# if you want OPTIONS natpings uncomment next
				# setbflag(7);
			};
			save("location");
			exit;
		};

		if (!lookup("location")) {
			sl_send_reply("404", "Not Found");
			exit;
		};
		append_hf("P-hint: usrloc applied\r\n"); 
	};

	route(1);
}


route[1] {
	if (subst_uri('/(sip:.*);nat=yes/\1/')){
		setbflag(6);
	};

	if (isflagset(5)||isbflagset(6)) {
		route(3);
	}

	if (!t_relay()) {
		sl_reply_error();
	};
	exit;
}

route[2]{
	force_rport();
	if (nat_uac_test("19")) {
		if (method=="REGISTER") {
			fix_nated_register();
		} else {
			fix_nated_contact();
		};
		setflag(5);
	};
}


route[3] {
	if (is_method("BYE|CANCEL")) {
		unforce_rtp_proxy();
	} else if (is_method("INVITE")){
		force_rtp_proxy();
		t_on_failure("2");
	};
	if (isflagset(5))
		search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes');
	t_on_reply("1");
}

failure_route[2] {
	if (isbflagset(6) || isflagset(5)) {
		unforce_rtp_proxy();
	}
}

onreply_route[1] {
	if ((isflagset(5) || isbflagset(6)) && status=~"(183)|(2[0-9][0-9])") {
		force_rtp_proxy();
	}
	search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes');

	if (isbflagset(6)) {
		fix_nated_contact();
	}
	exit;
}

Derrepente me falte dar algun permiso en mi Servidor? o esta mal mi configuracion de openser.cfg. espero podeis ayudar.

Saludos

Mariam


_________________________________________________________________
Explore the seven wonders of the world
http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE



More information about the Users-es mailing list