Configuración básica de OpenSER



Documentos relacionados
Tutorial de instalación

Servidor Local (MYSQL)

INSTALACIÓN DE GATEWAYS SIP

Copias de seguridad con SQL Server 2005 WhitePaper Febrero de 2008

TUTORIAL DE INSTALACIÓN Y CONFIGURACIÓN SERVIDOR LOCAL (MYSQL) Facturar en Línea

Manual para la instalación del cliente de correo electrónico Mozilla Thunderbird.

Guía para publicar su equipo en Internet.

Al ejecutar esta aplicación tenemos lo siguiente: Pulsamos en Wizard mode y nos aparece lo siguiente:

Servidor de correo en Linux/ubuntu

SERVIDOR WEB. Servidores web IIS (Windows) / Apache (Windows y Linux)

MANUAL DE CREACIÓN DE CARPETAS PARA ACCESO POR FTP DE CLIENTES EN UN NAS

Sistema Integrado de Control de Presencia Dactilar

PROCESO DE INSTALACIÓN Y CONFIGURACIÓN DE APACHE, PHP Y MySQL

Guía para la configuración de Mail de Mac para la plataforma de Gmail Contenido

egarante Configuración de una cuenta de correo del servicio eginbox en una cuenta existende de Gmail

Manual De Instalación MySQl 5.1 MANUAL DE INSTALACIÓN Y CONFIGURACIÓN DE MYSQL

MANUAL CONFIGURACIÓN DDNS DIGIPLEX. Registro de dominio Configuración DDNS en DVR Configuración P2P o NAT Configuración SuperLivePro

PASOS PARA ENLAZAR DVR SAMSUNG SRD A INTERNET:

Pasos para obtener un alojamiento gratuito o Hosting y colgar nuestra pagina Web en Internet.

Instalación y configuración del servidor FTP Filezilla en Windows 2003 Server. Vicente Sánchez Patón I.E.S Gregorio Prieto.

Configurar un Servidor FTP. Serv-U

Formas de llevar a cabo un backup de una base de datos MySQL

Copias de Seguridad con SQL Server Realizar una copia de seguridad de Bases de Datos

RPC sobre HTTPS

SMCPBX10 - directriz de configuración

Instalación de un nodo (cliente) - GIA

CREAR UNA CUENTA DE HOSTING GRATUITA EN UN SERVIDOR WEB HTML Y ACCEDER VÍA PANEL DE ADMINISTRACIÓN CPANEL. (CU00729B)

PRACTICA NO.25: HOW TO INSTALL AND CONFIGURE ELASTIX CENTRAL IP

Paso 1 - Servidor de correo en Ubuntu: Instalar Apache 2


StarWind

UNIDAD DIDACTICA 4 INTEGRACIÓN DE CLIENTES WINDOWS EN UN DOMINIO

ACTIVE DIRECTORY - PROPIEDADES DE USUARIO

OWA POR PUERTO SEGURO (SSL) + FORMS BASED AUTHENTICATION

EXPORTACIÓN E IMPORTACIÓN EN OPENCMS6

Activación de un Escritorio Remoto

FortiReporter

CREAR UNA CUENTA DE HOSTING GRATUITA EN UN SERVIDOR PHP Y ACCEDER VÍA CPANEL Y VÍA FTP. (CU00813B)

Desarrollo Web con PHP

Introducción a SIP y OpenSER

Microsoft Office Project Server 2003

Manual de NetBeans y XAMPP

UNIDAD DIDACTICA 15 CONVERTIR UN EQUIPO LINUX SERVER EN CONTROLADOR DE DOMINIO

Alojamiento web gratuito

Sitios remotos. Configurar un Sitio Remoto

CITRIX - Configurando los Sitios en 4.5

Manual CMS Mobincube

JOOMLA MANUAL USUARIO Creación del portal

INSTALACIÓN Y CONFIGURACIÓN DEL JANA SERVER

Configuración del softphone X-Lite

Tutorial BMS Server Studio UDP

El protocolo IMAP ofrece la descarga de correos en modo sólo lectura, es decir descarga sólo una copia del correo y no permite el borrado.

1. INTRODUCCIÓN MANUAL...6

CONFIGURACIÓN CORREO ELECTRONICO

Configuración de Samba para compartir Archivos

CITRIX Citrix Application Streaming

CONFIGURE SU CUENTA DE CORREO EN MICROSOFT OUTLOOK

GUIA DE USUARIO. CONFIGURACION CORREO ELECTRONICO

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

2. Instalación y configuración del servidor FTP IIS en Windows 2008 Server.

Conexión inalámbrica a un CNC (con puerto Serie RS232C)

Escritorio remoto y VPN. Cómo conectarse desde Windows 7

Monitorización SGBD PostgreSQL

MANUAL DE USUARIO SISTEMA PEAJE

Instalación y configuración de NVSM-1000

Acceder a correo de 1000tentaciones.com a través de web.

Dominios y Subtipos en Geodatabase

Guía de instalación del sistema de documentos laborales Orquídea

VMware VirtualCenter Conectando a una NAS de Openfiler con...

INSTITUTO TECNOLOGICO SUPERIOR DE TEZIUTLAN CONFIGURACION Y ADMON DE REDES

Introducción (I) SAMBA esta formado por un conjunto de aplicaciones que utilizan:

Asterisk & carriers PSTN

Internet Information Server

Configuración de puertos para módem de Infinitum Thomson

INSTALACIÓN PHP+MYSQL CON EASYPHP

Uso del servidor gráfico X en los servidores del CESGA mediante PuTTY y Cygwin

Tutorial de Unity 3D Tema 52 Bases de Datos. Tutorial de Unity 3D. Bases de Datos

MANUAL CONFIGURACIÓN P2P EZVIZ HIKVISION

Primero escoja el dispositivo de entre las opciones disponibles: Encontraremos varios espacios para llenar los más importantes son:

CONFIGURACIÓN DE SOFTPHONES

Fortigate - FSAE - Conector Directorio Activo

Antes de todo, habilita el servidor web y el servidor MySQL. Entonces podrás usar la herramienta integrada de gestión MySQL (phpmyadmin).

HOW TO SOBRE REMOTE ACCESS VPN MODE EN LINUX

Mi primer servidor. Fernando Fernández Consultor Preventa HP ISS

VPN DE MS WINDOWS 2003 CON AUTENTIFICACIÓN EAP, MEDIANTE CERTIFICADOS

Instalando CodeKa v1.0 sobre Bitnami Xamp Stack (para Windows, Linux, OS X y Solaris).

TELEFONÍA CLOUD IPLAN INSTRUCTIVO DE CONFIGURACIÓN X-LITE 3 (WINDOWS)

En principio, comenzaremos a esbozar el menú principal que nos muestra el DVR, tal como se muestra a continuación:

BASES DE DATOS EN VISUAL BASIC ACCESS + SQL

JOOMLA MANUAL USUARIO Creación del portal

INDICE Qué es SQLyog Instalación del programa...4

INSTITUTO TECNOLOGICO DE LAS AMERICAS (ITLA) Nombre: Brayhan E. Acosta Hiciano. Matricula: Materia: Sistema Operativo III

Instituto Tecnológico Las Américas (ITLA) Sistemas Operativos 3 (SO3) Daniel Alejandro Moreno Martínez. Matrícula:

Vielka Mari Utate Tineo Instituto Tecnológico de las Américas ITLA. Profesor José Doñé. En este caso Elastix. PRATICA NO.

4.2- Instalación y Configuración de un Servidor DNS Dnsmasq en Ubuntu sin DHCP

Realizar un Backup Programado con SQL Server 2005 WhitePaper Marzo de 2007

Instalación, Mantenimiento y Administración del PHPWebQuest para una Intranet

Transcripción:

Configuración básica de OpenSER A continuación se muestra un ejemplo comentado de configuración básica de OpenSER, el que se pueden realizar llamadas de dispositivo a dispositivo, estando la configuración almacenada en una Basde de Datos de MySQL. Fichero: openser.cfg debug=3 fork=no log_stderror=yes listen=udp:10.68.42.134 port=5060 children=4 dns=no rev_dns=no 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 "mi_fifo.so" loadmodule "textops.so" loadmodule "xlog.so" loadmodule "auth.so" loadmodule "auth_db.so" loadmodule "uri.so" loadmodule "uri_db.so" loadmodule "domain.so" modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") modparam("auth_db uri_db usrloc", "db_url", "mysql://openser:openserrw@localhost/openser") modparam("auth_db", "calculate_ha1", no) modparam("auth_db", "password_column", "ha1") modparam("auth_db", "password_column_2", "ha1b") modparam("usrloc", "db_mode", 2) modparam("rr", "enable_full_lr", 1) ## Tiempo para la llamada modparam("tm", "fr_inv_timer", 45) modparam("domain", "db_url", "mysql://openser:openserrw@localhost/openser") modparam("domain", "db_mode", 1) ## Habilitamos la cache se la tabla domain

# Main routing logic route # LOG section ## LOG del mensaje recibido xlog("l_info","\n\n$cbg[ $mi $rm $ua ($si:$sp) FROM: $fu TO: $tu ]$Cxx\n"); # Sanity Check Section ## Comprobamos que el mensaje no sea demasiado largo ni halla superado max_forwards if(!mf_process_maxfwd_header("10")) sl_send_reply("483","too Many Hops"); xlog("l_error","\n\n$cwrtoo Many Hops$Cxx\n"); ; if(msg:len > max_len) sl_send_reply("513","message Overflow"); xlog("l_error","\n\n$cwrmessage Overflow$Cxx\n"); # Record Route Section ## Nos ponemos en medio, poniendo una cabecera Record Route, para que los ##mensajes pasen por nosotros. ## Pero si es REGISTER no se debe hacer. if (method!="register") record_route(); ; # Loose Route Section ## Los mensajes pertenecientes a un mismo dialogo deben tomar el camino ##indicado por Record Route if (loose_route()) xlog("l_info","\n\n *** Estamos en loose_route() ***\n\n"); ; # Call Type Processing Section ## Mensajes con destino distinto de nuestro servidor, hacemos relay, pero. ## Ruta de salientes if (!is_uri_host_local()) if (is_from_local())

route(4); else sl_send_reply("403", "Forbidden"); ; ## Mensajes con destino nuestro servidor (por ejemplo llamadas a ##usuarios registrados aquí ## Tenemos que tratar explicitamente el ACK if (method=="ack") xlog("l_info","$cbx Procesando un ACK *not within a dialog*$cxx\n"); ## CANCEL messages can be safely processed with a simple call to t_relay() ##because SER will automatically match the CANCEL message to the original ##INVITE message (stateful). ## Para los CANCEL, con la ruta por defecto vale. else if (method=="cancel") ## Los REGISTER los tratamos a parte (en la ruta 2) else if (method=="register") route(2); ## Los INVITEs a la ruta 3 (autenticacion,...) else if (method=="invite") route(3); ## Resto de casos (OPTIONS, REFER, BYE...) else # Puede que venga a nosotros pero tengamos definido un alias a ##fuera. lookup("aliases") nos da la nueva URI que puede sea!=myself. lookup("aliases"); if (!is_uri_host_local()) xlog("l_info","$crxnot my URI after the alias lookup$cxx\n"); ## A las salientes route(4); ; ## Miramos si existe el destino en nuestra tabla "location". if (!lookup("location")) xlog("l_info","$crx404 User Not Found$Cxx\n"); sl_send_reply("404", "Not Found"); ; ; ## Si hemos llegado hasta aquí enrutamos el mensaje al destino por la ##ruta por defecto.

# Default message handler route[1] ## Indicamos que las respuestas que se originen aqui vayan a la ruta ##onreply_route[1], así sabemos lo que pasa t_on_reply("1"); if(!t_relay()) sl_reply_error(); ; xlog("l_info","$cbxmessage is relayed; now exiting$cxx\n"); # REGISTER message handler route[2] sl_send_reply("100", "Trying"); if (!www_authorize("","subscriber")) xlog("l_info","$cbxse necesita autenticacion para el REGISTER$Cxx\n"); www_challenge("","0"); else if (!check_to()) ## Validate the supplied To: header against the previously ##validated digest credentials. If they do not match then we must ##reject the REGISTER. xlog("l_info","$crx*** check_to() = NO!! ***$Cxx\n"); sl_send_reply("401", "Unauthorized"); ; xlog("l_info","$cbx*** REGISTER correcto ***$Cxx\n"); ## Eliminamos las cabeceras relativas a la autenticacion, porque ya no son ##necesarias y no vamos a ir mandandolas por ahi... consume_credentials(); ## Informo si es un UNREGISTER (RFC3261 10.2.2) if ($hdr(contact)=~";expires=0") ($hdr(expires)=="0") xlog("l_info","$cbx*** UNREGISTER ***$Cxx\n"); ## Guardamos la localización en la tabla "location". if (!save("location")) sl_reply_error(); ;

# INVITE Message Handler route[3] ## Es necesario autenticarse para poder llamar if (!proxy_authorize("","subscriber")) xlog("l_info","$cbxse necesita autenticacion para el INVITE$Cxx\n"); proxy_challenge("","0"); ## Tienen que coincidir el nombre de usuario con el de la cabecera FROM else if (!check_from()) xlog("l_info","$crx*** check_from() = NO!! ***$Cxx\n"); sl_send_reply("403", "Use From=ID"); ; xlog("l_info","$cbx*** INVITE correcto ***$Cxx\n"); consume_credentials(); # Puede que venga a nosotros pero tengamos definido un alias a fuera. #lookup("aliases") nos da la nueva URI que puede sea!=myself. lookup("aliases"); if (!is_uri_host_local()) ## A las salientes route(4); ; if (!lookup("location")) xlog("l_info","$crx404 User Not Found$Cxx\n"); sl_send_reply("404", "User Not Found"); ; ## El usuario se ha autenticado y a quien llama existe en "location" así que lo rutamos. # Outgoing route[4] xlog("l_info","$cbx*** Llamada saliente ***$Cxx\n"); # onreply_route[1] Para ver las respuestas a los INVITE. ## Si un usuario hace un INVITE las respuestas del llamado (Trying, Ringing, OK...) pasan por aquí. onreply_route[1] xlog("l_info","\n\n$cbc[respuesta][ $rs ($rr) desde $si:$sp Peticion: ($rm) ] $Cxx\n");

Fichero: openserctlrc ## your SIP domain SIP_DOMAIN=tu_dominio_o_ip ## database type: MYSQL or PGSQL, by defaulte none is loaded DBENGINE=MYSQL ## database host DBHOST=localhost ## database name DBNAME=openser ## database read/write user DBRWUSER=openser ## database read only user DBROUSER=openserro ## password for database read only user DBROPW=openserro ## database super user DBROOTUSER="root" ## type of aliases used: DB database aliases; UL usrloc aliases ## default: none ALIASES_TYPE="DB" ## control engine: FIFO or UNIXSOCK ## default FIFO CTLENGINE="FIFO" ## path to FIFO file #OSER_FIFO="/tmp/openser_fifo" ## check ACL names; default on (1); off (0) # VERIFY_ACL=1 ## ACL names if VERIFY_ACL is set, only the ACL names from below list ## are accepted # ACL_GROUPS="local ld int voicemail free pstn" ## presence of serweb tables default "no" # HAS_SERWEB="yes" ## verbose debug purposes default '0' # VERBOSE=1 ## do (1) or don't (0) store plaintext passwords ## in the subscriber table default '1' STORE_PLAINTEXT_PW=0

El ejemplo mostrado es funcional, para utilizarlo basta con tener OpenSER instalado con soporte MySQL y seguir los siguientes pasos: 1. Instalar OpenSER con soporte MySQL: http://www.saghul.net/blog/2007/08/13/howto-compilar-openser-con-soporte-paramysql/ 2. Crear las bases de datos, ejecutando: #openser_mysql.sh 3. Crear los ficheros de ejemplo arriba expuestos en /etc/openser 4. Añadir el dominio local (o la IP del servidor) a la tabla 'domain'. 5. Agregar cuentas de usuario: #openserctl add 200 1234 saghul@gmail.com (Nos añade el usuario 200 con la contraseña 1234) 6. Probar! NOTA: Para entender bien el ejemplo conviene estudiar el funcionamiento de OpenSER, para ello, estos recursos pueden resultar de interés: http://www.saghul.net/blog/2007/08/14/recursos-para-aprender-sip-y-openser/