Estimados amigos del foro,
Anteriormente había tenido problemas en hacer un forward desde SER a Asterisk, este tema ya quedo resuelto. El problema que estoy teniendo ahora es el siguiente, detallo la estructura de mi red.
cliente sip-------internet------OpenSER------Internet-----Asterisk----- LAN
El efectuar una llamada desde cliente sip que esta en internet con una ip publica hacia un cliente sip que esta en la lan, esto funciona perfecto, en este caso el cliente esta registrado en OpenSer; ahora cuando un cliente de la lan que esta registrado en Asterisk quiere llamar a un cliente que esta registrado en open ser tengo problemas de loop, porque el INVITE de open ser hay un rewritehostport("xxx.xxx. xxx.xxx:5060"); al Asterisk. La pregunta es como puedo llamar de mi Asterisk a clientes que estan registrados en Open Ser.
Detallo config de OpenSER
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"); exit; }; if (msg:len >= max_len ) { sl_send_reply("513", "Message too big"); exit; };
# 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 if (!method=="REGISTER") record_route();
# subsequent messages withing a dialog should take the # path determined by record-routing if (loose_route()) { # mark routing logic in request append_hf("P-hint: rr-enforced\r\n"); route(1); exit; };
if (!uri==myself) { # mark routing logic in request append_hf("P-hint: outbound\r\n"); route(1); exit; }; if (is_method("INVITE")) { #record_route(); ## #force_rtp_proxy(); ##
rewritehostport("xxx.xxx.xxx.xxx:5060"); #t_on_reply("1"); ## t_relay(); return; #exit; }
# 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") { # digest authentication if (!www_authorize("", "subscriber")) { www_challenge("", "0"); exit; };
save("location"); exit; };
lookup("aliases"); if (!uri==myself) { append_hf("P-hint: outbound alias\r\n"); route(1); exit; };
# native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); exit; }; }; append_hf("P-hint: usrloc applied\r\n"); route(1); }
route[1] { # send it out now; use stateful forwarding as it works reliably # even for UDP2TCP if (!t_relay()) { sl_reply_error(); };
Saludos,