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