Las extensiones internas se bloquean cuando el acceso a internet se cae. ¿Cómo resolverlo?

29 Jul

Este es un problema viejo y aunque la solución puede encontrarse buscando por internet, quise tomarme unos minutos para escribir un breve post que habla del problema y como resolverlo.

Estoy seguro que a varios les ha pasado: tienes tu conmutador configurado perfectamente y todo marcha bien. De pronto, de la nada, tus extensiones internas se caen: no haces ni recibes llamadas. Revisas un poco y te das cuenta de que no tienes internet. ¿Pero para que necesito internet si mis extensiones son internas? ¿Qué tiene que ver una cosa con la otra? Es ahí donde entramos.

El problema radica en la manera en como Asterisk resuelve los dominios de las troncales SIP a donde necesita conectarse. El canal SIP utiliza un método de consulta de DNS síncrono, lo que quiere decir que cuando llega una petición de resolver un DNS (ej. siptrunk.alianza.com) el canal SIP le pregunta al … Continuar leyendo

Asterisk con Alta-Disponibilidad + MySQL

10 Dic

Este tutorial fue escrito por uno de los participantes de nuestro foro: navaismo. El artículo original lo pueden encontrar aquí.

En algunas ocasiones nos vemos en la necesidad de crear un Cluster de alta disponibilidad para nuestros servicios de Asterisk. A continuación se describen los pasos necesarios para llevar esto acabo en nuestros servidores usando Asterisk y Mysql(por si queremos usar Asterisk Realtime Architechture).

Algunas indicaciones iniciales:

Estos pasos están basados en las instrucciones que brinda Digium y los tutoriales de DRBD para Mysql. Este tutorial no esta hecho para hacer copy&paste. El color verde indica que son pasos para realizar en ambos servidores. El color Naranja indica que son pasos para realizar en el servidor primario. El color Rojo indica que son pasos para realizar en el servidor secundario. El Hostname del Servidor primario es “node1“. El Hostname del Servidor secundario es “node2“. La dirección… Continuar leyendo

Como reiniciar masivamente todos los dispositivos Cisco SPA de tu red

27 Sep

El día de ayer publicamos un mini tutorial de como reiniciar masivamente todos los teléfonos Aastra de nuestra red. Hoy publicamos el equivalente aplicable para todos los teléfonos Cisco SPA (esto aplica también para la vieja gama de Linksys/Sipura).

El código es aún más sencillo que el de ayer:

[codesyntax lang=”php”]

#!/bin/bash RED=192.168.1.1/24 echo "Escaneando $RED ..... " for IP in `nmap -sP -v $RED | grep "appears to be up" | cut -d' ' -f 2` do wget -qT 1 --no-cache http://$IP/admin/reboot -O - > /dev/null done

[/codesyntax]

Con un poco de ingenio, podemos mezclar ambos scripts para que en caso de tener mezcla de teléfonos, reiniciemos todo lo que nos encontremos.

¡Suerte!… Continuar leyendo

Como reiniciar masivamente los teléfonos Aastra de tu red

26 Sep

Recientemente nos topamos con la necesidad de resetear cerca de 200 teléfonos Aastra en una misma red. Pudimos haber esperado a que los teléfonos comenzaran a registrarse solos, pero debido a que era un soporte de emergencia, utilizamos este script:

[codesyntax lang=”bash”]

#!/bin/bash USER=admin PASS=22222 RED=192.168.1.1/24 echo "Escaneando $RED ..... " for IP in `nmap -sP -v $RED | grep "appears to be up" | cut -d' ' -f 2` do wget -qT 1 --no-cache --http-user=$USER --http-passwd=$PASS http://$IP/logout.html -O - > /dev/null wget -qT 1 --no-cache --http-user=$USER --http-passwd=$PASS http://$IP/sysinfo.html -O - > /dev/null# Reset echo Reiniciando $IP wget -qT 1 --no-cache --post-data=resetOption=0 --http-user=$USER --http-passwd=$PASS http://$IP/reset.html -O - >/dev/null done

[/codesyntax]

Lo que éste hace es escanear la red, abrir la interfaz web de todos los teléfonos, accesa con el usuario y contraseña default (admin/2222) y una vez adentro ingresa al menú Reset y posteriormente acciona el reseteo del teléfono. … Continuar leyendo

Como eliminar el eco en llamadas: instalando OSLEC y usando fxotune

7 Sep

El eco en una señal de telefonía ocurre cuando tenemos 2 conductores a diferentes impedancias. El desacople de las mismas ocasiona que la señal se refleje y se perciba por nuestro cerebro como 2 señales diferentes. Si el eco es superior a 150ms, comienza a volverse molesto ya que como humanos nos distrae de la conversación que estamos teniendo.

En un sistema 100% VoIP el eco no existe. Definitivo: no existe. Sin embargo, dado que aún ocupamos medios analógicos para poder nosotros enviar o recibir el audio (micrófonos y altavoces), es en estos dispositivos donde el eco puede ocurrir. El punto más común donde se produce el eco es en el medio que ocupemos para conectarnos con medios 100% analógicos, como la línea telefónica, así que es responsabilidad de nuestras tarjetas o gateways, hacerse cargo de cancelar este eco, ya sea mediante hardware o software (recuerden que en VoIP, la … Continuar leyendo

Resetear/recuperar la contraseña de root de MySQL

11 Jul

Este post realmente no tiene que ver con Asterisk, pero resolviendo una consulta que me hicieron, consideré que podría ser útil para aquel que se ha visto en la necesidad de acceder a una BD de MySQL de la cual no se tiene la contraseña de root.

Los pasos a seguir son bastante sencillos (hay que ejecutar los comandos con permisos de root de Linux):

Detenemos el servicio de MySQL [codesyntax lang=”bash”] /etc/init.d/mysql stop

[/codesyntax] Iniciamos MySQL pero en modo sin privilegios [codesyntax lang=”bash”]mysqld_safe –skip-grant-tables &[/codesyntax] Hacemos un login a MySQL sin password [codesyntax lang=”bash”]mysql -u root[/codesyntax] Cambia el password (este query se ejecuta desde adentro de MySQL, al cual accedimos ya porque arrancamos sin contraseña). [codesyntax lang=”sql”]UPDATE mysql.user set Password = PASSWORD(‘tunuevopass‘) WHERE User=’root’;[/codesyntax] Salimos de SQL [codesyntax lang=”sql”]exit;[/codesyntax] Detenemos la sesión corriendo de MySQL [codesyntax lang=”bash”]mysqladmin shutdown[/codesyntax] Reiniciamos el servicio de MySQL [codesyntax lang=”bash”]/etc/init.d/mysql restart[/codesyntax]

Al … Continuar leyendo

Protege tu Asterisk de ataques usando fail2ban

7 Jul

En ocasiones anteriores he hecho la mención de fail2ban, una herramienta escrita en Python que analiza logs del sistema y responde en caso de que ciertas condiciones se cumplan, por ejemplo, 5 intentos de contraseña SSH equivocada en un periodo de 10 minutos. Dada la proliferación de ataques a equipos Asterisk para tratar de hacer llamadas de larga distancia, tiene sentido que ocupemos esta herramienta para protegernos de los amantes de lo ajeno.

Ahora bien, ¿cómo configuramos esta herramienta para que nos evite los cargos de miles de dólares en llamadas fantasmas?

Primero, lo instalamos. En Debian podemos usar el mundialmente reconocido apt-get:

apt-get install fail2ban

O, si tenemos Centos, primero asegurémonos de que tengamos EPEL (un repositorio que nos da acceso a mucho software útil) y luego instalamos fail2ban:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm yum -y install fail2ban

Fail2Ban se configura en 2 partes básicas:

/etc/fail2ban/jail.conf – Define que logs monitorear… Continuar leyendo

Como convertir archivos de sonido y musica en espera para Asterisk

6 Jul

Muchas veces me han pregunado si Asterisk soporta MP3 como música en espera: la respuesta es si y no. Debo decir que si porque en efecto, con el módulo format_mp3 se pueden reproducir MP3, pero debo decir no porque solamente se soportan los de bitrate constante (y hoy en día, prácticamente todos son de bitrate variable, o VBR), además de que el consumo de CPU causado por el transcoding realmente puede afectar al sistema.

Entonces, ¿cómo podemos hacer para convertir nuestra colección favorita de audio MP3 a wav, gsm, ulaw o cualquier otro de los formatos que Asterisk soporte? El mecanismo es más sencillo de lo que se cree, siempre y cuando se tengan los conocimientos mínimos de Linux para hacerlo.

Si tu música origen es MP3, necesitas instalar SoX con soporte para MP3. Aquí un tutorial (en inglés) de como hacerlo. Si tienes Debian, es tan sencillo como… Continuar leyendo

Respaldando la base de datos de configuración de Elastix/FreePBX por SSH

27 Jun

Una gran ventaja que tenemos en Linux es la facilidad de crear procesos automatizados que nos ayuden a ejecutar tareas cotidianas. Para nuestros usos comunes como administrador de equipos basados en Asterisk/Elastix/FreePBX, puede ser una labor cotidiana respaldar la configuración alojada en bases de datos de MySQL.

SSH nos permite ejecutar comandos en servidores Linux remotos y traernos el resultado al mismo tiempo, por lo que resulta ideal para realizar un respaldo en un equpo distante y almacenarlo en nuestro equipo Linux loca. El comando para hacerlo sería el siguiente (asumiendo que usamos la contraseña default de MySQL en nuestro equipo remoto):

[codesyntax lang=”bash”]

ssh 192.168.1.100 "mysqldump -peLaStIx.2oo7 --databases asterisk | gzip -9" > respaldo.sql.gz

[/codesyntax]

El comando de arriba se encargará de hacer un dump de la BD asterisk. Si quisiéramos traernos también el CDR, hariamos lo siguiente:

[codesyntax lang=”bash”]

ssh 192.168.1.100 "mysqldump -peLaStIx.2oo7 --databases asterisk cdr | gzip… Continuar leyendo