Pude retomar esto que deje hace mucho tiempo en Stand By... Y tengo una
pregunta conceptual:
El esquema es el siguiente:
PBX (Propietaria) ---- Asterisk ----- Kamailio ------ Phone (que esta detras
de un router Linksys mediante NAT)
La extension en cuestion es la 6001, la cual esta configurada en Asterisk
como:
Host: IP kamailio
Nat: yes
Qualify: no
En kamailio esta correctamente registrada, con los flags correctos
reconociendo el NAT. (Si llamo de una extension registrada en kamailio a
esta extension, la comunicacion es correcta)
Lo que sucede es lo siguiente:
Cuando desde una extension de la PBX propietaria disco el numero 6001, esto
llega al asterisk, el asterisk lo reenvia al kamailio, y kamailio toma el
INVITE y lo reenvia a la direccion IP Privada del telefono. Para que quede
mas claro:
IP PBX propietaria: 192.168.2.1
IP Asterisk: 200.xx.xx.87
IP Kamailio: 200.xx.xx.53
IP privada telefono: 192.168.2.10
U 200.xx.xx.87:5060 -> 200.xx.xx.53:5060
INVITE sip:6001@192.168.2.10:5060 SIP/2.0.
Via: SIP/2.0/UDP 200.xx.xx.87:5060;branch=z9hG4bK66c318cc;rport.
From: "Propietario" <sip:220@200.xx.xx.87>;tag=as1f07b3ea.
To: <sip:6001@192.168.2.10:5060>.
Contact: <sip:220@200.xx.xx.87>.
Call-ID: 7fb490c8634757322217b63e51bd0f12(a)200.xx.xx.87.
CSeq: 102 INVITE.
User-Agent: Asterisk PBX.
Max-Forwards: 70.
INVITE sip:6001@192.168.2.10:5060 SIP/2.0.
Record-Route: <sip:200.xx.xx.53;lr=on;ftag=as1f07b3ea>.
Via: SIP/2.0/UDP 200.xx.xx.53;branch=z9hG4bK890f.87c7d145.0.
Via: SIP/2.0/UDP 200.xx.xx.87:5060;branch=z9hG4bK66c318cc;rport=5060.
From: "Propietario" <sip:220@200.xx.xx.87>;tag=as1f07b3ea.
To: <sip:6001@192.168.2.10:5060>.
Contact: <sip:220@200.xx.xx.87>.
Call-ID: 7fb490c8634757322217b63e51bd0f12(a)200.xx.xx.87.
CSeq: 102 INVITE.
User-Agent: Asterisk PBX.
Max-Forwards: 69.
Por que hace este INVITE a la IP privada? y no toma la Publica haciendo
correctamente el NAT?
Gracias.
--
View this message in context: http://www.nabble.com/Pregunta-Conceptual%21-tp22567852p22567852.html
Sent from the OpenSER Users - ES mailing list archive at Nabble.com.
Buenas a todos.
En mi empresa hay montado un Callmanager con IP's privadas , pero yo
al margen monté un kamailio con IP publica para que los usuarios se
puedan registrar y hacer videoconferencias. El tema de la presencia
solo lo he conseguido hacer funcionar con el X-Lite.
Ahora la idea que tienen es unir ambas cosas, para lo cual en otro PC
monté un asterisk con un trunk SIP al callmanager (version 4.1 de
callmanager) y en el kamailio le digo que lo reenvie al asterisk (que
dispone de IP publica e IP privada).
También en la maquina que esta el asterisk, le he instalado el
rtpproxy, quedandose el siguiente montaje:
|----Ekiga Linux-----| | kamailio
| | asterisk |
| Callmanager |
|Cliente (IP Publica|----->| IP Publica
|------->|IP Publica IP--- Privada|------| IP Privada
|
|-------------------------| |
rewritehostport("IP_asterisk:5060");| |
rtpproxy | | |
No quiero hacer NAT.
Las pruebas de momento no me funcionan, lo que no sé es si el esquema
es correcto y deberia funcionar, y así centrarme en la configuración.
¿Estoy metiendo la pata en el esquema?
¿Me faltan elementos?
Gracias
Buenas a todos.
En mi empresa hay montado un Callmanager con IP's privadas , pero yo
al margen monté un kamailio con IP publica para que los usuarios se
puedan registrar y hacer videoconferencias.
Ahora la idea que tienen es unir ambas cosas, para lo cual en otro PC
monté un asterisk con un trunk SIP al callmanager (version 4.1 de
callmanager) y en el kamailio le digo que lo reenvie a lPC con asterisk (que
dispone de IP publica e IP privada).
También en la maquina que esta el asterisk, le he instalado el
rtpproxy, quedandose el siguiente montaje:
http://s1.subirimagenes.com/imagen/previo/thump_1982023asterisk.png
No quiero hacer NAT.
Las pruebas de momento no me funcionan, lo que no sé es si el esquema
es correcto y deberia funcionar, y así centrarme en la configuración.
¿Estoy metiendo la pata en el esquema?
¿Me faltan elementos?
Gracias a todos.
Hola, soy novata usando openser, y me cuesta mucho configurarlo.
Lo que trato de hacer es: consultar un fichero de texto para saber cúal es
el estado de la red, y en función de lo que aparezca en ese fichero, enviar
un mensaje de error para que no se establezca la comunicación, pero tengo
problemas.
Para usar ficheros de texto necesito el módulo db_text y para consultarlo he
usado el módulo avpops, pero no se utilizarlo y me da problemas.
El fichero que quiero leer es muy simple:
estado(int)
1
Y mi fichero de configuración es:
#
# $Id: opensips.cfg 4423 2008-06-27 10:25:01Z henningw $
#
# OpenSIPS basic configuration script
# by Anca Vamanu
#
# Please refer to the Core CookBook at
http://www.opensips.org/dokuwiki/doku.php
# for a explanation of possible statements, functions and parameters.
#
####### Global Parameters #########
debug=3
log_stderror=no
log_facility=LOG_LOCAL0
fork=yes
children=4
/* uncomment the following lines to enable debugging */
#debug=6
#fork=no
#log_stderror=yes
/* uncomment the next line to disable TCP (default on) */
#disable_tcp=yes
/* uncomment the next line to enable the auto temporary blacklisting of
not available destinations (default disabled) */
#disable_dns_blacklist=no
/* uncomment the next line to enable IPv6 lookup after IPv4 dns
lookup failures (default disabled) */
#dns_try_ipv6=yes
/* uncomment the next line to disable the auto discovery of local aliases
based on revers DNS on IPs (default on) */
#auto_aliases=no
/* uncomment the following lines to enable TLS support (default off) */
#disable_tls = no
#listen = tls:your_IP:5061
#tls_verify_server = 1
#tls_verify_client = 1
#tls_require_client_certificate = 0
#tls_method = TLSv1
#tls_certificate = "/usr/local/etc/opensips/tls/user/user-cert.pem"
#tls_private_key = "/usr/local/etc/opensips/tls/user/user-privkey.pem"
#tls_ca_list = "/usr/local/etc/opensips/tls/user/user-calist.pem"
port=5060
/* uncomment and configure the following line if you want opensips to
bind on a specific interface/port/proto (default bind on all available)
*/
#listen=udp:192.168.1.2:5060
####### Modules Section ########
#set module path
mpath="/usr/local/lib/opensips/modules/"
/* uncomment next line for MySQL DB support */
#loadmodule "db_mysql.so"
loadmodule "avpops.so"
loadmodule "db_text.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 "uri_db.so"
loadmodule "uri.so"
loadmodule "xlog.so"
loadmodule "acc.so"
/* uncomment next lines for MySQL based authentication support
NOTE: a DB (like db_mysql) module must be also loaded */
#loadmodule "auth.so"
#loadmodule "auth_db.so"
/* uncomment next line for aliases support
NOTE: a DB (like db_mysql) module must be also loaded */
#loadmodule "alias_db.so"
/* uncomment next line for multi-domain support
NOTE: a DB (like db_mysql) module must be also loaded
NOTE: be sure and enable multi-domain support in all used modules
(see "multi-module params" section ) */
#loadmodule "domain.so"
/* uncomment the next two lines for presence server support
NOTE: a DB (like db_mysql) module must be also loaded */
#loadmodule "presence.so"
#loadmodule "presence_xml.so"
# ----------------- setting module-specific parameters ---------------
# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
# ----- rr params -----
# add value to ;lr param to cope with most of the UAs
modparam("rr", "enable_full_lr", 1)
# do not append from tag to the RR (no need for this script)
modparam("rr", "append_fromtag", 0)
# ----- rr params -----
modparam("registrar", "method_filtering", 1)
/* uncomment the next line to disable parallel forking via location */
# modparam("registrar", "append_branches", 0)
/* uncomment the next line not to allow more than 10 contacts per AOR */
#modparam("registrar", "max_contacts", 10)
# ----- uri_db params -----
/* by default we disable the DB support in the module as we do not need it
in this configuration */
modparam("uri_db", "use_uri_table", 0)
modparam("uri_db", "db_url", "")
# ----- acc params -----
/* what sepcial events should be accounted ? */
modparam("acc", "early_media", 1)
modparam("acc", "report_ack", 1)
modparam("acc", "report_cancels", 1)
/* by default ww do not adjust the direct of the sequential requests.
if you enable this parameter, be sure the enable "append_fromtag"
in "rr" module */
modparam("acc", "detect_direction", 0)
/* account triggers (flags) */
modparam("acc", "failed_transaction_flag", 3)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 2)
/* uncomment the following lines to enable DB accounting also */
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)
# ----- usrloc params -----
modparam("usrloc", "db_mode", 0)
/* uncomment the following lines if you want to enable DB persistency
for location entries */
#modparam("usrloc", "db_mode", 2)
#modparam("usrloc", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
modparam("avpops", "db_url",
"db_text:///usr/local/share/opensips/dbtext/opensi$
modparam("avpops", "avp_table", "avptable")
modparam("db_text", "db_mode", 1)
# ----- auth_db params -----
/* uncomment the following lines if you want to enable the DB based
authentication */
#modparam("auth_db", "calculate_ha1", yes)
#modparam("auth_db", "password_column", "password")
#modparam("auth_db", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
#modparam("auth_db", "load_credentials", "")
# ----- alias_db params -----
/* uncomment the following lines if you want to enable the DB based
aliases */
#modparam("alias_db", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
# ----- domain params -----
/* uncomment the following lines to enable multi-domain detection
support */
#modparam("domain", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
#modparam("domain", "db_mode", 1) # Use caching
# ----- multi-module params -----
/* uncomment the following line if you want to enable multi-domain support
in the modules (dafault off) */
#modparam("alias_db|auth_db|usrloc|uri_db", "use_domain", 1)
# ----- presence params -----
/* uncomment the following lines if you want to enable presence */
#modparam("presence|presence_xml", "db_url",
# "mysql://opensips:opensipsrw@localhost/opensips")
#modparam("presence_xml", "force_active", 1)
#modparam("presence", "server_address", "sip:192.168.1.2:5060")
####### Routing Logic ########
# main request routing logic
route{
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
}
if (has_totag()) {
# sequential request withing a dialog should
# take the path determined by record-routing
if (loose_route()) {
if (is_method("BYE")) {
setflag(1); # do accounting ...
setflag(3); # ... even if the transaction fails
}
route(1);
} else {
/* uncomment the following lines if you want to enable presence */
##if (is_method("SUBSCRIBE") && $rd == "your.server.ip.address") {
## # in-dialog subscribe requests
## route(2);
## exit;
##}
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
# non loose-route, but stateful ACK; must be an ACK after a 487 or e.g.
404 from upstream server
t_relay();
exit;
} else {
# ACK without matching transaction ... ignore and discard.\n");
exit;
}
}
sl_send_reply("404","Not here");
}
exit;
}
#initial requests
# CANCEL processing
if (is_method("CANCEL"))
{
if (t_check_trans())
t_relay();
exit;
}
t_check_trans();
# authenticate if from local subscriber (uncomment to enable auth)
##if (!(method=="REGISTER") && from_uri==myself)
##{
## if (!proxy_authorize("", "subscriber")) {
## proxy_challenge("", "0");
## exit;
## }
## if (!check_from()) {
## sl_send_reply("403","Forbidden auth ID");
## exit;
## }
##
## consume_credentials();
## # caller authenticated
##}
# record routing
if (!is_method("REGISTER|MESSAGE"))
record_route();
# account only INVITEs
if (is_method("INVITE")) {
setflag(1); # do accounting
}
if (!uri==myself)
/* replace with following line if multi-domain support is used */
##if (!is_uri_host_local())
{
append_hf("P-hint: outbound\r\n");
# if you have some interdomain connections via TLS
##if($rd=="tls_domain1.net") {
## t_relay("tls:domain1.net");
## exit;
##} else if($rd=="tls_domain2.net") {
## t_relay("tls:domain2.net");
## exit;
##}
route(1);
}
# requests for my domain
/* uncomment this if you want to enable presence server
and comment the next 'if' block
NOTE: uncomment also the definition of route[2] from below */
##if( is_method("PUBLISH|SUBSCRIBE"))
## route(2);
if (is_method("PUBLISH"))
{
sl_send_reply("503", "Service Unavailable");
exit;
}
if (is_method("REGISTER"))
{
# authenticate the REGISTER requests (uncomment to enable auth)
##if (!www_authorize("", "subscriber"))
##{
## www_challenge("", "0");
## exit;
##}
##
##if (!check_to())
##{
## sl_send_reply("403","Forbidden auth ID");
## exit;
##}
if (!save("location"))
sl_reply_error();
exit;
}
if ($rU==NULL) {
# request with no Username in RURI
sl_send_reply("484","Address Incomplete");
exit;
}
# apply DB based aliases (uncomment to enable)
##alias_db_lookup("dbaliases");
if (!lookup("location")) {
switch ($retcode) {
case -1:
case -3:
t_newtran();
t_reply("404", "Not Found");
exit;
case -2:
sl_send_reply("405", "Method Not Allowed");
exit;
}
}
# when routing via usrloc, log the missed calls also
setflag(2);
route(1);
route(3);
}
route[1] {
# for INVITEs enable some additional helper routes
if (is_method("INVITE")) {
t_on_branch("2");
t_on_reply("2");
t_on_failure("1");
}
if (!t_relay()) {
sl_reply_error();
};
exit;
}
route[3]
{
avp_db_query("SELECT estado FROM ejemplo", "$avp(s:estado)");
if (!avp_check("$avp(s:estado)","re/(0|1)/g"))
{
sl_send_reply("404", "Not Found");
exit;
}
else if ($avp(s:estado)=="0")
{
sl_send_reply("404", "Not found");
exit;
}
}
branch_route[2] {
xlog("new branch at $ru\n");
}
onreply_route[2] {
xlog("incoming reply\n");
}
failure_route[1] {
if (t_was_cancelled()) {
exit;
}
}
Resalto en negrita lo que he modificado respecto al fichero original.
Y al arrancar openser obtengo en el fichero de log lo siguiente:
WARNING:core:fix_socket_list: could not rev. resolve 192.168.1.54
INFO:core:init_tcp: using epoll_lt as the TCP io watch method (auto
detected)
NOTICE:core:main: version: opensips 1.4.4-notls (i386/linux)
INFO:core:main: using 32 Mb shared memory
INFO:core:main: using 1 Mb private memory per process
INFO:avpops:avpops_init: initializing...
ERROR:core:db_check_api: module db_db_text does not export db_use_table
function
CRITICAL:avpops:avpops_db_bind: cannot bind to database module! Did you
load a database module ?
ERROR:core:init_mod: failed to initialize module avpops
ERROR:core:main: error while initializing modules
Si alguien me puede ayudar se lo agradecería.
--
View this message in context: http://www.nabble.com/Consulta-un-fichero-con-openser-tp22563432p22563432.h…
Sent from the OpenSER Users - ES mailing list archive at Nabble.com.
Saludos
Me he encontrado con un tratamiento que hace record-route a los PUBLISH en un
fichero de configuración de Kamailio. Me he dado cuenta de que en el fichero
por defecto también aparece así:
if (!is_method("REGISTER|MESSAGE"))
record_route();
if( is_method("PUBLISH|SUBSCRIBE")){
sl_send_reply("503", "Service Unavailable");
exit;
}
¿Por qué se le pone el record-route al publish? No es una initial request que
establezca un diálogo y según el rfc 3903:
A PUBLISH request does not establish a dialog. A UAC MAY include a
Route header field in a PUBLISH request based on a pre-existing route
set as described in Section 8.1 of RFC 3261 [4]. The Record-Route
header field has no meaning in PUBLISH requests or responses, and
MUST be ignored if present.
Lo que me mosquea es que los de Kamailio, que saben de esto mucho más que yo,
hayan puesto el record-route y se me esté escapando algo.
Hola, ando buscando un servidor SIP que permita
video-multiconferencias, es decir, teléfonos SIP con vídeo llaman a un
número, su proxy/PBX lo ruta a este servidor y entran en una
multiconferencia con audio y video (ya se encargará el servidor de
decidir cómo mezclar los vídeos).
Así mismo es deseable una solución web de control y cosas así, pero no
busco la típica solución web total en la que los participantes no usan
su tfno sino que enchufan una webcam y se conectan a la web, eso no
(que nadie me mencione el PdTuki ese... XD).
Por ahora leo sobre estos productos de Cisco y Radvision, pero ni
estoy seguro de para qué sirven:
- http://www.cisco.com/en/US/prod/collateral/video/ps7190/ps1870/ps6960/produ…
- http://www.radvision.com/Products/Network/SCOPIA100400/
¿Alguna sugerencia/experiencia? Gracias.
--
Iñaki Baz Castillo
<ibc(a)aliax.net>
Hola gente:
Creo que este tema ya lo habia preguntado en su momento, y no recuerdo quien
me respondio que postee el Message que tengo y el Message que quiero... La
situacion es esta:
PBX <---> Kamailio <---> VoIP provider
El proveedor de VoIP no acepta paquetes SIP con direcciones IP invalidas en
el Head, por supuesto tengo el Kamailio con una IP publica (dada por el
proveedor).
La idea es que en una llamada saliente, al pasar por Kamailio, se modifique
el Head para que el proveedor reconozca el Message correctamente.
Record-Route: <sip:200.xx.xx.53;lr=on>
Via: sip/2.0/UDP 200.xx.xx.53;branch=ssdsdwewf.casqwq44.0
Via: sip/2.0/UDP 192.168.10.150:5060;branch=kchmvamydgcnwewqaq
Max-Forwards: 69
Necesito que el Message sea:
Record-Route: <sip:200.xx.xx.53;lr=on>
Via: sip/2.0/UDP 200.xx.xx.53:5060;branch=xxxxxxxxxx
Max-Forwards: 69
Resumiendo, que el Header solo envie la direccion del Kamailio y no del
Telefono que tiene detras.
Apreciare cualquier respuesta, gracias!
--
View this message in context: http://www.nabble.com/Modificar-Headers-tp21727191p21727191.html
Sent from the OpenSER Users - ES mailing list archive at Nabble.com.
El Miércoles, 18 de Febrero de 2009, users-es-owner(a)lists.kamailio.org
escribió:
> As list administrator, your authorization is requested for the
> following mailing list posting:
>
> List: Users-es(a)lists.kamailio.org
> From: cinchonize(a)rubytoots.com
> Subject: Warning! Virus detected
> Reason: Mensaje dirigido a una lista privada procedente de una
> dirección que no pertenece a la lista
>
> At your convenience, visit:
>
> http://lists.kamailio.org/cgi-bin/mailman/admindb/users-es
>
> to approve or deny the request.
--
Iñaki Baz Castillo
El Miércoles, 18 de Febrero de 2009, users-es-owner(a)lists.kamailio.org
escribió:
> As list administrator, your authorization is requested for the
> following mailing list posting:
>
> List: Users-es(a)lists.kamailio.org
> From: convent(a)cline.org.uk
> Subject: Warning! Virus detected
> Reason: Mensaje dirigido a una lista privada procedente de una
> dirección que no pertenece a la lista
>
> At your convenience, visit:
>
> http://lists.kamailio.org/cgi-bin/mailman/admindb/users-es
>
> to approve or deny the request.
--
Iñaki Baz Castillo