Enviado por admin el
Actualizado el 09 de Septiembre 2011
Paralelamente a los artículos relacionados con la versión 1.8 de Asterisk, con este articulo abrimos un nuevo hilo dedicado a la instalación y configuración de un Proxy SIP. En este caso OpenSIPS. Un Proxy SIP gestiona toda la señalización SIP entre usuarios (UAC) para que estos puedan establecer una comunicación audio/video y, en general, comunicarse entre ellos. Como Guía seguiré este libro y algunos artículos encontrados en Internet.
Aunque Asterisk PBX es una buena herramienta para gestionar llamadas, troncales y servicios, en algunos escenarios en los que se necesite enrutar un alto numero de llamadas, balanceo de carga, mensajería instantánea, alta disponibilidad y escalabilidad), tendremos que pensar en instalar un Server Proxy SIP. En este articulo veremos como instalar OpenSIPS en un servidor Linux CentOS 5.5
OpenSIPS es un Proxy SIP (open source) completamente conforme a la recomendaciones definidas en la RFC3261 (Protocolo SIP).
Principales características de OpenSIPS:
- velocidad: puede manejar miles de llamadas al segundo
- extrema flexibilidad: puedes ser configurado para cualquier tipo de escenario
- el núcleo es extremamente ligero y permite añadir funcionalidades a través de módulos adicionales
Además como Proxy, OpenSIPS se utiliza para:
- Balanceo de carga
- Mensajería instantánea (XMMP Gateway)
- Servidor de presencia
- Junto a Media Proxy o RTP Proxy, gestiona el NAT
Instalaremos OpenSIPS desde las fuentes. Para hacerlo necesitamos instalar unos paquetes requeridos:
yum install mysql mysql-devel mysql-server gcc gcc-c++ bison bison-devel flex make expat expat-devel unixODBC-devel net-snmp-devel
yum install subversion libxml2 libxml2-devel openssl-devel xmlrpc lynx pcre pcre-devel
Instalamos desde las fuentes un cliente Radius:
cd /usr/src
wget http://ftp.iptel.org/pub/radiusclient-ng/radiusclient-ng-0.5.5.tar.gz
tar -xf radiusclient-ng-0.5.5.tar.gz
cd radiusclient-ng-0.5.5
./configure --prefix=/usr
make
make install
Ahora podemos descargar la versión 1.6.3 de OpenSIPS y compilar:
cd /usr/src
svn co https://opensips.svn.sourceforge.net/svnroot/opensips/branches/1.6 opensips_1_6
Entramos en la carpeta:
cd opensips_1_6
Modificamos las lista de módulos que instalaremos:
nano Makefile
modificando estas líneas:
exclude_modules?= b2b_logic jabber cpl-c xmpp rls mi_xmlrpc xcap_client \
db_mysql db_postgres db_unixodbc db_oracle db_berkeley aaa_radius \
osp perl snmpstats perlvdb carrierroute mmgeoip \
presence presence_xml presence_mwi presence_dialoginfo \
pua pua_bla pua_mi pua_usrloc pua_xmpp pua_dialoginfo \
ldap h350 identity regex memcached db_http json
Para que queden:
exclude_modules?= b2b_logic cpl-c rls mi_xmlrpc xcap_client \
db_postgres db_oracle db_berkeley \
osp perl perlvdb carrierroute mmgeoip \
pua pua_bla pua_mi pua_usrloc pua_xmpp pua_dialoginfo \
ldap h350 identity regex memcached db_http json
Guardamos los cambios y compilamos:
make prefix=/ all
make prefix=/ install
Ahora configuramos OpenSIPS para que arranque en automático:
cd packaging/fedora
nano opensips.init
Cambiamos esta línea
oser=/usr/sbin/opensips
para que quede
oser=/sbin/opensips
Guardamos los cambios
chmod 755 opensips.init
cp opensips.init /etc/init.d/opensips
chkconfig --add opensips
chkconfig opensips on
Averiguamos:
chkconfig --list | grep opensips
opensips 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Terminada la instalación encontraremos unas carpetas nuevas en nuestro sistema:
/etc/opensips - contiene los archivos de configuración de OpenSIPS
/lib/opensips/modules - contiene todos los módulos instalados
/sbin - contienes los programas de OpenSIPS
De manera predefinida OpenSIPS guarda los registros de actividad en el archivo /var/log/messages. Para que los registros se guarden en un archivo dedicado tenemos que seguir estos pasos:
instalar syslog:
yum install syslog
modificar el archivo de configuración de syslog:
nano /etc/syslog.conf
añadiendo al final del archivo esta línea:
local0.* -/var/log/opensips.log
Entre local0.* y /var/log/opensips.log para movernos utilizar la tecla tabulador
Guardamos los cambios y creamos el archivo opensips.log
touch /var/log/opensips.log
Arrancamos syslog
/etc/init.d/syslog start
Luego OpenSIPS
/etc/init.d/opensips start
Miramos si los registros efectivamente están en ese archivo:
tail -f /var/log/opensips.log
Aug 29 12:32:00 opensips /sbin/opensips[18044]: INFO:core:main: using 1 Mb private memory per process
Aug 29 12:32:00 opensips /sbin/opensips[18044]: NOTICE:signaling:mod_init: initializing module ...
Aug 29 12:32:00 opensips /sbin/opensips[18044]: INFO:sl:mod_init: Initializing StateLess engine
Aug 29 12:32:00 opensips /sbin/opensips[18044]: INFO:tm:mod_init: TM - initializing...
Aug 29 12:32:00 opensips /sbin/opensips[18044]: INFO:maxfwd:mod_init: initializing...
Aug 29 12:32:00 opensips /sbin/opensips[18044]: INFO:usrloc:ul_init_locks: locks array size 512
Aug 29 12:32:00 opensips /sbin/opensips[18044]: INFO:registrar:mod_init: initializing...
Aug 29 12:32:00 opensips /sbin/opensips[18044]: INFO:textops:mod_init: initializing...
Aug 29 12:32:00 opensips /sbin/opensips[18044]: INFO:acc:mod_init: initializing...
Aug 29 12:32:00 opensips /sbin/opensips[18044]: INFO:core:probe_max_receive_buffer: using a UDP receive buffer of 255 kb
"Por defecto OpenSIPS viene con dos extensiones configuradas" - Desafortunadamente esta frase es totalmente falsa. Opensips por defecto acepta el registro de cualquier tipo de extensión con cualquier tipo de contraseña.
- 1000 con contraseña 1000
- 1001 con contraseña 1001
Podemos configurar dos cliente sip y conectarnos a OpenSIPS. Luego en el monitor ver los resultados:
opensipsctl monitor
UsrLoc Stats:
usrloc:registered_users = 2
usrloc:location-users = 2
usrloc:location-contacts = 3
usrloc:location-expires = 0
Podremos llamar de un cliente a otro pero, si están detrás de un NAT no escucharemos nada.
En el próximo articulo empezaremos a "jugar" con el archivo de configuración de OpenSIPS
5 comentarios
Muchas Gracias
Enviado por betovim3 (no verificado) el
Hola, muchas gracias por esta guia de instalación, no se si podrias ayudarme con un problema despues de modificar el archivo makefile del openSIPs y ejecutar make prefix=/ all la consola me lanza un mensaje recursivo y se queda con el siguiente mesaje.
make: Atención: El archivo `Makefile' tiene una hora de modificación 1,3e+04 en el futuro
bison -d -b cfg cfg.y
cfg.y: conflictos: 1 desplazamiento(s)/reducción(ones)
bison -d -b cfg cfg.y
cfg.y: conflictos: 1 desplazamiento(s)/reducción(ones)
flex cfg.lex
Como ya dije se lanza una y otra vez y no puedo pasar de ese punto de la instalación, te agradezco de nuevo por tu ayuda.
Saludos,
Victor.
Re: Muchas gracias
Enviado por admin el
Hola,
el problema parece ser este:
make: Atención: El archivo `Makefile' tiene una hora de modificación 1,3e+04 en el futuro
Parece que tu servidor cuando modifica el Makefile le asigna una fecha y hora puesta en el futuro.
Yo haría dos pruebas:
Si te sale nuevamente el error modificar la fecha del archivo Makefile con el comando touch
Saludos
Pregunta básica
Enviado por aliex2001 (no verificado) el
Hola como estas
He leído tu posteo y me ha parecido bien instructivo. Apenas voy leyendo cosas sobre Opensips y aun aprendo con asterisk pero tengo algunas dudas que quizás son bastante básicas, las enumero adelante.
1-. Asumiendo que tengo un asterisk instalado deberia instalar opensips en el mismo servidor asterisk o seria recomendable dedicar un servidor solo para opensips.
2-. En el caso de estar separados, las placas E1 o FXO/FXS deberían estar en que servidor.
3-. Como deberia ser la configuracion adecuada de un asterisk con opensips si tengo una central analogica una digital.
De ante mano muchas gracias
Duda sobre opensips y a2billing
Enviado por Gereson (no verificado) el
Hola amigo, gracias por tu blog. Tu libro sobre instalacion de A2B me sirvio mucho. Ahora veo que publicaste tambien sobre opensips. Mi pregunta es ... abordaras en algun momento en la instalacion de A2B con opensips en tu libro ??? hay muy poca informacion sobre esta implementacion.
Agradezco tu tiempo y tu blog.
Saludos
Re: Duda sobre opensips y a2billing
Enviado por admin el
Hola,
estoy trabajando en organizar un curso de OpenSIPs pero será dentro de 6-7 meses.
En ese curso se verá también la parte de integración de OpenSIPs con A2Billing.
Si la cosa es urgente, le podemos brindar asesoría para ese tipo de integración ya que la tenemos implementada desde algunos meses en nuestros servidores.
Saludos