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
Estimado, estoy buscando realizar la integracion de Kamailio con Issabel, la idea es usar tls pero por ahora esta sin tls ni srtp, logre comunicar el kamailio con issabel auntenticando con la tabla suscriber de kamailio para luevo volver a hacer el register contra pjsip de issabel, por algun motivo me rechaza, si le quito el Auth al endpoint por parte de issabel modificando los archivos si registra pero creo que no seria seguro dejar el endpoint sin un auth, si me podrias indicr si puedes ayudarme con la configuracion correcta te lo agradeceria $$$.
Saludos PJ.
Buenas Pablo, déjame que lo analice y te responda
Saludos
Jesus