martes, 10 de noviembre de 2009

Instalación de Kamailio

Siguo los pasos indicados para la instalación de Kamailio en Debian. Hay algunos paquetes necesarios para la instalación de módulos que no se indican en las instrucciones. Estos se deducen por los errores que da al compilar.

Aunque la instalación inicial la voy a realizar sobre un portátil con Ubuntu, los paquetes serán los mismos o reconocibles por los paquetes necesarios para Debian. Lo instalo primero sobre el portátil a modo de práctica para después poder realizar una instalación más límpia en el sistema definitivo. Éste será un servidor en una DMZ accesible permanentemente desde Internet, la red de usuarios y al gateway conectado al PRI.


Instalo los paquetes necesarios con el comando:

sudo apt-get install git-core gcc flex bison make

Para poder compilar los módulos son también necesarios los paquetes:


sudo apt-get install libmysqlclient-dev libpq-dev libexpat1-dev libxml2-dev libradiusclient-ng-dev libcurl4-gnutls-dev libconfuse-dev libpcre3-dev


De estos gcc y make ya se encuentran instalados. Y el resto requiere una serie de paquetes dependientes que se instalan con ellos.


Creo el directorio donde almacenaré el checkout del repositorio GIT:


sudo mkdir -p /usr/local/src/Kamailio


Inicializo el repositorio local y realizo el checkout:

vicente@MBP-lnx:/usr/local/src/sip-router.org$ sudo git clone --depth 1 git://git.sip-router.org/sip-router Kamailio
Initialized empty Git repository in /usr/local/src/sip-router.org/sip-router/.git/
remote: Counting objects: 16343, done.
remote: Compressing objects: 100% (10953/10953), done.
remote: Total 16343 (delta 10858), reused 8503 (delta 5122)
Receiving objects: 100% (16343/16343), 10.78 MiB | 321 KiB/s, done.
Resolving deltas: 100% (10858/10858), done.



vicente@MBP-lnx:/usr/local/src/sip-router.org$ cd Kamailio
vicente@MBP-lnx:/usr/local/src/sip-router.org/sip-router$ sudo git checkout -b kamailio_3.0 origin/kamailio_3.0
Branch kamailio_3.0 set up to track remote branch kamailio_3.0 from origin.
Switched to a new branch 'kamailio_3.0'

Configuro el make y añado el módulo para mysql, RADIUS, postgres, jabber y otros:


vicente@MBP-lnx:/usr/local/src/Kamailio-3.0.0/Kamailio$ sudo make cfg
normal Makefile.defs exec
target architecture , host architecture
making config...
rm -f modules.lst
make modules.lst
Makefile.defs defs skipped
make[1]: se ingresa al directorio `/usr/local/src/Kamailio-3.0.0/Kamailio'
saving modules list...
make[1]: se sale del directorio `/usr/local/src/Kamailio-3.0.0/Kamailio'


Edito el fichero modules.lst y elimino del listado en la variable exclude_modules mysql, db_mysql, postgres, db_postgres, xml_rpc, lcr, dialplan, peering, carrierroute, auth_radius, misc_radius, acc_radius, jabber. Xml_rpc creo que es necesario para la comunicación con siremis.

make all y make install


Se copian los ejecutables kamailio,  kamctl,  kamdbctl,  sercmd en el directorio /usr/local/sbin.

Para preparar la base de datos MySQL edito el fichero /usr/local/etc/kamailio/kamctlrc y elimino el comentario de la línea DBENGINE=MYSQL. También cambio el dominio y quito el comentario a SIP_DOMAIN=wipzona.es. Una vez creada la base de datos y cambiados los password de los usuarios con permisos de lectura y lectura/escritura, hay que volver a editar este fichero para modificarlos.

Creo la base de datos con el comando /usr/local/sbin/kamdbctl create el script hace una serie de preguntas sobre si crear las tablas para una serie de módulos. Le respondo que "y" a todas.

La base de datos que crea se llama openser por razones históricas. Utilizo PHPmyadmin para cambiar los password de los usuarios openser y openserrw:


Donde cambio los password tanto para el localhost como para el resto %.

Ahora hay que editar el fichero de configuración de Kamailio /usr/local/etc/kamailio/kamailio.cfg para indicarle que utilice MySQL y los módulos de autentificación y localización de usuarios. El soporte para el resto de módulos compilados se irá añadiendo a medida que se avance en la configuración. Añado las líneas siguientes en la sección inicial del fichero:
#!define WITH_MYSQL
#!define WITH_AUTH
#!define WITH_USRLOCDB

También hay que cambiar los password utilizados para los usuarios de la base de datos. Para ello reemplazo en todas las ocurrencias de modparam("acc", "db_url", "mysql://openser:@localhost/openser") el password que aparece por el que se le ha puesto al usuario openser en los privilegios de la base de datos. Y se hace lo mismo con las ocurrencias del usuario openserrw.

Se tienen que volver a editar el fichero /usr/local/etc/kamailio/kamctlrc y cambiar las sección:

## database read/write user
DBRWUSER=openser

## password for database read/write user
DBRWPW=
## database read only user
DBROUSER=openserro

## password for database read only user
DBROPW=


Con los nuevos password para que la utilidad kamdbctl pueda crear nuevos usuarios en la base de datos y pueda interrogarla.



El servicio kamailio se ejecuta con el usuario kamailio por lo que hay que crear este usuario y grupo: useradd kamailio

En el repositorio también están los scripts utilizados por Debian para el arranque y parada. Estos sirven para Ubuntu también.

Los script que se proporcionan hay que copiarlos en las hubicaciones correctas y con los permisos de ejecución:

-Copio el fichero /usr/local/src/Kamailio-3.0.0/Kamailio/pkg/kamailio/debian/kamailio.init en el directorio /etc/init.d/ con el nombre kamailio. Le doy permisos de ejecución con chmod 755 kamailio. Y lo edito y modifico la línea DAEMON=/usr/local/sbin/kamailio para que busque el ejecutable en /usr/local en lugar de /usr que tiene por defecto.

  También aparece una llamada explicita al fichero de configuración /etc/kamailio/kamailio.cfg en el script de arranque que hay que modificar por /usr/local/etc/kamailio/kamailio.cfg para el que utilice el instalado por esta versión compilada.



-El fichero /usr/local/src/Kamailio-3.0.0/Kamailio/pkg/debian/kamailio.default lo copio en /etc/default/kamailio y modifico RUN_KAMAILIO=yes para que permita lanzarlo con el script y con update-rc.d kamailio defaults 99 se crean las entradas en los niveles de arranque y parada.

No es necesario crear el directorio /var/run/kamailio ya que el script de arranque lo crea si no existe cada vez que arranca Kamailio. Esto es importante porque en Utuntu el directorio /var/run se monta sobre un ramdisk que se borra cada vez que se reinicia el sistema.

En este punto ya se puede arrancar el servidor con:

vicente@MBP-lnx:/usr/local/sbin$ sudo /etc/init.d/kamailio start
Starting kamailio: kamailioloading modules under /usr/local/lib/kamailio/modules_k/:/usr/local/lib/kamailio/modules/
Listening on
             udp: 127.0.0.1:5060
             udp: 192.168.88.254:5060
             tcp: 127.0.0.1:5060
             tcp: 192.168.88.254:5060
Aliases:
             tcp: MBP-lnx.local:5060
             tcp: localhost:5060
             udp: MBP-lnx.local:5060
             udp: localhost:5060

Y añadir el primer usuario con:

vicente@MBP-lnx:/usr/local/sbin$ sudo kamctl add prueba t3st
new user 'prueba' added




Lo que crea el usuario prueba con el password t3st

No hay comentarios:

Publicar un comentario

 
Creative Commons License
Migración de un sistema de VoIP propietario a software libre by Vicente Ferrando Berenguer is licensed under a Creative Commons Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 España License