Cluster para Novatos Parte I : Keepalived + Asterisk / Kamailio

16 Jul

En los siguientes artículos  voy a abordar diferentes aspectos para clusterizar o mejorar el comportamiento en alta disponibilidad con Asterisk y Kamailio.

Tradicionalmente para disponer de una ip de servicio que balancea automáticamente entre dos máquinas, una activa y otra pasiva , o activo-activo, se ha usado pacemaker y corosync, incluso en algunos casos ucarp. Estos proyectos cierto es que han sido empleados mucho en el pasado pero hoy en día , keepalived es un proyecto que está creciendo bastante y merece la pena  empezar a usarlo en estas arquitecturas. Usa el protocolo VRRP empleado en alta disponibilidad en red como routers, mikrotik y similares.

En debian simplemente tenemos que instalar los paquetes con apt-get

apt-get install keepalived

También nos hará falta instalar sipsak que luego veremos para que nos servirá.

apt-get install sipsak

Para el buen funcionamiento deberemos cambiar algunos parámetros de sysctl , algunos relacionados con ARP para que cuando haya un salto se encaminen las peticiones lo antes posible a la máquina activa y otros para permitir bindear Asterisk a ips que no tiene (la activa).

Editaremos /etc/sysctl.conf

net.ipv4.ip_nonlocal_bind = 1

net.ipv4.conf.all.arp_ignore = 3
net.ipv4.conf.all.arp_announce = 2

y aplicaremos los cambios con:

sysctl -p

Una vez hecho esto ya configuraremos el keepalived /etc/keepalived/keepalived.conf de cada uno de los nodos:

vrrp_instance cluster{

state MASTER

interface eth0

virtual_router_id 01

priority 100

nopreempt

advert_int 1

virtual_ipaddress { IP.SER.VI.CIO/24 dev eth0   label eth0:1 }

track_script { comprobar_sip }

notify_master “/etc/keepalived/estado.sh MAESTRO “

notify_backup “/etc/keepalived/estado.sh BACKUP “

}

Para provocar el salto cuando Asterisk o Kamailio no responda usaremos un script comprobar_sip, que empleará el sipsak como antes comentábamos.

vrrp_script comprobar_sip {

script “/etc/keepalived/comprobar_sip.sh”

interval 10 # se comprueba cada 10 segundos

fall 3 # Si falla 3 veces consideramos caído

rise 5 #Exigimos 5 veces para OK

}

El script en cuestión comprobará si responde Asterisk. En el caso de Kamailio hay que tener cuidado y que responda a los OPTIONS y en Asterisk que el contexto entrante por defecto tenga la extensión en cuestión (s)

[entrantes]

exten => s,1,Noop

Para que no tengamos problemas.

Crearemos el script comprobar_sip.sh como sigue:

#!/bin/bash

sipsak -s sip:s@IP_SERVICIO:5060

if [$? -ne 0 ] ; then

exit

else

exit 0

fi

Y crearemos el script estado.sh

#!/bin/bash

STATE=$1

case $STATE in

“MAESTRO”)

service kamailio start || service kamailio restart

exit 0

;;

“BACKUP”)

service kamailio stop

exit 0

;;

esac

En el otro nodo haremos lo mismo pero intercambiando las IPS en el script comprobar_sip.sh y

….

state BACKUP

virtual_router_id 01

priority 99

….

en la configuración de keepalived.conf

Este año soy ponente en la Astricon : La feria por excelencia de Asterisk

1 Jul

Captura de pantalla 2015-07-05 a las 12.05.41

 

Mi ponencia sobre Home Automation with Asterisk ha sido aceptada para la Astricon 2015 que este año se celebra del 13 al 15 de Octubre en Orlando.

Mi charla será el día 14 de Octubre de 11:00 a 11:35 AM hora local.

Podéis consultar la agenda completa aquí

Estoy buscando patrocinadores que me ayuden a sufragar parte de los gastos de traslado al evento , así que si estáis interesados por favor poneros en contacto conmigo en el apartado de contacto o bien por twitter @albersag.

Gracias por vuestra colaboración

Cómo configurar un Mikrotik para usar la vlan3 de voip de Movistar FFTH

26 Feb

Para los que la vozip es una pasión, lo de usar la voz mediante el puerto FXS de la ONT se nos queda pobre, mucha gente para integrar líneas de FFTH en centralitas suele usar un adaptador FXO conectado al FXS, como Grandstream HT503 o similar , y de esta forma integrarlo en la centralita IP.

Pero esto aunque funciona no es lo óptimo, porque gastarse más dinero en gateway cuando podemos atacar directamente a la plataforma de Movistar a nivel SIP.

Para ello podemos hacer dos cosas, conseguir migrar de alguna forma a sbc.ngn.rima-tde.net nuestra cuenta de fijo, por ejemplo una de las vías es apuntarse a la beta de Mi Fijo 2.0 que conté hace unos días y solicitar el poderla usar fuera de la conexión de fibra. Nos proporcionarán un usuario y en un post posterior mostraré como configurarlo con una centralita Grandstream por ejemplo.

La segunda sería sustituir el router de Movistar y atacar directamente con un Mikrotik. Para ello debemos crear dos vlanes (6 Datos y 3 Voz) , si dispusiéramos de Movistar TV haría falta configurar la vlan2 también, pero eso es otro asunto.

Os muestro la configuración necesaria a continuación.

Creamos las dos vlanes:

add interface=ether1-ont-casa l2mtu=1594 mtu=1594 name=vlan3 vlan-id=3

add arp=proxy-arp interface=ether1-ont-casa l2mtu=1594 mtu=1594 name=vlan6 \
vlan-id=6

Habilitar cliente DHCP por la vlan3

add add-default-route=no dhcp-options=hostname,clientid disabled=no \

interface=vlan3 use-peer-dns=no use-peer-ntp=no

Permitir tráfico vlan3 por el firewall y realizar NATeado

/ip firewall filter

add chain=input in-interface=vlan3

add chain=output out-interface=vlan3

add action=masquerade chain=srcnat out-interface=vlan3

Habilitar los SIP ports

/ip firewall service-port

set sip ports=5060,5061,5070

Y añadir las reglas de rutado por la vlan3

/ip route

add distance=1 dst-address=10.31.255.128/27 gateway=10.22.0.1%vlan3 \
routing-mark=to_vlan3

/routing rip interface

add interface=vlan3 passive=yes receive=v2

/ip firewall mangle

add action=mark-connection chain=prerouting dst-address=10.31.255.128/27 \

in-interface=bridge-local new-connection-mark=voip_vlan3 src-address=\

10.0.1.8 (Aquí la 10.0.1.8 es una centralita IP o teléfono IP)

add action=mark-routing chain=prerouting connection-mark=voip_vlan3 \

in-interface=bridge-local new-routing-mark=to_vlan3

add action=mark-routing chain=output connection-mark=voip_vlan3 \

new-routing-mark=to_vlan3

y luego las rutas corresponidentes

/ip route

add distance=1 dst-address=10.31.255.128/27 gateway=10.22.0.1%vlan3 \

routing-mark=to_vlan3

Con esto cuando vayamos a registrar un teléfono IP o centralita, usaremos los datos

IP de registro: telefonica.net:5060

Proxy: 10.31.255.134:5070

Usuario: 9XXXXXXXX

Password : 9XXXXXXXX ( El mismo número)

Codecs Soportados: G722, G711 , G729 ,H264,H263 y H263p

Cualquier duda, dejarla en comentarios

Port Knocking en tu Asterisk o Elastix

15 Dic

No hay que decir que la seguridad es un tema a tener en cuenta en cualquier sistema VoIP hoy en dia, una técnica bastante utilizada recientemente es el port knocking, que consiste enviar paquetes a algunos predefinidos que realizan una acción a nivel de iptables . Generalmente abriendo el puerto SSH a la ip remota desde la que se realiza el port knocking .

Es bastante habitual usarlo para SSH, pero puede ser bastante útil usarlo para SIP con el fin de abrir el registro temporalmente para registrar un endpoint sip y posteriormente cerrarlo, bien realizando la operación inversa o bien por timeout.

40

Comienza la ElastixWorld 2014 en Santiago de Chile

30 Oct

Si Astricon es la feria Asterisk por antonomasia, Voip2day la feria de la VoIp en Europa, ElastixWorld es la feria más importante del mundo Elastix en el mundo.

En menos de un mes se concentran los tres eventos que hacen saltar de un lado al otro del mundo a los ponentes más solicitados.

Este año tiene lugar en Santiago de Chile con un elenco de ponentes entre los que se encuentran amigos y gente admirada.

Algún año espero tener la suerte de poder participar, este año Voipnovatos se quedó a las puertas 🙂

Durante hoy seguramente será liberada Elastix 3.0 cuya renovación es de las más importantes que ha tenido Elastix. Ya sólo el incorporar un SIP Proxy delante de Asterisk es de total valentía .

(Ya ha sido liberada la 3.0 estable aquí)

Captura de pantalla 2014-10-29 a las 8.14.44

Podéis seguir el evento en sus cuentas de twitter @elastixworld y en el hashtag #elastixworld

Crear una red IPV6 para pruebas con VoIP

27 Oct

Muchos de vosotros (yo incluido) no tendréis ipv6 de forma nativa en vuestra conexión a internet, aunque en algunos países si que es así, sobre todo del norte de Europa, o al otro lado del charco.

Sin embargo a nivel de CDN y en servidores dedicados es ya una realidad, de hecho hace poco DigitalOcean anunció soporte para #ipv6.

Considerando que tenemos ese primer paso , teniendo un servidor dedicado o virtual con conexión ipv6, usaremos OpenVPN para “traernos” la ipv6 al otro extremo y rutar dicho tráfico ipv6 través de nuestro servidor dedicado.

¿Por qué no usar un tunnel broker como HE o Sixxs.net?

Lo usé en el pasado y aparte de no tener mucho ancho de banda de salida, siempre te cabe la duda de por donde pasa lo que envías. Generalmente son tunnels ofrecidos por operadores pero no siempre es así. Me quedo más tranquilo enviando mi tráfico ipv6 por un sitio que conozco .

Nada me asegura que en el otro extremo alguien lo esté inspeccionado, pero al menos no pasa por tantos sitios. La desventaja es que quizá el POP (Punto de presencia) que será nuestro servidor dedicado puede no estar a una latencia mínima desde nuestra conexión. Pero siempre podemos incluso tener varios hasta que demos con el que mejor nos funcione.

En el caso de online.net os recomiendo esta guía para echar a andar ipv6 (mejor que dibbler).

40

Asterisk 13 oficialmente lanzado con motivo de la Astricon

23 Oct

Captura de pantalla 2014-10-23 a las 7.54.55

Coincidiendo con la Astricon, la feria Asterisk por antonomasia en USA, ha sido liberada la versión Asterisk 13 que incluye algunas de las novedades que comento a continuación:

 

– Se trata de una version LTS

– Se ha rediseñado el sistema de bridging y media core

– Numerosas mejoras al canal SIP PJSIP

– Mejorada la gestión remota.

Así que ya toca ponerle en algún equipo en producción 🙂 No seáis tímidos 😉

Más info aquí

Digium lanza su servicio de Sip Trunking

20 Oct

Captura de pantalla 2014-10-20 a las 11.03.51Interesante movimiento del mantenedor principal de Asterisk y fabricante de tarjetería  y teléfonos para Asterisk, ofreciendo para USA servicio de SIP Trunking con numeración entrante así como de red inteligente, y cobro por minuto o bien con tarifa plana mensual

Podéis ver más información de precios aquí

Para aquellos que busquéis un proveedor en este lado del charco, tenéis a voz.com 🙂

RadioVozIP – VOIP2DAY 2014

9 Oct

Hoy daba una conferencia en el #voip2day . Este año se me ocurrió hablar sobre Radio y Voz IP , y mostrar que no es tan complicado como puede parecer , integrarlo con sistemas Asterisk o audio IP.

Podéis ver la conferencia en ingles y castellano en los siguientes enlaces, así como algunas de las fotos que los asistentes a la conferencia fueron sacando 🙂

 

 

Fotos en Twitter aquí 

Las demos este año no fallaron y creo que la gente quedó bastante contenta 😉

Gracias  por asistir un año más

Un abrazo

Alberto

Respoke Web Communications

25 Sep

Digium lanza una plataforma basada en la nube para añadir comunicaciones seguras en web y móvil. Esta plataforma ofrece una API extensa que permite a los desarrolladores añadir voz, video, mensajería y datos a sus aplicaciones. La interfaz de desarrollo con Respoke usa una librería en Javascript intuitiva y APIs RESTful.

Los early adopters pueden empezar a dar feedback y construir el futuro del servicio. El lanzamiento público será en 2015. El acceso a desarrolladores es limitado así que no os quedéis atrás y entrar en  www.respoke.io.

La verdad es que tiene una pinta estupenda 🙂

Más información aquí

Curso Básico Online de Asterisk

24 Sep

Avanzada7 lanza la primera edición de su curso propio básico de Asterisk Online. Esta primera edición pretende ser una introducción a Asterisk y cuyos datos de temario podéis ver aquí.

Ya no tienes excusa para aprender Asterisk desde casa o desde el trabajo.

Es un curso online con diez sesiones en vivo y también laboratorios con ejemplos ilustrativos que recogen lo impartido como teoría .

Si estáis interesados el curso empieza el próximo Lunes 29 de Septiembre y será impartido por mí :).

Identificaros como lectores de Voipnovatos si formalizáis la reserva.

Un saludo