Hola:
El orden es como dices en ambos casos. Un proceso monit en el servidor de DNS es el que realiza los cambios pertinentes. Lo curioso es que, en el segundo caso, cuando tiramos la interfaz y realizamos un ping al nombre de la base de datos, se resuelve correctamente a la ip del servidor mysql secundario...pero Openser no contacta con éste. En el primer caso, como comentaba anteriormente, nunca hay problema.
Muchas gracias:
Francisco Javier Lizarán
-----Mensaje original-----
De: users-es-bounces(a)lists.openser.org [mailto:users-es-bounces@lists.openser.org] En nombre de Jesus Rodriguez
Enviado el: lunes, 04 de febrero de 2008 23:21
Para: Lista de usuarios de OpenSER
Asunto: Re: [OpenSER-Users-ES] Problema con alta disponibilidad de mysql
Hola,
> Estamos probando la siguiente configuración: un servidor
> corriendo openser contra un par de servidores con mysql configurados
> en anillo. Cuando la base de datos primaria no está disponible, se
> modifica la entrada correspondiente en el servidor de DNS para que
> apunte a la base de datos secundaria. De esta forma, cuando tiramos
> el servicio mysql en el servidor primario, Openser se conecta sin
> problemas al servidor mysql secundario.
> Realizamos otra prueba que consiste en tirar la interfaz del
> servidor mysql. En este caso, openser no se conecta con el servidor
> secundario de mysql, si bien comprobamos que el registro de DNS
> correspondiente sigue cambiándose correctamente. De esta forma,
> ninguna petición para iniciar diálogos progresa, a diferencia del
> caso anterior. ¿Alguien ha tenido algún problema parecido a este?
¿Puedes explicar el orden en el que se hacen los cambios?. Por ejemplo:
Caso 1:
- Se para el servidor mysql
- Se cambia la entrada en el dns
Caso 2:
- Se tira el interfaz del servidor
- Se cambia la entrada en el dns
¿Es este el orden?. Hacer esto con el dns puede tener sus problemas si
no controlas bien el caché y los TTL.
¿Has pensado en usar algo como VRRP, CARP, lagg o similares para
redundar los mysql usando una única ip?.
Saludos
JesusR.
------------------------------------
Jesus Rodriguez
VozTelecom Sistemas, S.L.
jesusr(a)voztele.com
http://www.voztele.com
Tel. 902360305
-------------------------------------
_______________________________________________
Users-es mailing list
Users-es(a)lists.openser.org
http://lists.openser.org/cgi-bin/mailman/listinfo/users-es
___________________________________________________________________________
Este mensaje se dirige exclusivamente a su destinatario y puede contener información privilegiada o confidencial. Si no es vd. el destinatario indicado, queda notificado de que la utilización, divulgación y/o copia sin autorización está prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.
This message is intended exclusively for its addressee and may contain information that is CONFIDENTIAL and protected by professional privilege. If you are not the intended recipient you are hereby notified that any dissemination, copy or disclosure of this communication is strictly prohibited by law. If this message has been received in error, please immediately notify us via e-mail and delete it.
___________________________________________________________________________
Hola, qué lío. Resulta que OpenSer incluye un fichero "dictionary.radius" que
tiene todos los tipos de mensaje para "Sip-Method" y algunos atributos
propietarios para "auth_radius", "group_radius" y "avp_radius".
Luego resulta que "radiusclient_ng" incluye un "dictionay.sip" que se basa en
el "draft-sterman-aaa-sip-00" pero resulta que ese draft ahora es el RFC
4590, cuyos atributos sobre Digest ya vienen en
el "dictionary.freeradius.internal" que viene de serie cuando instalas el
servidor FreeRadius.
En fin, que tengo un cacao importante. ¿Tal vez alguien que haya trabajado con
FreeRadius y OpenSer podría decirme cuál es el diccionario correcto que tengo
que cargar en el cliente y servidor Radius? En principio sólo voy a hacer
accounting con Radius.
Gracias.
--
Iñaki Baz Castillo
ibc(a)in.ilimit.es
Hola:
Estamos probando la siguiente configuración: un servidor corriendo openser contra un par de servidores con mysql configurados en anillo. Cuando la base de datos primaria no está disponible, se modifica la entrada correspondiente en el servidor de DNS para que apunte a la base de datos secundaria. De esta forma, cuando tiramos el servicio mysql en el servidor primario, Openser se conecta sin problemas al servidor mysql secundario.
Realizamos otra prueba que consiste en tirar la interfaz del servidor mysql. En este caso, openser no se conecta con el servidor secundario de mysql, si bien comprobamos que el registro de DNS correspondiente sigue cambiándose correctamente. De esta forma, ninguna petición para iniciar diálogos progresa, a diferencia del caso anterior. ¿Alguien ha tenido algún problema parecido a este?
Un saludo:
Francisco Javier Lizarán
flv(a)barik.es
___________________________________________________________________________
Este mensaje se dirige exclusivamente a su destinatario y puede contener información privilegiada o confidencial. Si no es vd. el destinatario indicado, queda notificado de que la utilización, divulgación y/o copia sin autorización está prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.
This message is intended exclusively for its addressee and may contain information that is CONFIDENTIAL and protected by professional privilege. If you are not the intended recipient you are hereby notified that any dissemination, copy or disclosure of this communication is strictly prohibited by law. If this message has been received in error, please immediately notify us via e-mail and delete it.
___________________________________________________________________________
hola a todos. Cuando configuro mi cliente SIP con la cuenta Admin y
password xxxxx (password de la base de datos) mi servidor OpenSER
responde correctamente con 200 Ok, pero cuando agrego usuarios con:
openserctl add 100 100 100@localhost (por ejemplo), y configuro mi
cliente SIP me da el error de 401 Unauthorized.
Creo que algo en la base de datos no esta bien
Alguna sugerencia
--
Ronmel Jiron Sandres
Buenas, Lista (que eres una lista!) jeje
Estoy madando una llamada desde asterisk al openser SIN AUTHORIZATION y
openser no encuentra el cliente... mi config:
Estoy mandando 88887059999(a)my.domain.com desde asterisk y quiero
reescribirlo a 7059999.... y forward la llamda al cliente, pero openser dice
que no encuentra el usuario, El usuario existe y está registrado... seguro.
ip1 y ip2 son las ips del asterisk, no quiero hacer autentificación, sé que
ésto se puede hacer con "permission", pero a ver quién entiende la
documentación de los módulos.... :S
esto está muy simplificado!
route{
if (method=="INVITE") {
# CUSTOMER-CUSTOMER CALL
if($si=="ip1"||$si=="ip2"){
xlog("L_ERR", "\n************** CUSTOMER-CUSTOMER CALL
(ASTERISK->OPENSER) ************\n");
if (uri=~"^sip:8888"){
strip(4);
}
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
exit;
};
}
}
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
exit;
};
append_hf("P-hint: usrloc applied\r\n");
};
da como resultado:
11(20554) SIP Request:
11(20554) method: <INVITE>
11(20554) uri: <sip:88887059999@192.168.1.203>
11(20554) version: <SIP/2.0>
11(20554) parse_headers: flags=2
11(20554) Found param type 232, <branch> = <z9hG4bK0b646e90>; state=6
11(20554) Found param type 235, <rport> = <n/a>; state=17
11(20554) end of header reached, state=5
11(20554) parse_headers: Via found, flags=2
11(20554) parse_headers: this is the first via
11(20554) After parse_msg...
11(20554) preparing to run routing scripts...
11(20554) parse_headers: flags=100
11(20554) DEBUG:parse_to:end of header reached, state=10
11(20554) DBUG:parse_to: display={}, ruri={sip:88887059999@192.168.1.203}
11(20554) DEBUG: get_hdr_field: <To> [35]; uri=[
sip:88887059999@192.168.1.203]
11(20554) DEBUG: to body [<sip:88887059999@192.168.1.203>
]
11(20554) get_hdr_field: cseq <CSeq>: <102> <INVITE>
11(20554) DEBUG:maxfwd:is_maxfwd_present: value = 70
11(20554) check_via_address(192.168.1.202, 192.168.1.202, 0)
11(20554) parse_headers: flags=80
11(20554) DEBUG: add_param: tag=as458d0183
11(20554) DEBUG:parse_to:end of header reached, state=29
11(20554) DBUG:parse_to: display={"David Villasmil"}, ruri={
sip:7059999@my.domain.com}
11(20554) parse_headers: flags=200
11(20554) DEBUG: get_hdr_body : content_length=340
11(20554) found end of header
11(20554) find_first_route: No Route headers found
11(20554) loose_route: There is no Route HF
11(20554) grep_sock_info - checking if host==us: 15==9 && [192.168.1.203]
== [127.0.0.1]
11(20554) grep_sock_info - checking if port 5060 matches port 5060
11(20554) grep_sock_info - checking if host==us: 15==15 && [192.168.1.203]
== [192.168.1.203]
11(20554) grep_sock_info - checking if port 5060 matches port 5060
11(20554) grep_sock_info - checking if host==us: 15==9 && [192.168.1.203]
== [127.0.0.1]
11(20554) grep_sock_info - checking if port 5060 matches port 5060
11(20554) grep_sock_info - checking if host==us: 15==15 && [192.168.1.203]
== [192.168.1.203]
11(20554) grep_sock_info - checking if port 5060 matches port 5060
11(20554) comp_scriptvar: str 20 : 200.198.182.202
11(20554)
************** CUSTOMER-CUSTOMER CALL (ASTERISK->OPENSER) ************
11(20554) rewrite_uri: Rewriting Request-URI with 'sip:s@192.168.1.253'
11(20554) ******* setting for branch 0 flags 0
11(20554) lookup(): 's' Not found in usrloc
11(20554) parse_headers: flags=ffffffffffffffff
11(20554) check_via_address(192.168.1.202, 192.168.1.202, 0)
11(20554) DEBUG:destroy_avp_list: destroying list (nil)
11(20554) receive_msg: cleaning up
porqué el username termina siendo "s"????? claro, así nunca lo encontrará!
saludos
David
Alguien sabe porqué el strip() no hace su trabajo??
tengo esta ruta:
route[8] {
# DO NOT AUTHORIZE YET.... AND ROUTE CALL
xlog("L_ERR", "\n************** $ou ***********\n");
xlog("L_ERR", "\n************** Changing dialed number (Removing 8888)
**************\n");
strip(4);
xlog("L_ERR", "\n************** $ou ***********\n");
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
exit;
};
y no hace el stripping!... log:
************** SOURCE IP: 200.198.182.202 ***********
************** sip:88887059999@200.198.182.203 ***********
************** Changing dialed number (Removing 8888) **************
************** sip:88887059999@200.198.182.203 ***********
muchas gracias... esto me está volviendo loco...
David
Buenas a todos.
Hace unos días comenté que estaba trabajando con un SER de IPTEL. Al
hacer un INVITE lo hacía pasar por un Applicattion Server y le cambiaba
la Request URI, pero no el TO, y el SER hacía caso omiso y funcionaba
con el TO. Después de bastante buscar descubrí que era un bug que tenían
abierto hace más de un año y que aún no han solucionado (al menos
aparece como abierto en su lista de bugs). Probé con una versión más
actual y aún así tenía el mismo problema.
Hemos decidido pasarnos a openser y tengo otro problema relacionado con
lo mismo. El escenario es el mismo. Todos los REGISTER e INVITE son
reenviados del openser al Applicattion Server, y este se los devuelve.
Si no realizo ningún cambio en los INVITE el ser los reencamina bien.
Pero cuando cambio la Request URI a la sipURI de otro softphone que esté
también registrado, el SER hace algo extraño. Por lo que he observado en
las trazas entra en un bucle infinito, como si se enviara el INVITE a sí
mismo. En el ethereal no salé nada hacia afuera. Y al final el SER acaba
devolviendo un 513 Message Too Big al Applicattion Server.
Siento haberme alargado. El openser.cfg apenas lo he modificado, sólo he
metido un if para que todos los INVITE los reenvíe al Applicattion
Server, menos los que vienen con la nueva sipURI, que son los que tiene
que reencaminar. Os pego el openser.cfg.
¿Alguna idea?
Un saludo.
debug=2 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
children=4
disable_dns_blacklist=true
# Uncomment these lines to enter debugging mode
#fork=no
#log_stderror=yes
#
port=5060
# uncomment the following lines for TLS support
#disable_tls = 0
#listen = tls:your_IP:5061
#tls_verify_server = 1
#tls_verify_client = 1
#tls_require_client_certificate = 0
#tls_method = TLSv1
#tls_certificate = "/etc/openser/tls/user/user-cert.pem"
#tls_private_key = "/etc/openser/tls/user/user-privkey.pem"
#tls_ca_list = "/etc/openser/tls/user/user-calist.pem"
alias="flanders-bis.hi.inet:5060"
# ------------------ module loading ----------------------------------
#set module path
mpath="/usr/lib/openser/modules/"
# Uncomment this if you want to use SQL database
#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 "mi_fifo.so"
loadmodule "xlog.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
#loadmodule "auth.so"
#loadmodule "auth_db.so"
# ----------------- setting module-specific parameters ---------------
# -- mi_fifo params --
modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
# -- usrloc params --
modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
#modparam("usrloc", "db_mode", 2)
# -- auth params --
# Uncomment if you are using auth module
#
#modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this config),
# uncomment also the following parameter)
#
#modparam("auth_db", "password_column", "password")
# -- 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{
xlog("L_ERR", " ");
xlog("L_ERR", " INICIAMOS PROCESADO ..............");
# 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 >= 2048 ) {
xlog("L_ERR", "PUES VA A SER DEMASIADO LARGO ..............");
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();
# if(method=="REGISTER")
# {
# xlog("L_ERR", "uri = $ru \n");
# save("location");
#log(1, myself);
# exit;
# }
# 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);
};
if (!uri==myself) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
# if you have some interdomain connections via TLS
#if(uri=~"@tls_domain1.net") {
# t_relay("tls:domain1.net");
# exit;
#} else if(uri=~"@tls_domain2.net") {
# t_relay("tls:domain2.net");
# exit;
#}
route(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)
if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
#if (!www_authorize("openser.org", "subscriber")) {
# www_challenge("openser.org", "0");
# exit;
#};
forward("10.95.42.92:5060");
save("location");
exit;
};
if(method=="INVITE")
{
if($ru=="sip:343@flanders-bis.hi.inet")
{
route(1);
exit;
}
else
{
forward("10.95.42.92:5060");
exit;
}
}
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
};
# 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();
};
exit;
}
Alguien se ha encontrado con el siguiente problema?
Tengo:
OpenSer
+
Asterisk
un cliente ATA Jensen.
La forma normal de funcionamiento es:
ATA->Openser->Asterisk->Gw
ésto no funciona.
Si llamo desde el ATA a otro sip phone registrado en el Openser, funciona,
Si registro el ATA en el asterisk y llamo a cualquier sitio, funciona.
Conclusión: Cuando la llamada tiene que pasar Openser->Asterisk.. NO
FUNCIONA!!!
Saludos
David
hola,, tengo la siguiente estructura: Dos cliente SIP en una red
privada los cuales se salen a trave de un Router IP, mi servidor
OpenSER tiene IP publica. Cuando quiero registrar uno de mis clientes
IP, sucede los siguiente:
U 200.30.xxx.xxxx:60049 -> 200.30.xxx.xxxx:5060 ##### Mi Router a mi Openser
REGISTER sip:200.30.xxx.xxx SIP/2.0. ### Mi openser
Via: SIP/2.0/UDP 192.168.1.31;branch=z9hG4bK5bbd0e954febb14c. ### mi
cliente SIP
From: "102" <sip:102@200.30.xxx.xxx;user=phone>;tag=5e474aa6e3664e89.
#### mi openser
To: <sip:102@200.30.177.115;user=phone>. #### mi openser
Contact: <sip:102@192.168.1.31;user=phone>. ### cliente SIP
Supported: replaces.
Call-ID: 2ef635e380d63096(a)192.168.1.31.
CSeq: 100 REGISTER.
Expires: 3600.
User-Agent: Grandstream BT120 1.0.8.23.
Max-Forwards: 70.
Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE.
Content-Length: 0.
U 200.30.177.115:5060 -> 200.30.177.124:5060 ### mi openser a mi Router
SIP/2.0 403 Forbidden.
Via: SIP/2.0/UDP
192.168.1.31;branch=z9hG4bK5bbd0e954febb14c;received=200.30.xxx.xxx.
### Router
From: "102" <sip:102@200.30.xxx.xxx;user=phone>;tag=5e474aa6e3664e89.
#### mi openser
To: <sip:102@200.30.xxx.xxx;user=phone>;tag=c13c52eb7bdc65672ab688ebbd724ddf.4c20.
### mi openser
Call-ID: 2ef635e380d63096(a)192.168.1.31. ### cliente SIP
CSeq: 100 REGISTER.
Server: OpenSER (1.2.2-notls (i386/linux)).
Content-Length: 0.
Que hay de malo en todo esto...
ayuda por favor
--
Ronmel Jiron Sandres
Hola, mi experiencia con Radius es nula, nunca lo he usado para nada. Mi
pregunta es sencilla: ¿existe alguna razón para usar OpenSer con Radius en
vez de MySQL directamente?
Me refiero básicamente a las secciones de autenticación y accounting (y tal
vez el módulo "group").
Si resulta que Radius es conveniente en entornos grandes por la razón que
sea... pues nada, a aprender, que es gratis :) pero la cuestión es que me
gustaría saber si realmente aporta alguna ventaja o no.
En principio, la base de datos estaría en un servidor a parte (replicado y
esas cosas). Supongo que en caso de añadir la capa Radius el servidor estaría
en el mismo host. En ese escenario, ¿qué ventajas tiene usar Radius teniendo
en cuenta que no es imprescindible?
Gracias por cualquier aclaración.
--
Iñaki Baz Castillo
ibc(a)in.ilimit.es