En este apartado se pretende ser una guía de una instalación básica de un servidor SIP con Kamailio bajo la distribución de Fedora Server 27, por supuesto que también funciona para la versión Workstation. Si pretendes instalar otra distribución Kamailio ofrece algunos paquetes y el código fuente para usarlo prácticamente el cualquier entorno GNU/Linux y Unix. Dando hincapié de que es Kamailio como se describe en el sitio oficial:
Kamailio is an Open Source SIP Server released under GPL, able to handle thousands of call setups per second. Kamailio can be used to build large platforms for VoIP and realtime communications – presence, WebRTC, Instant messaging and other applications.
Como se había indicado sera una guiá para una instalación básica de Kamailio, este contenido realmente sera una copia descarada de la documentación que ofrece Kamailio para instalarlo en Debian, así que solamente se ha hecho una adaptación para ser instalado en Fedora Server 27.
Comandos de instalación
Comencemos agregando el repositorio oficial, abriremos una terminal y escribiremos lo siguiente:
# dnf config-manager --add-repo=http://download.opensuse.org/repositories/home:/kamailio:/v5.1.x-rpms/Fedora_27/home:kamailio:v5.1.x-rpms.repo
Refrescamos los repositorios:
# dnf check-update
En seguida instalaremos Kamailio y aparte un modulo para trabajar con MariaDB, tipeamos el siguiente comando para instalar los paquetes necesarios:
# sudo dnf install kamailio-websocket kamailio kamailio-ims kamailio-mysql mariadb mariadb-server -y
Vamos ha indicar que el servidor de base de datos MariaDB inicie en cada arranque del sistema pero también lo vamos a iniciar en este momento para trabajar con el:
# systemctl enable mariadb; systemctl start mariadb
Estando en marcha MariaDB ahora iniciamos el asistente:
# mysql_secure_installation
Asignaremos una contraseña para el gestor de base de datos
Set root password? [Y/n] y Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y
Archivos de configuración
Los archivos de configuración están ubicados en el directorio /etc/kamailio/
.
kamctlrc
El /etc/kamailio/kamctlrc
es el archivo de configuración para las herramientas kamctl
y kamdbctl
. Buscaremos editaremos SIP_DOMAIN
donde agregaremos el nombre de dominio o la dirección IP del servidor
Establezca también el DBENGINE
el motor de base de datos, en este caso sera MYSQL
. Muy importantes son las contraseñas para conectarse MySQL
al servidor, respectivamente DBRWPW
y DBROPW
. Por defecto, sus valores son kamailiorw
y kamailioro
. Debe cambiarlos antes de ejecutarlos kamdbctl create
(el paso detalla la sección Crear base de datos ).
SIP_DOMAIN=172.24.1.52 #IP del servidor DBENGINE=MYSQL #La base de datos que se trabajara
kamailio.cfg
El /etc/kamailio/kamailio.cfg
es el archivo de configuración para kamailio
. Edítelo para habilitar algunas de las funciones que se incluyen con él.
Para habilitar el uso del MySQL
back-end del servidor, la autenticación del usuario y la ubicación persistente del usuario, agregue después de la primera línea:
#!define WITH_MYSQL #!define WITH_AUTH #!define WITH_USRLOCDB
Crear base de datos
Para crear la estructura de la base de datos que necesita Kamailio
, ejecute:
# kamdbctl create
El nombre de la base de datos creado en MySQL
es kamailio
. Se crearon dos usuarios de acceso al servidor MySQL
- kamailio – (con la contraseña establecida por
DBRWPW
enkamctlrc
) – usuario que tiene plenos derechos de acceso a la base de datoskamailio
- kamailioro – (con la contraseña establecida por
DBROPW
enkamctlrc
) – usuario que tiene derechos de acceso de solo lectura a la base de datoskamailio
El acceso para los dos usuarios está restringido a localhost
, pero como se indicó anteriormente, se recomienda cambiar sus contraseñas predeterminadas.
Scripts de inicio
Primeramente reiniciaremos Fedora Server 27:
# reboot
Iniciamos Kamailio:
# service kamailio start Redirecting to /bin/systemctl start kamailio.service
Habilitamos el puerto para que se pueda comunicar fuera del host o de Internet:
# firewall-cmd --permanent --add-service=sip; firewall-cmd --reload
Agregar suscriptores
Para agregar suscriptores (usuarios), puede usar el comando kamctl
:
# kamctl add 2018001 secret001
Luego puede configurar su teléfono para que se registre en Kamailio
usando el nombre de usuario y la contraseña establecidos en el comando anterior.
Mostrar suscriptores
Puedes ver los suscriptores registrado en Kamailio desplegando la tabla subscriber de la base de datos tipeando el siguiente comando:
# kamctl db show subscriber which: no gdb in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/) +----+----------+--------------+-----------+----------------------------------+----------------------------------+---------------+------+ | id | username | domain | password | ha1 | ha1b | email_address | rpid | +----+----------+--------------+-----------+----------------------------------+----------------------------------+---------------+------+ | 1 | 2018001 | 172.24.1.52 | secret001 | 9feb5892a47453494ee3629a4c28dbb0 | bfe55e62718d5964daf72adc42fb2c4a | NULL | NULL | +----+----------+--------------+-----------+----------------------------------+----------------------------------+---------------+------+
En el siguiente video se ejemplifica el proceso de registro de usuarios para luego realizar una comunicación VoIP entre dispositivos.
Referencia: