Antes de nada comentar que Kamailio es un SIP-Proxy y su configuraciones, no tienen nada que ver con las de centralitas basadas en Asterisk.
Para registrar un trunk en Kamailio tienes 2 opciones:
– Que tu PBX se autentique con un usuario SIP que
configures en Kamailio
– Autenticado por IP, en cuyo caso se comprueba la IP origen
(variable $si), para dejar pasar los requests si vienen desde la IP del Trunk.
En el siguiente tutorial , veremos como instalar y configurar kamailio, generar y logar usuarios, tras esto crearemos un troncal con una centralita asterisk.
Equipos:
1 – Ubuntu(64) donde instalaremos kamailio / IP:192.168.0.107
2 – Centos7(64) con Asterisk 13 / IP:192.168.0.102
Pongamonos a instalar Kamailio en nuestro Ubuntu
1 – Instalamos Kamailio con el modulo de BBDD sqlite3:
sudo apt-get install kamailio kamailio-sqlite-modules sqlite3
2 – Configuramos el uso de SQLite3:
sudo vim /etc/kamailio/kamctlrc
añadimos en kamctlrc
DBENGINE=SQLITE DB_PATH=”/tmp/kamailio.db”
Ya de paso tambien vamos a configurar el SIP_DOMAIN
SIP_DOMAIN=192.168.0.107
3 – Creamos la BBDD
sudo kamdbctl create sudo chown kamailio:kamailio /tmp/kamailio.db
4 – Configuramos Kamailio
sudo vim /etc/kamailio/kamailio.cfg
Añadimos al principio
#!define WITH_SQLITE #!define WITH_AUTH #!define WITH_USRLOCDB
En la seccion Defined Values
#!ifdef WITH_SQLITE #!ifndef DBURL #!define DBURL "sqlite:///tmp/kamailio.db" #!endif #!endif
En la seccion de Modulos
#!ifdef WITH_SQLITE loadmodule "db_sqlite.so" #!endif
Tambien establecemos el alias
alias=192.168.0.107:5060
Esto es todo en Kamailio.cfg.
Ahora vamos a
sudo vim /etc/default/kamailio
Y añadimos
RUN_KAMAILIO=yes USER=kamailio GROUP=kamailio
5 – Creamos un usuario 5001 con passw 5001
sudo kamctl add 5001 5001
Procedemos a logarlo en un xlite:
Si todo ha ido bien, debes tener al peer 5001 logado de forma correcta en el softphone al servidor Kamailio.
Ahora vamos a configurar un Troncal entre Kamailio y un Asterisk, asi como configurar un dialplan para que las llamadas de la extensiones del Asterisk 192.168.0.102 lleguen a las extensiones del Server Kamailio.
Configuramos el trunk en /etc/asterisk/sip.conf:
[kamailio] type=friend context=prueba insecure=port,invite host=192.168.0.107 qualify=yes username=kamailio port=5060
Comprobamos que levanto de forma correcta:
[root@localhost ~]# asterisk -rx "sip show peers" | grep 192.168.0.107 kamailio/kamailio 192.168.0.107 Auto (No) No 5060 OK (1 ms)
Configuramos el dialplan para que enlace las llamadas hacia Kamailio:
vi /etc/asterisk/extensions.conf exten => _500X,1,Answer exten => _500X,n,Dial(SIP/kamailio/${EXTEN}) exten => _500X,n,Hangup
De esta forma todas las llamadas que comiencen por 500X entraran a esta regla.
Logamos en el mismo softphone un peer del asterisk 192.168.0.102, yo elegi 4003, recordemos, peer 4003 logado en Pbx con asterisk 192.168.0.102, peer 5001 logado en Kamailio 192.168.0.107 :
Notese que deja por defecto el peer 4003, de esta forma, podemos realizar una llamada desde este peer al 5001 y si todo funciona correctamente, la llamada debe entrarnos al sipphone desde el 4003.
Realizamos una llamada al 5001, desde el 4003 y voila:
Tenemos una llamada entrante, del 4003, por el login del 5001, nuestro asterisk esta transfiriendo las llamadas a nuestro kamailio.
Se tiene que tener en cuenta que dado que la BBDD de sqlite3 se ha creado en /tmp/ si reiniciamos la maquina, esta informacion se pierde, habra que volver a crear la BBDD y los usuarios en sqlite3:
sudo kamdbctl create sudo chown kamailio:kamailio /tmp/kamailio.db sudo kamctl add 5001 5001
Saludos
really nice guide. I am trying to integrate Asterisk with Kamailio in a single box. Could you share some information on how to achieve it please? Running Ubuntu 18.04 server 64 bit, with Kamailio 5.2 and Siremis.
Thanks for comment!!!
I will try to generate a manual, I will let you know.
Jesus
Hola, muy interesante.
Estoy haciendo una tarea de la universidad, quiero hacer una troncal SIP entre Kamailio e Issabel y quisiera saber si me podrias ayudar en ello.
Buenos dias Carlos, encantado de ayudarte, si puedes proporcionar mas informacion de en que paso te encuentras y cuales son las dificultades que has encontrado.
Segun mi experiencia estos son los pasos que creo deberias seguir, te recomiendo deplegar un laboratorio incialmente con VirtualBox o Docker en local:
– Desplegar y configurar Issabel PBX.
– Desplegar y configurar Kamailio.
– Crear un Peer en Issabel PBX y otro en Kamailio y confirmar que registran ok.
– Crear un SIPtrunk entre Kamailio e Issabel (dependiendo de la configuracion debemos realizar mas o menos trabajo, si la comunicacion de red es correcta entre las 2 IP’s y no vas a utilizar user/password para el trunk, solo sera necesario realizar la configuracion del SIPtrunk en Issabel, en caso contrario sera necesario configurar las credenciales en Kamailio)
– Crear un Dialplan en Issabel PBX para cierto prefijo, que trasfiera las llamadas al peer registrado en Kamailio
– Crear una ruta en Kamailio (puede usar el modulo carrier route «https://kamailio.org/docs/modules/5.1.x/modules/carrierroute.html«), que trasfiera las llamadas al peer registrado en Issabel PBX.
– Registrarte con un softphone con las 2 lineas y verificar que el laboratiorio funciona de forma correcta
Una vez realizado este despliegue con exito, se podria seguir avanzando por ejemplo securizando las comunicaciones con TLS/SRTP, para lo que seria necesario utilizar openSSL y Let’s encrypt en nuestros servidores.
Saludos
Jesus
Hola estimado Jork, muchas gracias por proporcionarme los pasos a seguir para hacer la troncal SIP, soy principiante en el uso de Issabel y Kamailio, de momento estoy intentando hacer extensiones en kamailio, supongo que puedo crearlas siguiendo esos mismos pasos verdad? de momento he hecho hasta el paso 5 y al ejecutar este comando «sudo kamctl add 5001 5001» me da un error y no me deja crear la extension 5001, estoy usando el editor «nano» y ubuntu 22.04, si necesitas mas informacion estare pendiente de brindarte la informacion necesaria. Saludos