By

Configurando los clientes SIP

Bueno, vamos a empezar por el principio. Deberemos tener presente el diagrama de red que presenté en el anterior post y por eso lo incluyo también en este.

Para poder utilizar el canal SIP lo primero que tenemos que hacer es configurar las cuentas SIP, utilizadas por nuestros dispositivos VoIP(softphones, tfnos digital y analógico y gateway) para registrarse en nuestra centralita Asterisk. Pero…

¿Qué es SIP?

Session Initiation Protocol o Protocolo de Inicio de Sesión. Es un protocolo desarrollador por el grupo MMUSIC del IETF con el fin de ser el estandar para la iniciación, modificación y finalización de sesiones interactivas de usuario donde interviene audio, video, mensajería instantanea, juegos en linea y realidad virtual. SIP es uno de los protocolos de señalización para voz sobre IP, junto con otros como H.323 e IAX2.

sip.conf

El fichero de configuración del canal sip se encuentra en /etc/asterisk/sip.conf y por tanto será donde configuremos las cuentas SIP. Su formato es similar al de los ficheros .ini; por lo que se encuentra dividido en secciones conocidas en Asterisk como contextos. En el fichero sip.conf hay un contexto predefinido, se llama [general]:

En el contexto [general] definiremos parámetros que se aplicarán en todos los contextos posteriores. Algunos de los parámetros generales del canal SIP son:

  • port: es el puerto que utilizará Asterisk para escuchar conexiones SIP entrantes. El puerto SIP por defecto es el 5060.
  • binaddr: interfaz de red que utilizará Asterisk para atender las conexiones SIP entrantes. El valor por defecto es 0.0.0.0, es decir, escucha en todas las interfaces de red disponibles.
  • context: contexto que se aplica a las llamadas entrantes. Se aplica cuando una cuenta SIP no tiene definido un contexto.
  • videosupport: soporte de video en SIP. Permite los valores 'yes' o 'no'.
  • language: lenguaje utilizado por defecto para todos los clientes SIP.
  • allow: especificamos los códecs de sonido que vamos a utilizar. Permite valores como 'all', 'alaw', 'ulaw', 'gsm', etc.
  • disallow: códecs de audio que no vamos a permitir. Cuando vamos a restringir los códecs de audio, lo mejor es siempre prohibirlos todos (disallow=all) y luego permitir aquellos que queramos.
  • nat: habilitamos o deshabilitamos el soporte de nat para la extensión.

Un ejemplo para el contexto [general] en /etc/asterisk/sip.conf podría ser la siguiente:

[general]
port=5060
bindaddr=0.0.0.0
context=normal
videosupport=no
language=es
disallow=all
allow=alaw,gsm

Definiendo los clientes SIP

Como he comentado anteriormente, antes de que un cliente SIP pueda enviar o recibir llamadas a través de Asterisk, debe ser declarado y configurado en el fichero /etc/asterisk/sip.conf. Cada cliente SIP se configurará como si de otro contexto / sección se tratase, y podemos especificar varios parámetros. Hasta ahora los que he utilizado han sido los siguientes:
  • type: define la clase de conexión que tendrá el cliente. Hay tres tipos de clientes SIP:
    1. peer: solo puede recibir llamadas.
    2. user: solo puede realizar llamadas.
    3. friend: puede recibir y realizar llamadas.
  • callerid: es el identificador del cliente, es decir, el nombre que aparecerá cuando se realice una llamada.
  • username: usuario con el que nos conectaremos al servidor Asterisk.
  • secret: contraseña con la que se realizará la autenticación en Asterisk junto con el username.
  • context: contexto asociado al cliente en el dialplan de Asterisk, es decir, contexto que se aplicará en el fichero extensions.conf del cual hablaremos más adelante.
  • dtmfmode: Dual-Tone Multi-Frequecy (DTMF) se refiere a la marcación por tonos. Normalmente le especifico que use el estandar rfc2833.
  • qualify: si se establece a ‘yes’ podremos monitorizar la extensión. Esta configuración no es muy recomendable cuando tenemos muchas extensiones.

Bien! Ya tenemos lo suficiente como para empezar a registrar cada uno de los clientes SIP :-) De esta forma, para registrar el teléfono digital cuya extensión es 1001 tendremos que añadir la siguiente configuración al fichero /etc/asterisk/sip.conf:

[1001]
callerid=digital
username=1001
secret=1001
type=friend
host=dynamic
context=normal
qualify=yes
pickupgroup=1
limitonpeers=yes
call-limit=4
dtmfmode=rfc2833
nat=yes

Como una breve anotación tengo que decir que en la cabecera de la sección, en este caso [1001], podemos poner cualquier cadena, creo que sin espacios, pero yo opto por poner el número de la extensión, me es más cómodo al leer la configuración.

Una que hemos configurado un cliente, los demás son coser y cantar. Vamos a registrar un nuevo cliente SIP, por ejemplo, mi portatil cuyo username es mviera y su extensión será 1003. La configuración en sip.conf sería la siguiente:

[1003]
callerid=mviera
username=1003
secret=1003
type=friend
host=dynamic
context=normal
qualify=yes
pickupgroup=1
limitonpeers=yes
call-limit=4
dtmfmode=rfc2833
nat=yes

Fácil ¿no? Pero ¿no os resulta esta última configuración un poco redundante? Algunos ya se habrán dado cuenta. En realidad esta última configuración es igual que la anterior, solamente cambian los parámetros callerid, username y secret. ¿Cierto?

Para ello, Asterisk en su últimas versiones permite el uso de máscaras. Esta funcionalidad nos permite crear una sección “padre” donde configuraremos todos los parámetros comunes. De esta forma podremos “heredar” parte de la configuración, pudiendo sobreescribir o incluir nuevos parámetros que nos sean necesarios. Utilizaremos (!) junto al nombre de la sección, para especificar que una sección actuará como una máscara. Ejemplo: [nombre_seccion](!).

Ya que sabemos sobre la existencia de las máscaras en Asterisk, vamos a modificar la configuración actual en /etc/asterisk/sip.conf. Crearemos una sección [normal] con los parámetros comunes y las extensiones 1001 y 1003 “heredarán” de esta sección.

[normal](!)
type=friend
host=dynamic
context=normal
qualify=yes
pickupgroup=1
limitonpeers=yes
call-limit=4
dtmfmode=rfc2833
nat=yes

Para especificar que una sección “hereda” de otra que actúa como máscara especificaremos el nombre de la máscara a continuación del nombre de la sección, es decir, de la siguiente forma: [nombre_seccion](nombre_mascara). Por lo que la configuración de las extensiones 1001 y 1003 se reduciría a lo siguiente:

[1001](normal)
callerid=digital
username=1001
secret=1001

[1003](normal)
callerid=mviera
username=1003
secret=1003

¿Guay no? Ahora solo nos queda reiniciar el servicio Asterisk

# /etc/init.d/asterisk restart

Nota: cuidado al reiniciar el servicio Asterisk cuando modifiquemos la configuración. Si utilizamos restart todas las llamadas activas se cortarán. Asi que mejor utilizad reload ;-)

Ojo! Todavía no podemos hacer llamadas. Hasta ahora solo hemos configurado los clientes que podrán conectarse a Asterisk, lo próximo será configurar el plan de marcado o dialplan. Pero esto ya es tema para otro post ;-)

Un saludo!