viernes, 25 de diciembre de 2009

Disponible Asterisk Unit Test Framework

Leyendo en voiptoday que David Vossel anunción el add del nuevo Framework de Asterisk para pruebas el añade una serie de herramientas para crear y ejecutar tests internos a través de la consola CLI de Asterisk, lo que nos permitirá detectar si hay alguna incidencia. A continuación las palabras de David en ingles:

Feature Overview:
- Define Unit Tests anywhere in the code using the AST_TEST_DEFINE macro
- Register Unit Tests to a central test manager using AST_TEST_REGISTER macro
- Unregister Unit Tests from the test manager using AST_TEST_UNREGISTER macro
- Execute test from CLI
- Generate xml and txt test result reports from CLI

New CLI Commands
-'test execute all'
-'test execute category'
-'test generate results xml'
-'test generate results txt'
-'test show results all'
-'test show results failed'
-'test show results passed'
-'test show registered'

Enabling TEST_FRAMEWORK
- Configure Asterisk using dev mode, './configure ?enable-dev-mode'
- In 'make menuselect' under the 'Compiler Flags' option enable the 'TEST_FRAMEWORK' flag.
- Recompile Asterisk and the test CLI options will be made available.

Lo probaré y luego les diré que tal, espero que les guste suena muy interesante por lo menos para sistemas de prueba. Feliz NAVIDAD a todos

lunes, 21 de diciembre de 2009

Crear aplicaciones para Asterisk en .Net

Leyendo en Sinologic.net descubrí que ya se liberó una nueva versión de la librería la nueva versión 1.6.3.1 de la librería Asterisk .NET para seguir leyendo clickea el texto

Compilar kernel para Asterisk + Instalacion en Debian Lenny

Bueno hace días que no me tiempo de postear nada pero creo que este Post le va a servir a muchos como me sirvió a mi en mis pruebas, al instalar

PASOS DE INSTALACION

Instalar librerias base

apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential

Descargar kernel de linux

cd /usr/src

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.8.tar.gz

tar xfv linux-2.6.26.8.tar.gz

ln –s /usr/src/linux-2.6.26.8 /usr/src/linux

Compilar kernel

make clean && make mrproper

"make mrproper se usar para limpiar los fuentes del kernel"

cp /boot/config-`uname -r` ./.config

make menuconfig

Ahora en la configuración del kernel seleccionamos:

Processor type and features >> [*]IRQ balancing ---> opcion importante para el balanceo de IRQ's de tarjetas digium
Processor type and features >> Timer frequency = 1000 Hz --> por default viene lo minimo 100 Hz
Processor type and features >> [*]High Resolution Timer Option
Processor type and features >> [*]HPET Timer Support
Device Drivers >> Character Devices >> [*]Enchanced Real Time Clock Support
Library Routines >> [*]CONFIG_CRC_CCITT


Terminada la configuración del kernel lo compilaremos. Debido a que lo estamos haciendo a la Debian way es necesario que tengamos instalado un paquete llamado kernel-package, el cual suministrará las herramientas necesarias para poder compilar y generar el paquete con nuestro kernel, para instalarla: aptitude install kernel-package. Antes de comenzar la compilación debemos estar en el directorio donde se encuentra el código fuente del kernel y luego ejecutar lo siguiente:

“PRIMERO se necesitará hacer un "make-kpkg clean" si desea recompilar el kernel usando la opción de revisión”

make-kpkg clean

Es importante realizar un cambio primero en la configuración de la imagen antes de realizar los .deb del kernel, sino nos dará un error al crear los paquetes, seguimos los siguientes pasos:

cd /usr/src/linux
vim Documentation/lguest/Makefile




Cambiamos:
all: lguest
Por:
all:


Sino lo hacen así les tirará un error como:

make[1]: Leaving directory `/usr/src/linux-2.6.31.6'
/usr/bin/make  EXTRAVERSION=.6-ast01-lw  ARCH=i386 \
-C Documentation/lguest
make[1]: Entering directory `/usr/src/linux-2.6.31.6/Documentation/lguest'
cc -m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE    lguest.c   -o lguest
lguest.c:21:25: error: sys/eventfd.h: No such file or directory
lguest.c:37:18: error: zlib.h: No such file or directory
lguest.c: In function 'create_thread':
lguest.c:1021: warning: implicit declaration of function 'eventfd'
make[1]: *** [lguest] Error 1
make[1]: Leaving directory `/usr/src/linux-2.6.31.6/Documentation/lguest'
make: *** [debian/stamp/build/kernel] Error 2

make-kpkg --initrd kernel_image kernel_headers

Los que hayan compilado un kernel de Linux este comando equivale a: make dep, make clean, make bzImage y make modules

La opción --initrd crea una imagen initrd en el paquete que se guardará en /boot cuando instalemos el kernel (recordar que solo estamos compilando y empaquetando, no instalando).

El comando anterior creará dos paquetes con extensión .deb en el directorio superior. Un paquete será el kernel y el otro los kernel-headers.

Instalación de paquetes generados:

dpkg -i *.deb

Y reiniciamos el servidor, veremos la nueva versión de imagen :D

Instalación de Asterisk

Instalación de dependencias:

cd /usr/src/

aptitude install linux-headers-`uname -r` bison ncurses-dev libssl-dev zlib1g-dev initrd-tools cvs procps  build-essential libnewt-dev libusb-dev libmysqlclient15-dev make sox libsox-fmt-gsm libsox-fmt-mp3 flex fail2ban subversion libiksemel-dev libcurl3-dev libvorbis-dev libspeex-dev flex xsltproc libxml2-dev bison g++ libncurses5-dev libnewt-dev libusb-dev subversion git-core

En esta ocasión voy a instalar un Asterisk estable que han tomado unos españoles se trata del

Asterisk-ES-rsp, en su página hallarán toda la información que necesiten saber acerca de este gran proyecto, entre sus ventajas es que ya trae por defecto muchos parches para usar octqe y usa por defecto oslec de manera maravillosa cabe recalcar :), porque usar esta versión de Asterisk mmm pues la ultima versión de dahdi y de asterisk la 1.4.27.1 me estaba reventando mucho, para tarjetas tdm me daba problemas de colgado al minuto casi siempre, en Digium me dijeron tienes que hace un tonezone para tu país y yo mmm, intente hacerlos pero no me sirvió, instale esta versión los problemas de eco se fueron, y la estabilidad volvió xD

En el siguiente link están todos los pasos de descarga, compilación e instalación de esta gran versión:

ASTERISK-ES-RSP



Para finalizar quiero dejar un parche que tuve que aplicar para un error al usar la opcion L(limit) en la aplicación dial, me daba un loop terrible


ERROR[5003]: channel.c:2043 __ast_read: ast_read() called with no recorded file descriptor


En https://issues.asterisk.org/view.php?id=14723 esta la solución, solo aplique el parche 14723_1-4-24.patch  por si quieren probar wget 'https://issues.asterisk.org/file_download.php?file_id=22202&type=bug' -O - | patch -p0
y pues parece que se soluciono el problema porque ya no se me quedan pegadas las llamadas y no se genera ese mundo de log





miércoles, 2 de diciembre de 2009

Curriculas CISCO CCNP v5

Hola buenas mañanas madrugadas juju, aquí dejo los links de los 4 modulos del CCNP v5 que halle incluyendo unos pdf's con practicas, muchas gracias a Minchos por subirlos a taringa, los enlaces originales estaba para megaupload, pero yo los subí a 4shared espero que los disfruten

Link de carpeta: IR

El password de acceso de la carpeta es: voipsystemscr

Info en la carpeta:

  • Building Scalable Cisco Internetworks (BSCI)

  • Building Cisco Multilayer Switched Networks (BCMSN)

  • Implementing Secure Converged Wide Area Networks (ISCW)

  • Optimizing Converged Cisco Networks (ONT)

  • PDF's para practicas

Prueba Asterisk sin “ensuciar” tu sistema

Vamos a ver 2 maneras de hacerlo: instalando Asterisk en multiples lugares y utilizando live_ast.


Instalar Asterisk en distintos lugares


Si queremos tener un Asterisk 1.4 y un Asterisk 1.6 en el mismo sistema haremos lo siguiente para tener cada uno instalado en /opt por ejemplo:


cd asteriak14
./configure --prefix=/opt/asterisk14 --sysconfdir=/opt/asterisk14/etc --localstatedir=/opt/asterisk14}/var
make menuselect
make
make install
make samples


cd asteriak16
./configure --prefix=/opt/asterisk16 --sysconfdir=/opt/asterisk16/etc --localstatedir=/opt/asterisk16}/var
make menuselect
make
make install
make samples


En este ejemplo se asume que tenemos las fuentes de Asterisk 1.4 en un directorio llamado “asterisk14? y las de la 1.6 en “asterisk16?. De esta manera hemos conseguido tener dos versiones completamente aisladas en /opt. Las configuraciones estarán en /opt/asterisk14/etc y /opt/asterisk16/etc respectivamente.


Utilizar live_ast


Ésta es la que he descubierto hoy y me ha gustado  live_ast es un script que Tzafir Cohen hizo en bash que nos permite ejecutar Asterisk en el mismo directorio en el que lo hemos descargado. Esta disponible en trunk y en Asterisk 1.6, pero también funciona con Asterisk 1.4. Veamos como funciona:


cd asterisk-1.6.2
cp contrib/scripts/live_ast .
./live_ast configure
./live_ast install
./live_ast samples
./live_ast run -vvvvvvvvvc


Lo que realiza el script es fijar las variables necesarias para que Asterisk quede completamente instalado en el subdirectorio “live”.


FUENTE

viernes, 27 de noviembre de 2009

Backups con rsync

Una pequeña guía que iré modificando para hacer respaldos con rsync

Rsync es una herramienta para sincronizar los ficheros y directorios que tenemos almacenados en un sitio en otro diferente minimizando la transferencia de datos. En realidad, rsync son dos cosas: unalgoritmo de delta compression para sincronizar dos ficheros similares y una utilidad que usa dicho algoritmo junto con otras técnicas para hacer mirroring de ficheros y directorios en otro sitio transfiriendo la mínima cantidad de datos posible.

A nivel de un árbol de directorios con sus ficheros, la idea es sencilla. rsync nos copiará esos ficheros y directorios tal y como estaban en el nuevo sitio pero sin copiar todo, sino sólo lo que ha cambiado en el origen respecto al destino. Hacer lo mismo copiando los ficheros y directorios, incluso en remoto usando una carpeta compartida, sería equivalente si nos fijamos únicamente en el resultado, pero tenemos que transferir mucha más información.

El listado de características especiales que nos da la página de man de rsync es:

  • Soporte para copiar enlaces, ficheros de dispositivo, propietarios, grupos y permisos

  • Opciones de exclusión (exclude y exclude-from) similares a las del GNU tar

  • Modo CVS para ignorar los fichero que CVS ignoraría

  • Se puede usar cualquier shell remota transparente, como ssh o rsh

  • No es necesario ser root para usarlo

  • pipelining de los ficheros transferidos para minimizar la latencia

  • Soporte para usuarios anónimos o autentificados usando el demonio de rsync (ideal para hacer mirroring


NOTA IMPORTANTE:

La barra al final de los nombres de directorio

Respecto a cómo pasarle los nombres de los directorios, hay que tener una especial atención respecto a si ponemos una barra al final del nombre del directorio o no, ya que significan cosas distintas:

You can think of a trailing / on a source as meaning “copy the contents of this directory” as opposed to “copy the directory by name”, but in both cases the attributes of the containing directory are transferred to the containing directory on the destination. In other words, each of the following commands copies the files in the same way, including their setting of the attributes of /dest/foo:

rsync -av /src/foo /dest

rsync -av /src/foo/ /dest/foo

Efectivamente, /path/foo significa “el directorio foo“, mientras que /path/foo/ significa “lo que hay dentro de foo“.













RSYNC remoto

En la máquina destino es posible usar el propio proceso rsync funcionando como demonio y escuchando por defecto en el puerto 873 para recibir estas conexiones, pero es mucho más cómodo y fácil hacerlo por SSH, algo para lo que rsync ya está preparado por defecto.

Para esto es conveniente configurar el cliente y el servidor de SSH involucrados para entrar de forma transparente usando autentificación por clave pública para evitar tener que introducir la contraseña cada vez, aunque no es estrictamente necesario.

Autentificación trasparente por clave pública/privada con OpenSSH

El primer paso es generar la pareja de claves pública/privada en el cliente con el comando ssh-keygen:
$ ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/home/supercoco/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/supercoco/.ssh/id_rsa.

Your public key has been saved in /home/supercoco/.ssh/id_rsa.pub.

The key fingerprint is:

5c:7b:3d:44:21:09:84:a1:e6:8b:42:4e:ec:39:d6:92 supercoco@cliente

Si no le especificamos opciones, el comando crea una clave RSA de 2048 bits, pero podemos cambiar este comportamiento. Por ejemplo, para clave DSA de 1024 bits, sería:
$ ssh-keygen -t dsa -b 1024

Generating public/private dsa key pair.

Enter file in which to save the key (/home/supercoco/.ssh/id_dsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/supercoco/.ssh/id_dsa.

Your public key has been saved in /home/supercoco/.ssh/id_dsa.pub.

The key fingerprint is:

91:84:38:fd:03:b4:74:5a:1c:ad:48:c4:da:57:3b:cc supercoco@cliente

Hay que tener en cuenta que si le especificamos una passphrase, tendremos que introducirla manualmente cada vez que queramos usar la clave privada, por lo que la autentificación no será transparente. Por ello, aunque no sea lo más seguro, para nuestro propósito es necesario dejarla en blanco.

Y ahora sólo tenemos que copiar el contenido el fichero id_dsa.pub o del id_rsa.pub en el fichero authorized_keys del directorio $HOME/.ssh/ del usuario del sistema con servidor SSH al que queremos acceder.

Por ejemplo, si queremos entrar en el servidor SSH con el usuario ranagustavo, tendríamos que añadir el contenido de los ficheros/home/supercoco/.ssh/id_dsa.pub/home/supercoco/.ssh/id_rsa.pub del cliente de SSH al fichero /home/supercoco/.ssh/authorized_keys del servidor de SSH.

Si tenemos la contraseña para entrar, podríamos incluso hacerlo desde el cliente con un par de comandos:
$ scp $HOME/.ssh/id_dsa.pub ranagustavo@servidor:id_dsa.pub.supercoco.cliente

Password:

id_dsa.pub

$ ssh ranagustavo@servidor 'cat id_dsa.pub.supercoco.cliente >> .ssh/authorized_keys'

y ya podemos entrar sin introducir la contraseña:
$ ssh ranagustavo@servidor

Linux servidor 2.6.22 #2 SMP Sun Dec 9 19:33:44 CET 2007 x86_64

The programs included with the Debian GNU/Linux system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

No mail.

Last login: Sun Jan 13 22:12:58 2008 from cliente

ranagustavo@servidor ~ $

Una vez que esté configurado correctamente, podemos incluso querer configurar el servidor de SSH para que no acepte clientes que quieran entrar por el método estándar, la contraseña. Para ello, partiendo de la configuración estándar de Debian (con otras configuraciones base, puede ser necesario hacer más cosas), sólo tenemos que cambiar los parámetros ChallengeResponseAuthenticationPasswordAuthentication del fichero /etc/ssh/sshd_config a “no“:
# Change to yes to enable challenge-response passwords (beware issues with

# some PAM modules and threads)

ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords

PasswordAuthentication no

Ademas de agregar

AllowUsers usuario_que_tu_decidas

No permitir que root se pueda conectar
PermitRootLogin no

Con un “/etc/init.d/ssh reload” conseguiremos que el sshd relea la configuración.

Agregamos en el .bashrc del usuario:
#eval `ssh-agent`

#ssh-add

eval `ssh-agent`


ssh-add


CONFIGURACIÓN DE RSYNC




Please use the script code below (modify as needed), as it will only sync to “touched” files.



#!/bin/bash
rsync -avz –size-only -e “ssh -i /root/rsync-key” /etc/asterisk/extensions.conf
root@192.168.1.3:/etc/asterisk/extensions.conf
rsync -avz –size-only -e “ssh -i /root/rsync-key” /etc/asterisk/voicemail.conf
root@192.168.1.3:/etc/asterisk/voicemail.conf
rsync -avz –size-only -e “ssh -i /root/rsync-key” /etc/asterisk/queues.conf
root@192.168.1.3:/etc/asterisk/queues.conf
rsync -avz –size-only -e “ssh -i /root/rsync-key” /etc/asterisk/sip.conf
root@192.168.1.3:/etc/asterisk/sip.conf
rsync -avzr –size-only -e “ssh -i /root/rsync-key” /var/spool/asterisk/voicemail
root@192.168.1.3:/var/spool/asterisk
rsync -avzr –size-only -e “ssh -i /root/rsync-key” /var/lib/asterisk/moh
root@192.168.1.3:/var/lib/asterisk/moh
rsync -avzr –size-only -e “ssh -i /root/rsync-key” /var/lib/asterisk/sounds
root@192.168.1.3:/var/lib/asterisk
rsync -avzr –size-only -e “ssh -i /root/rsync-key” /home/PlcmSpIp
root@192.168.1.3:/home
rsync -avzr –size-only -e “ssh -i /root/rsync-key” /var/www/html/
root@192.168.1.3:/var/www




jueves, 19 de noviembre de 2009

IAX vs SIP

He aquí una pequeña comparativa entre IAX y SIP, conforme pase el tiempo iré agregando mas info:

IAX fue creado por Mark Spencer (también creador de AsterisK) para paliar una serie de problemas o incovenientes que se encontró al utilizar SIP en VoIP y que pensó que debía ser mejorado.

Las principales diferencias ente IAX y SIP son las siguientes:

- Ancho de banda.
IAX utiliza un menor ancho de banda que SIP ya que los mensajes son codificados de forma binaria mientras que en SIP son mensajes de texto. Asimismo, IAX intenta reducir al máximo la información de las cabeceras de los mensajes reduciendo también el ancho de banda

NAT
En IAX la señalización y los datos viajan conjuntamente con lo cual se evitan los problemas de NAT que frecuentemente aparecen en SIP. En SIP la señalización y los datos viajan de manera separada y por eso aparecen problemas de NAT en el flujo de audio cuando este flujo debe superar los routers y firewalls. SIP suele necesitar un servidor STUN para estos problemas

- Estandarización y uso
SIP es un protocolo estandarizado por la IETF hace bastante tiempo y que es ampliamente implementado por todos los fabricantes de equipos y softwareIAX está aun siendo estandarizado y es por ello que no se encuentra en muchos dispositivos existentes en el mercado.

- Utilización de puertos
IAX utiliza un solo puerto (4569) para mandar la información de señalización y los datos de todas sus llamadas. Para ello utiliza un mecanismo de multiplexión o "trunking". SIP, sin embargo utiliza un puerto (5060) para señalización y 2 puertos RTP por cada conexión de audio (como mínimo 3 puertos). Por ejemplo para 100 llamadas simultaneas con SIP se usarían 200 puertos (RTP) más el puerto 5060 de señalización. IAX utilizaría sólo un puerto para todo (4569)

- Flujo de audio al utilizar un servidor
En SIP si utilizamos un servidor la señalización de control pasa siempre por el servidor pero la información de audio (flujo RTP) puede viajar extremo a extremo sin tener que pasar necesariamente por el servidor SIPEn IAX al viajar la señalización y los datos de forma conjunta todo el tráfico de audio debe pasar obligatoriamente por el servidor IAX. Esto produce una aumento en el uso del ancho de banda que deben soportar los servidores IAX sobretodo cuando hay muchas llamadas simulataneas.

- Otras funcionalidades
IAX es un protocolo pensado para VoIP y transmisión de video y presenta funcionalidades interesantes como la posibilidad de enviar o recibir planes de marcado (dialplans) que resultan muy interesante al usarlo conjuntamente con servidores Asterisk.SIP es un protocolo de proposito general y podría transmitir sin dificultad cualquier información y no sólo audio o video.

Fuente

Webminar sobre Seguridad en Asterisk

La seguridad debe ser, sin duda, uno de los puntos más importantes para cualquier administrador de sistemas. No hay excusas válidas para dejar desatendida una vulnerabilidad y mucho menos, ciertas acciones como “seguridad por ocultación” demuestran diariamente que no debería existir.


El pasado Viernes día 13 de Noviembre se celebro una conferencia sobre Seguridad para entornos con Asterisk ofrecida por un agente del FBI especializado en este tipo de delitos, un experto de VoIPSA y dos personas de Digium (Jared Smith y Tristan).


Aquí les dejo los links a Youtube, hay otro link en que sale el video pero solo 1:12 le cortan como 20 minutos:



Borrando archivos antiguos en Linux con find

Hace poco necesite eliminar unas grabaciones para un cliente que tenian x cantidad de meses de antiguedad, como no me acordaba exactamente como, visite a nuestro amigo google para que me recordará xD, el link de donde saque la info:

Esto se puede hacer fácilmente con el comando find, sólo hay que ejecutar lo siguiente en la consola:


/usr/bin/find < DIRECTORIO > -mtime +< NUMERO_DE_DIAS > -exec rm -f {} \;


Sólo tenemos que sustituir los parámetros < DIRECTORIO >< NUMERO_DE_DIAS >. Adicionalmente podríamos agregar la opción -maxdepth < nivel > en caso de que el directorio tuviera subdirectorios, con < nivel > le indicamos cuanto queremos que profundice en ellos, por ejemplo si no queremos entrar en subdirectorios < nivel > sería 1.


Algunos ejemplos de su uso:


/usr/bin/find /home/user/tutoriales/ -maxdepth 1 -mtime +100 -exec rm -f {} \;


Si quisieramos medir el tiempo en minutos en lugar de días utilizaríamos -mmin en lugar de -mtime:


/usr/bin/find /tmp/ -maxdepth 2 -mmin +45 -exec rm -f {} \;

martes, 17 de noviembre de 2009

Eliminando warnings del public key del apt-update en debian etch

Este post es para mi, para cuando me de problemas el bendito debian y las llaves públicas, esta fue la mejor solución, incluso teniendo instalado debian-keyring me seguían dando el problema, he aquí la solución:

La forma de solucionar este warning es muy sencilla. Por lo general aparece despues de realizar el apt-get update. Los pasos que se realizaran a continuacion es para obtener las llaves publicas que permiten que nos conectemos con los servidores de los repositorios.

El error que aparecera sera algo como esto:

Leyendo lista de paquetes... Hecho
W: GPG error: http://www.debian-multimedia.org etch Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 07DC563D1F41B907
W: GPG error: http://download.tuxfamily.org debian-unstable Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 2D6CFB44DD800CD9
W: Tal vez quiera ejecutar 'apt-get update' para corregir estos problemas


SOLUCION DEL PROBLEMA:
Ahora lo que debemos hacer es copiar la PUBLIC KEY (en este caso XXXXXXXXXXXXXXX) Y ejecutar el siguiente comando agregando la clave copiada:

freedom:~# gpg --keyserver wwwkeys.eu.pgp.net --recv-key XXXXXXXXXXXXX

Si todo esta bien aparecera un mensaje en la consola de la siguiente forma

gpg: requesting key DD800CD9 from hkp server wwwkeys.eu.pgp.net
gpg: key 81836EBF: public key "Marco Trevisan (at 3v1n0.net) " imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1

Nota: Con esto agregamos la firma que faltaba, diciéndole con --keyserver que actualice todas las keys desde el servidor wwwkeys.eu.pgp.net y que las importe con --recv-keys.

freedom:~# gpg --export --armor xxxxxxxxxxx | apt-key add -

Nota: con --export --armor generamos una salida ascii que agregamos a las keys de apt con apt-key add.

Si todo esta bien al teclear de nuevo

freedom:~# apt-get update

tendremos todo OK

El enlace del blog de donde saqué este trucaso es: IR

lunes, 16 de noviembre de 2009

Asterisk 1.8 se publicará el segundo trimestre de 2010

Aqui traigo una copia textual de el blog de Elio Rojano acerca un tema tan interesante como lo es las versiones de Asterisk:

Uno de los grandes inconvenientes que ha tenido Asterisk 1.6, es el hecho de tener que leer el ChangeLog, cientos y cientos de líneas para descubrir en qué versión de Asterisk se encuentra una característica que buscamos, es algo tan tedioso que al final terminamos por desechar, bien porque no es imprescindible, bien porque la versión donde se encuentra no se ajusta a la que nos gustaría utilizar.


Russel Bryant acaba de publicar el estado actual del proyecto Asterisk donde explica el incremento del número de desarrolladores en estos últimos meses, así como una explicación mucho más completa de la política de versiones de Asterisk, cuándo han aparecido las distintas versiones de Asterisk, y cuando necesitamos esperar para la próxima versión de Asterisk 1.8.


Si hay algo que me ha gustado, es saber que la próxima rama de Asterisk 1.8 se publicará el segundo trimestre de 2010 con bastantes cambios como son:



- Habrá una única rama 1.8 a la que se le irán añadiendo las distintas correcciones y mejoras simultaneamente.
- Una vez finalizado el desarrollo de 1.8, se mantendrá esta rama durante 4 años únicamente para corrección de bugs.
- Un año después se dará por concluida esta versión.

¿Qué se consigue con esto?
En mi opinión, creo que más tranquilidad a la hora de actualizar, menos líos (ya que la última versión debería ser la más estable), y la seguridad que dispondremos siempre de todos los añadidos que vayan desarrollándose.

¿Qué desventajas tiene?
A nivel de desarrollo, corregir un bug no es tan divertido como desarrollar una nueva característica, por lo que muchos desarrolladores quizá vean que no se añaden nuevas características tan frecuentemente como se hacía con la anterior versión de 1.6.

Por último, algo que me ha gustado ha sido un resumen bastante interesante de las características que trae Asterisk 1.6 (y próximamente 1.8) bastante mejor explicada que en el ChangeLog.


Como es un tema que personalmente me interesa mucho, me he tomado la molestia de “traducirlo” para todos los que leeis Sinologic, aportando en algún que otro caso alguna aclaración o una traducción que se comprenda mejor… aquí la teneis:





  1. Mejora en el soporte para Faxes (Todas las versiones)

    • El soporte de T.38 ha sido reescrito completamente para funcionar mucho mejor.

    • Completo soporte para enviar y recibir en T.38 (se está trabajando para que pueda funcionar como gateway)

    • Opciones de configuración mejoran la interoperatibilidad con implementaciones no estándar del T.38.

    • Muchas mejoras al chan_dahdi y DAHDI para mejorar la estabilidad de la recepción de faxes en las tarjetas PSTN.

    • Cientos de horas testeando sin parar el soporte de faxes en Asterisk.



  2. Mejoras en la integración de XMPP y Jabber (1.8+)

    • La función JABBER_RECEIVE() ha sido añadida para permitirrecibir mensajes XMPP en el dialplan de Asterisk (adiós a miAstJabot snif, snif…)

    • Hay código en pruebas para utilizar XMPP como transporte de eventos distribuidos. Esto permitirá a servidores Asterisk comunicarse entre sí, así como compartir presencia e información MWI.



  3. Soporte para Conectar o Redirigir el identificador de la llamada (1.8+)

    • Control total sobre las actualizaciones de las partes conectadas. Los teléfonos mostrarán corréctamente con quien están hablando al recibir una transferencia!

    • Soporte para reenviar el callerID significa que tu podrás ver cuando tu llamada ha sido desviada, o cuando has recibido una llamada que haya sido desviada hacia a tí.

    • Véase el vídeo de presentación de Mark Michelson’s en la AstriCon presentation para más información.



  4. Servicios suplementarios de información de llamadas (Esperemos para 1.8+)

    • “Camp on extensions”

    • Soporte para CCNR (Completion of Calls on No Reply) y CCBS (Completion of Calls to Busy Subscriber)

    • Soporte genérico en Asterisk, además de sobre SIP y RDSI.



  5. Integración con sistemas de Calendarios (1.8+)

    • Soporte de calendarios iCal, CalDAV, Exchange 2003

    • Uso de información del calendario para habilitar/deshabilitar dispositivos.

    • Acceso directo a la información del calendario en el dialplan

    • Crear llamadas automáticas basadas en entradas del calendario

    • Véase el vídeo de presentación de Terry Wilson’s AstriCon para más información.



  6. Framework  para eventos de Seguridad (1.8+)

    • Esto permitirá a los componentes de Asterisk enviar eventos cuando consideren que están recibiendo un ataque.

    • También incluirá un módulo que escribirá los eventos realizados en un archivo de log con un formato especial que pueda ser utilizada por aplicaciones externas..



  7. Mejoras en el protocolo SIP TCP/TLS (1.6.X+)

    • Se están realizando muchísimas pruebas de esta funcionalidad.

    • Las opciones de configuración de esta característica han sido mejoradas.

    • Existen numerosos informes satisfactorios de integración con Microsoft OCS.

    • Se continuará trabajando en hacer esta funcionalidad más robusta incluso bajo condiciones de red adversas. (o como decía Iñaki, Hostiles!).



  8. Actualizado el soporte a la red telefónica PSTN.

    • Se mantendrá el soporte de mISDN en todas las versiones de Asterisk.

    • Se ha añadido a Asterisk 1.6 soporte nativo de RDSI BRI en el LibPRI y en el canal DAHDI. Todas ls características de este tipo de líneas funcionan ya con este código.

    • Soporte de señalización MFC/R2 ha sido añadida a chan_dahdi cuando se utiliza libopenr2 en la version de de Asterisk 1.6.2 y posteriores.

    • Soporte de SS7 fue añadida en Asterisk 1.6.0 y seguirá madurando.



  9. API para realizar Bridging en el Core (1.6.2+)

    • Es mucho más fácil escribir módulos de Asterisk que conecten canales.

    • Esta nueva infraestructura de conexión de canales podrá unir varios canales a la vez (meetme) sin necesidad de una fuente de reloj (sin que DAHDI esté instalado en el sistema).

    • Una nueva aplicación de conferencias (ConfBridge) ha sido creada para permitir conferencias utilizando esta infraestructura.



  10. Core Timing API (1.6.1+)

    • Soporte para mejorar el “timing” en Asterisk, evitando que sea ofrecido por el timer de DAHDI.
      Así, DAHDI no será requerido más como fuente de timing para Asterisk.



  11. Core Channel API Update (1.8+)

    • La gestión de la mayoría de estructuras de datos en Asterisk han sido reescritas: ast_channel ha sido reescrita, ahora se utiliza el objeto astobj2. El resultado es más rapidez, menos bloqueos y las “iteraciones” de este objeto son mucho más eficientes.



  12. Actualización de la API del programador del Core (1.6.2+)

    • La API del programador es utilizada en Asterisk cuando los compoentnes necesitan programar algunas tareas que ocurrirán en el futuro. Por ejemplo, esto se utiliza para retransmitir mensajes y tiempos de expiración. Es utlizado muy frecuentemente en los drivers de los canales de Asterisk. Se ha intentado llevar a cabo en dos ocasiones (en la 1.6.1 y otra vez en la 1.6.2). Mientras se perfilaba, los resultados de este trabajo mostraban que el programador que hasta entonces consumía muchísimo procesador, había pasado a prácticamente consumo nulo.




Como he dicho… una lista digna de leer detenidamente y es un muy buen resumen por parte de Russell Bryant para poner al día a toda la comunidad sobre lo que se ha hecho y lo que se planea para la próxima versión de Asterisk.


Enlace al post oficial:


http://blogs.asterisk.org/2009/11/10/asterisk-project-update-astricon-2009/

miércoles, 11 de noviembre de 2009

Broadcom lanza un códec HD con licencia GPL

Dandome un receso de tanto trabajo estaba revisando la pagina de Elio Rojano quea empresa Broadcom ha lanzado un códec que muestrea a 16 Khz:

Broadcom (la empresa que hay detrás de los dispositivos de red) acaba de anunciar la disposición pública y libre de un códec que muestrea a 16Khz:



BroadVoice16 (BV16) for narrowband telephone-bandwidth speech sampled at 8 kHz,
and a 32 kb/s version called BroadVoice32 (BV32) for wideband speech sampled at 16 kHz.

Las ventajas:




  • Low Delay (Latency): algorithmic buffering delay of merely 5 ms (compared with 15 to 40 ms of most competing codecs)

  • Low Complexity: much lower MIPS requirements than most competing codecs (typically 1/3 to 1/2 of comparable ITU-T G.72x codecs), also lower memory requirement than most competing codecs

  • High Quality: equivalent or better speech quality than most competing codecs in PESQ comparisons and in extensive formal subjective MOS listening tests conducted by AT&T Labs, COMSAT Labs, and Dynastat, Inc

  • Moderate Bit-Rate: at 2 bits/sample, coding efficiency is higher than G.711, G.726, and G.722 and comparable to many other codecs

  • Availability: Broadcom is providing both the floating-point and fixed-point C source code of BroadVoice16 and BroadVoice 32 under an open source license and on a royalty-free basis


Aquí les dejo el link de la noticia

NOTA:

Aquí les dejo una lista de los codecs que hay para Asterisk y el ancho de banda que utiliza, para más información visiten la página BYTECODERS:

  • G.711 ulaw (utilizado en EEUU) (64 Kbps)

  • G.711 alaw (utilizado en Europa) (64 Kbps)

  • G.723.1 - pass-thru sin licencia (6.3/5.3Kbps) usado en H.323

  • G.726 - (16/24/32/40kbps)

  • G.729 - pass-thru sin licencia (8Kbps)

  • GSM (13Kbps)

  • iLBC (13.33/15.2Kbps)

  • LPC10 (no recomendado!)

  • Speex - configurable 4-48kbps


De paso les paso una imagen tomada de voiptoday:

viernes, 30 de octubre de 2009

Asterisk Manuales en Espanol

Hola gente bueno en este post dejo una info que postíe en taringa.net hace un tiempo, son manuales  de Asterisk en español asi que aqui les mando un link de una carpeta que hice en 4shared.com, el link:


http://asteriskespanol.4shared.com


El pass de acceso es: asterisktaringa




Exitos a todos con su inmersión en el mundo de las Voz Ip y Asterisk



"Aquello que estés dispuesto a dejar atras marcará cuan lejos llegarás en la Vida"

jueves, 29 de octubre de 2009

Cisco CNNA Exploration en español completo

Bueno aqui cuelgo un link donde colgué los 4 modulos del CNNA exploration, todos subidos por mí, no tienen virus, son los que tengo instalados en mi PC. Espero que les sirva a todos. El password de la carpeta es: voipsystemscrcnna

ACCEDER


ViopSys_logo01

miércoles, 28 de octubre de 2009

Agregar Soporte H.323 a Asterisk

Este tuto esta probado con las versiones 1.4.23.1 y 1.4.26.2 de Asterisk espero que les sirva:
Instalar PWLIB:

cd /usr/src
wget http://ufpr.dl.sourceforge.net/sourceforge/openh323/pwlib-v1_10_3-src-tar.gz
tar zxvf pwlib-v1_10_3-src-tar.gz
cd pwlib_v1_10_3/
./configure
make
make install
make opt
PWLIBDIR=/usr/src/pwlib_v1_10_3
export PWLIBDIR

Instalar OPENH323:

cd /usr/src
wget http://ufpr.dl.sourceforge.net/sourceforge/openh323/openh323-v1_18_0-src-tar.gz
tar zxvf openh323-v1_18_0-src-tar.gz
cd openh323_v1_18_0/
./configure
make
make opt
make install
OPENH323DIR=/usr/src/openh323_v1_18_0/
export OPENH323DIR

Instalar chan_h323.so :

cd /usr/src/asterisk
./configure
cd /usr/src/asterisk/channels/h323/
make
make opt
cd /usr/src/asterisk
./configure
make
make install

Ejecutamos:

echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig

Asterisk Manuales en Español

Buenos días a todos aquí les dejo unos manuales que había subido a la red sobre Asterisk están 100% en Español.

El pass de acceso es: asterisktaringa

Éxitos a todos con su inmersión en el mundo de las Voz Ip y Asterisk

VOIP2DAY Presentaciones 2008

Hola aquí les dejo mi cuarto Post, acerca de lo que es Voz Ip y Asterisk
Les traigo todas las filminas del ultimo Astrico, Astricon 2008, el evento de usuarios de Asterisk celebrado en los EEUU. AstriCon es el evento oficial de la comunidad Asterisk y ofrece una amplia variedad de contenidos relacionados con esta plataforma de telefonía IP Open Source. El encuentro se dirige tanto a desarrolladores, usuarios finales como a distribuidores.
Además les traigo un libro del año pasado acerca de [url=http://es.wikipedia.org/wiki/IAX2]IAX[/url], IAX (Inter-Asterisk eXchange protocol) es uno de los protocolos utilizado por Asterisk, un servidor PBX (central telefónica) de código abierto patrocinado por Digium. Es utilizado para manejar conexiones VoIP entre servidores Asterisk, y entre servidores y clientes que también utilizan protocolo IAX. Esta muy muy interesante.

Tanto las filminas como el libro de IAX estan en pdf en un folder que cree la URL es:
http://www.4shared.com/dir/16246487/e39bca55/Astricon2008.htm

La contraseña del folder es: voipsystemscr

En unos dias colgare las conferencias del 2009

martes, 27 de octubre de 2009

Implantación de passwords para realizar llamadas externas

Bueno un día de estos me tocó que un cliente me pidió implementar passwords para todos los usuario para realizar llamadas externas a números celulares, convencionales e internacionales, esto facilmente lo podemos lograr usando la aplicación VMAuthenticate(). Pero además el cliente quería que se guardaran los registros para hacer un costeo de llamadas, la idea es si la persona usa otro telefono o extensión que el * le pida un usuario y password que solo la persona sabe, con esto hay que alterar el callerid o editar el CDR(), aqui pongo los pasos que use, esto puede variar, se podria usar nada mas el usuario ingresado y sustituir la variable callerid(all) por "usuario <usuario>" (en este caso son iguales a extensiones), pero para poder usar el nombre del peer vamos a usar la base de datos de asterisk, en internet hay ejemplos usando mysql pero mejor no forzar más el procesador. Bueno a los hechos:

voicemail.conf

[contexto a usar]

1323 => 45754,Juan Perez

...

...

...

extensions.conf

exten => _8.,1,Playback(digiteusuario)

exten => _8.,2,Read(user,,6,2,10) ; aqui la función read, asigna el valor digitado a la variable user,el maximo de la palabra debe ser de 6 letras, se puede equivocar dos veces, y tendrá 10 segs de tiempo para digitarlo
exten => _8.,n,VMAuthenticate(${user}@default)  ; aqui pide el password
exten => _8.,n,Set(NAME=${DB(${user}/name)}  ; sacamos el callerid, esto se mostrará luego
exten => _8.,n,Set(CALLERID(all)=${NAME} <${user}>)
exten => _8.,n,NoOp(${CALLERID(all)})
exten => _8.,n,ChanIsAvail(Dahdi/2&Dahdi/6&Dahdi/7&Dahdi/8,j)   ; verifico que los canales esten libres
exten => _8.,n,Dial(${AVAILORIGCHAN}/${EXTEN:${TRUNKMSD}},60,wWTt)
exten => _8.,n,Busy(3)
exten => _8.,102,Playback(lineasocupadas)

===============================================================================



Ahora mi idea que se me ocurrió fue sacar todos los callerids del sip.conf y del chan_dahdi.conf y guardalos en la BD de asterisk para utilizarlo cada vez que lo ocupe:

Para tomar los CallerIds

Explicación: realizamos un grep a los archivos, con sed eliminamos callerid=,<,> y el " y lo guardamos en callerids.txt
grep callerid sip.conf | sed "s/callerid=//g" | sed -e 's/<//g' | sed -e 's/>//g' | sed -e 's/"//g' >> callerids.txt
grep callerid chan_dahdi.conf | sed "s/callerid=//g" | sed -e 's/<//g' | sed -e 's/>//g' | sed -e 's/"//g' >> callerids.txt

Ahora editamos el archivo callerids.txt para eliminar las pocas lineas que no ocupo

Luego creamos el script para insertarlo en la bd, en este caso use la conexión AMI(Asterisk Manager Interface) vía BASH:

vim crearDBNames
#!/bin/sh

echo "#!/bin/sh" > addAsterisk_name.sh
echo "#" >> addAsterisk_name.sh
echo "echo \"open localhost 5038\"" >> addAsterisk_name.sh
echo "sleep 1" >> addAsterisk_name.sh
echo "echo \"Action: Login\"" >> addAsterisk_name.sh

#El usuario y password son los que ponemos en manager.conf

echo "echo \"UserName: usuario\"" >> addAsterisk_name.sh
echo "echo \"Secret: password\"" >> addAsterisk_name.sh
echo "echo" >> addAsterisk_name.sh

#creamos un bucle while que lee cada línea del archivo callerids.txt
while read calleridname
do
usuario=`echo $calleridname |awk '{print $1}'`
echo "echo \"Action: DBPut\"" >> addAsterisk_name.sh
echo "echo \"Family: $usuario\"" >> addAsterisk_name.sh
echo "echo \"Key: name\"" >> addAsterisk_name.sh
echo "echo \"Val: $calleridname\"" >> addAsterisk_name.sh
echo "echo" >> addAsterisk_name.sh
done < callerids.txt
#Le damos permisos de ejecución al script
chmod +x addAsterisk_name.sh
./addAsterisk_name.sh |telnet

#FIN ARCHIVO

Luego chmod +x crearDBNames

./crearDBNames


NOTA: No debemos dejar espacios en blanco, al terminar un DBPut y empezar otro se separa por un "echo"

Espero que les sirva, hasta la próxima

Intalar Cancelador de Eco HPEC (DIGIUM) desde 0

Hola como un di a de estos me tocó instalar HPEC aquí posteo todos los pasos que hice, cabe recalcar que tuve que pasar de usar zaptel a dahdi pues funciona mejor y ya en dahdi existe la opción de definir que cancelador usar para cada canal, lo que si hay que tener cuidado es que dahdi no le cambie el orden de las tarjetas, en mi caso tenía una tarjeta t1 (puerto 1-24) y una tarjeta TDM2400P(puerto25-48) al instalar dahdi me cambio el orden de las tarjetas imaginense la editada de todos los peers que usaban   linea analógica jiji xD. Bueno a lo que vinimos

Instalación de HPEC


Procedimiento de descarga

1. Descargamos y desempaquetamos la versión de dahdi complete:

wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.2.0.2+2.2.0.tar.gz

tar -zxvf dahdi-linux-complete-2.2.0.2+2.2.0.tar.gz

cd dahdi-linux-complete-2.2.0.2+2.2.0

make

make install

make config

2. Descargar el HPEC.

Nos posicionamos en el directorio del cancelador, ya viene integrado con dahdi

cd /usr/src/dahdi-linux-complete-2.2.0.2+2.2.0/linux/drivers/dahdi/hpec/

wget http://downloads.digium.com/pub/telephony/hpec/32-bit/hpec-0.04.001-i386.tar.gz

tar -zxvf hpec-0.04.001-i386.tar.gz

LICENSE
hpec_x86_32.o_shipped

3. Baja el ejecutable para activar el cancelador

cd /root
wget -v http://downloads.digium.com/pub/telephony/hpec/32-bit/dahdihpec_enable
chmod +x dahdihpec_enable
mv -f /root/dahdihpec_enable /usr/sbin/
4. Descargar el archivo de registro para las licencias

cd /root
wget -v http://downloads.digium.com/pub/register/x86-32/register
chmod +x register

5.Procedimiento de Instalacion

cd /usr/src/dahdi-linux-complete-2.2.0.2+2.2.0/linux
make
make install

Nota: si es la primera vez que se va a instalar el dahdi leer el README para instalar primero el DAHDI

7)  Registrar las licencias

cd /root
./register

Nos aparecerá un mensaje como este:

During the registration process, please select "Digium" as the product
vendor, and "High Performance Echo Canceller" as the product type. When
prompted, please enter your key as in the following example:

Key: HPEC-ABC123 (es el ejemplo que sale jeje)

En la siguiente parte ponen su información personal

The registration utility will notify you of a successful registration.
Do you accept this licensing agreement (y/n)? y
First Name:
Last Name:
Company:
Address 1:
Address 2:
City:
State:
Postal Code:
Country:
Phone:
E-Mail:

Wrote license to /var/lib/digium/licenses/HPEC-EARDM2HUJKU9.lic

9)  Please load the 'dahdi' kernel module as in the following example:

Command-line Example:

modprobe dahdi

modprobe dahdi
/usr/sbin/dahdihpec_enable
Digium High-Performance Echo Canceller Enabler
Copyright (C) 2006, Digium, Inc.
Version SVN-trunk-r83
Use the '-l' option to see license information for software
included in this program.

Found key 'HPEC-XXXX' for X channels.
Found valid HPEC licenses for X channels.
Successfully enabled X channels.

Si al hacer /etc/init.d/dahdi restart

Nos tira un error como not found dahdi/ctl..... reiniciamos la máquina este mensaje lo tira la primera vez que instalamos.

Para crear la configuración default de las tarjetas hacemos: dahdi_genconf

Si queremos ver que tarjetas hacemos: dahdi_hardware y nos aparecerá algo como:

pci:0000:01:08.0     wcte12xp+    d161:8001 Wildcard TE122
pci:0000:06:08.0     wctdm24xxp+  d161:2400 Wildcard TDM2400P

Editamos el archivo: /etc/dahdi/system.conf y quedaría la parte del cancelador así:

# Span 2: WCT1/0 "Wildcard TE122 Card 0" (MASTER) B8ZS/ESF ClockSource
span=2,1,0,esf,b8zs
fxsks=25-48
echocanceller=mg2,31-48
echocanceller=hpec,25-30

Esto sería todo. Espero que le sirva a alguno en sus proximas instalaciones, si hay que jugar un poco con la opción echocancel en el archivo /etc/asterisk/chan_dahdi.conf

NOTA: En ciertas versiones de DAHDI, hay que editar el archivo de /etc/init.d/dahdi, y cambiar la palabra zaphpec por dahdihpec por ejemplo:
# zaphpec_enable not installed in /usr/sbin  antes zaphpec

if [ ! -f /usr/sbin/dahdihpec_enable ]; then

echo -n "Running zaphpec_enable: Failed"

echo -n "."

echo "  The zaphpec_enable binary is not installed in /usr/sbin."

return

fi

De ahi seguirían editando todas las opciones siguientes. Saludes

miércoles, 21 de octubre de 2009

Organizar y controlar los logs de Asterisk

Estaba leyendo en sinologic.net que Jon Bonilla ha publicado un estupendo tutorial sobre cómo organizar el log de Asterisk, realmente imprescindible para sistemas de alta carga o que generan muchos mensajes y que necesitamos controlar para saber qué está haciendo Asterisk en ese momento. Estos es estupendo para los que tenemos que lidear con grandes cantidades de Logs, por ejemplo si tenemos que verificar los gateways H323 y el log esta creciendo constantemente en tiempo real se hará muy complicado, chequeen esta solución aquí

martes, 20 de octubre de 2009

Siete pasos para mejorar la seguridad en SIP con Asterisk


Hola aqui dejo un post resumen de un comunicado de Digium acerca de algunos tips ha tener en cuenta con respecto a la seguridad en SIP, link:

  1. No aceptar SIP autentication request desde cualquier dirección: usar permit y deny en el sip.conf para permitir solo el pool de IP's que sepamos que van a intentar registrarse.  Poner allowguest=no, en el sip.conf.

  2. Poner alwaysauthreject=yes en el sip.conf: Esta opción esta por defecto en "no",  lo que va a permitir fugas de información de extensiones. Poniendolo en “yes” vamos a denegar las bad authentication requests en usernames validos, denegando así a los atacantes remotos la habilidad de dtectar extensiones con ataques de fuerza bruta.

  3. Usar passwords fuertes: Usar símbolos, números, y mezclar con letras mayúsculas y miniscúlas, por lo menos que sean passwords de 12 dígitos de largo.

  4. Bloquear los puertos del AMI manager: Usar las líneas “permit=” y “deny=” en el manager.conf para reducir la cantidad de petición de conexiones sabiendo unicamente el host. Usar passwords fuertes, usar símbolos, números, y mezclar con letras mayúsculas y miniscúlas, por lo menos que sean passwords de 12 dígitos de largo.

  5. Permitir solo una o dos llamadas a la vez para usuarios SIP: usar la expresión call-limit=2.

  6. Crear los usuarios SIP diferentes de las extensiones: usar la dirección MAC de la tarjeta de red, o alguna combinación de una frase común + el hash de la extensión en MD5 (ejemplo: escribimos en el shell, "md5 -s elpassword2550" 2550 sería la extensión?).

  7. Asegurarse que el contexto [default] es seguro: No permitir que llamantes no autenticados puedan llegar a algun contexto que permita realizar llamadas. Prohibir llamadas sin auntenticación permanentemente poniendo “allowguest=no” en la sección [general] del sip.conf.