Blog

  • Cómo configurar un fax virtual T38 en Asterisk

    Partiendo que no lo he probado aún (a ver si durante estas necesarias vacaciones puedo dedicarle un ratito), he visto un artículo muy interesante sobre el T38modem, una especie de IAXmodem pero con soporte para enviar faxes mediante T38 con Asterisk.

    Asterisk soporta T38 en modo passthrough en SIP, esto es, lo deja pasar, pero no iniciar ni acabar una llamada.

    Justamente, el T38modem se basa en la misma filosofía que el IAXmodem por lo que sería posible disponer de esta ventaja tal y como comentan utilizando Hylafax como servidor de faxes de la misma manera que podríamos tenerlo con el IAXmodem pero con T38 en lugar de T30. Suena bien, ¿verdad? 😀

    Vamos a ver cómo se hace:

    cd ~
    cvs -z9 -d :pserver:anonymous@openh323.cvs.sourceforge.net:/cvsroot/openh323 co ptlib_unix
    cvs -z9 -d :pserver:anonymous@openh323.cvs.sourceforge.net:/cvsroot/openh323 co -D «5/21/2007 23:59:59» opal
    cvs -z9 -d :pserver:anonymous@openh323.cvs.sourceforge.net:/cvsroot/openh323 co t38modem

    Con esto habremos descargado las librerías y la aplicación t38modem.
    Ahora vamos a compilar:

    cd ~/pwlib
    ./configure
    make
    sudo make install

    cd ~/opal
    ./configure
    make
    sudo make install
    sudo ldconfig

    cd ~/t38modem
    make USE_OPAL=1 USE_UNIX98_PTY=1 opt
    make USE_OPAL=1 USE_UNIX98_PTY=1 install

    Vamos a probar que realmente se ha instalado y funciona…

    /usr/local/bin/t38modem -tt -o /var/log/t38modem.log –no-h323 -u T38modem –sip-listen udp\$127.0.0.1:6060 –sip-redundancy 3 –ptty +/dev/ttyT38-1,+/dev/ttyT38-2,+/dev/ttyT38-3 –route «modem:.*=sip:<dn>@127.0.0.1» –route «sip:.*=modem:<dn>»

    Ahora vamos a preparar la configuración para 3 módems, para lo que supondremos que hemos instalado previamente el servidor Hylafax como indica Julian en su web y continuaremos:

    cp ~/t38modem/HylaFAX/config.ttyx /var/spool/hylafax/etc/config.ttyT38-1
    ln -s /var/spool/hylafax/etc/config.ttyT38-1 /var/spool/hylafax/etc/config.ttyT38-2
    ln -s /var/spool/hylafax/etc/config.ttyT38-1 /var/spool/hylafax/etc/config.ttyT38-3

    Como en el IAXmodem, vamos a modificar el archivo inittab para que esté siempre activa esta aplicación:

    echo «t1:2345:respawn:/usr/sbin/faxgetty ttyT38-1» >> /etc/inittab
    echo «t2:2345:respawn:/usr/sbin/faxgetty ttyT38-2» >> /etc/inittab
    echo «t3:2345:respawn:/usr/sbin/faxgetty ttyT38-3» >> /etc/inittab
    kill -HUP 1

    Reiniciamos el servidor Hylafax:

    /etc/init.d/hylafax restart

    Y chequeamos que todo está funcionando corréctamente:

    cat /var/spool/hylafax/status/ttyT38-1

    Lo que nos debería mostrar un mensaje como este: Running and idle

    Ahora vamos a ver cómo conectamos el T38modem a Asterisk, para lo que crearemos un usuario SIP propio en /etc/asterisk/sip.conf

    [T38modem]
    type=friend
    host=127.0.0.1
    permit=127.0.0.1
    context=outgoing
    port=6060
    allow=all
    canreinvite=no

    y en este mismo archivo, en el contexto [general]:

    t38pt_udptl=yes

    Para enviar faxes, tan solo hay que utilizar algún cliente Hylafax y será el usuario T38modem el que se encargue de hacer la llamada mediante T38 por SIP. 🙂
    Para recibir faxes, como siempre, enviando el fax entrante a SIP/${EXTEN}@T38modem.

    Si a alguien le funciona, se agradece un comentario.
    Si teneis problemas, lo que he dicho antes… a pelearse y googlear un poco. 😛

    Enlace: http://voip-info.org/wiki/view/T38modem+configuration+with+Asterisk

  • Transmitiendo archivos por audio en Asterisk

    Como si fuera un Amstrad CPC 64 con su cinta para transmitir datos procedente de una señal de audio, la gente de 5-in-5 están desarrollando un método para transmitir archivos mediante audio a través de Asterisk: Asterisk File Transfer Protocol (A-FTP).

    La pega, como en aquel entonces, es la velocidad. Llegan a transmitir una fotografía de 8kb en apenas 3 minutos y 29 segundos (uauu!!!) XD

    La técnica consiste en convertir un archivo cualquiera en sonidos audibles utilizando para ello los algoritmos de CSound. Una vez obtenido el archivo de sonido, el sistema llama a otro Asterisk encargado de hacer el paso contrario y convertir esos sonidos en un nuevo archivo de datos.

    Muy curioso.. 🙂

    Más información: http://5-in-5.com

  • A por la estandarización de Asterisk

    Cada empresa que instala y configura Asterisk dispone de alguien con conocimientos suficientes para hacer esta labor, algunos tienen más conocimientos y otros no tantos pero en el fondo, cada uno cuenta con dos puntos importantes: capacidad de aprender y un objetivo a cumplir, donde este será instalar un sistema, instalar Asterisk, configurar los dispositivos, tarjetas, líneas, etc, y configurar Asterisk como lo necesite su empresa o su cliente.

    Cuando ocurre algún inconveniente o un comportamiento no esperado se suele buscar ayuda bien en la lectura de numerosas webs, blogs, listas, foros, etc… o bien diréctamente a cualquiera que pueda ayudar.
    Es aquí donde empiezan los problemas iniciales. Cada uno ha aprendido por su cuenta, buscando, encontrando, leyendo y preguntando, de ahí se sacan conclusiones propias y uno hace lo que buenamente sepa o pueda.

    De la misma manera que el software libre da libertad de escoger cómo, cuándo, dónde y porqué, configurar Asterisk también da bastante libertad y un comportamiento puede realizarse de varias maneras y todas válidas (mejores o peores) pero el desconocimiento o una falta de metodología adecuada suelen acarrear inconvenientes, no únicamente por lo que hayamos hecho o dejado de hacer, si no a la hora de preguntar y esperar una respuesta. Cada persona tiene su técnica, sus trucos y consejos que hacen que, en teoría, una configuración que se comporte igual a otra, sean diferentes y dichas diferencias pueden sorprendernos con comportamientos no deseados.

    Concretamente, el confiar en que no definiendo un parámetro en algún archivo de configuración, el comportamiento será correcto, no se cumple en Asterisk (básicamente porque el comportamiento habitual de los sistemas de comunicaciones en España es bastante diferente al de EEUU) y muchas personas se dan cuenta que el hecho de poner un parámetro resuelve todos sus problemas.

    Por este motivo, el equipo de desarrolladores de Asterisk tiene muy mal acostumbrado a los usuarios que les permiten «omitir» ciertos valores en determinados parámetros sin recibir ni un triste mensaje de aviso o error, algo que para los ojos de la persona que desconoce la importancia de este parámetro, representaría la diferencia entre acabar felizmente y pasarse una semana leyendo listas de correos y foros.

    Por poner un ejemplo, al definir un usuario SIP en el archivo ‘sip.conf’, el parámetro ‘host’ es imprescindible y sin ella, simplemente no podremos registrarnos con ese usuario, no obstante, si nos olvidamos de definirlo, Asterisk ni se inmuta, no dice nada, lo ve normal y no se queja. ¿Resultado? algo tan sencillo como definir un usuario SIP, se puede llegar a convertir en toda una tortura para la persona que no caiga en este detalle.

    En la configuración del extensions.conf, la cosa se complica, ya que además, no solo hay que conocer qué hay detrás de una llamada entre una extensión y otra, si no que además debemos escribirlo a sabiendas que el jefe, cliente o quien vaya a utilizar el sistema, seguro que va a querer cambiar el comportamiento de esta, de manera que todo lo que hagamos debe ser planteado de forma que sea fácil y rápidamente modificable y no nos suponga empezar desde cero.

    Fallos tan garrafales como comunes como poner un Answer() antes del Dial(..), hacen que el sistema no se comporte como esperemos y eso puede provocar grandes pérdidas de tiempo que para una empresa, se convierte en dinero.

  • Cuidado con los servidores DNS en Asterisk

    Muchas personas, para evitar que su servidor Asterisk se quede bloqueado en el caso en que falle la conexión a Internet, suelen recurrir a diversas técnicas (explicación):

    • Utilizar direcciones IP en lugar de nombres de dominio.
    • Añadir los nombres de dominio que vayan a utilizar en el archivo /etc/hosts.
    • Instalar un servidor DNS en la red local que le sirva de caché y aisle las peticiones de resolución de nombres.

    En muchos casos, la primera opción no es viable, ya que muchos proveedores de servicios IP utilizan el mismo nombre de dominio para realizar round-robin y distribuir la carga entre varios servidores con distinta IP pero el mismo nombre de host.

    Son muchos los que optan por instalar el servidor DNS en el mismo sistema o bien dentro de la red local, pero aquí es donde hay que tener especial cuidado.

    Los servidores DNS son accesibles mediante los puertos 53 UDP y TCP (en algunos casos) y si estos son accesibles desde internet, y los utilizan los sistemas de nuestra red puede ocurrir que seamos vulnerables a diversos exploits e «inyecciones falsas» de registros IP/nombres en la caché DNS lo que puede llevarnos a páginas falsas o incluso a ataques phishing.

    Ahora, con las últimas vulnerabilidades encontradas (y publicadas) en el mismísimo protocolo de DNS son muchos los que se están aprovechando de esto.

    Concretamente, hoy he visto logs de ataques y donde consiguen inyectar direcciones IPs de diferentes páginas (de spam y porno por lo general) en servidores Bind.

    Por suerte, hay técnicas para prohibir el acceso al servidor DNS desde direcciones IPs diferentes a las de la red local, desde el propio servidor Bind o bien desde el maravilloso iptables de Linux.

    Así que… cuidado con los servidores DNS que tengamos instalados, no vayan a darnos alguna sorpresa desagradable. 🙂

  • Adiós OpenSer, Hola Kamailio!

    Por la web de Saúl me entero de una noticia sorprendente: el proyecto OpenSER cambia de nombre a Kamailio.

    Como suele suceder en estos casos en los que un proyecto conocido cambia de nombre, es para evitar problemas con marcas registradas y por lo general, pertenecientes a empresas, por lo que además de poder encontrar la información pertinente en la conocida web OpenSER.org, la página web oficial se trasladará a Kamailio.org (actualmente es la misma) aunque la anterior seguirá funcionando durante el traslado.

    La palabra Kamailio es una palabra hawaiiana que significa «hablar o conversar«. Por lo visto esta palabra es fácil de recordar y el significado continua en sintonía con el objetivo de la aplicación. 🙂

    Como indica Saúl, el logotipo no lo han cambiado por ahora, pero seguro que pronto nos toparemos con más novedades como suele ocurrir en estos casos, en los que, aprovechando que se cambia el nombre, también se cambian más cosas. Esperemos que el buen ambiente de la comunidad, y el alto nivel de desarrollo continúen como hasta ahora. 🙂

    Más información: http://www.kamailio.org

  • AsteriskColombia publica un set de voces para Colombia

    Mediante un comentario en la web me avisan que la empresa NetSecuritySolution acaba de publicar un conjunto de voces en español para Colombia llamado K-rem. Pese a que comentan que son voces neutras, la verdad es que un poquito sí que se nota que proceden de Colombia, he de decir que suenan bastante bien y el detalle de haberlo publicado para la comunidad Asterisk, lo que es muy de agradecer y desde aquí le damos las gracias por su apoyo a la comunidad de Asterisk.

    Podeis escuchar un ejemplo de estas fantásticas voces en este enlace: ivrrecording

    No obstante, (ahora una crítica constructiva a esta empresa) para poder descargar este conjunto es necesario «registrarse» en la página web de la empresa NetSecuritySolutions lo cual no aconsejo ya que los comerciales tienen la fea costumbre de enviar spam a todo usuario interesado en Asterisk, y entre esta fea costumbre y lo «originales» que pueden llegar a ser los diseñadores webs utilizando el logo de Asterisk que hice hace algún tiempo para Sinologic con la aprobación expresa de Digium para su uso en este blog (como podeis ver en la imagen de abajo) tan solo me queda animar a esta empresa a que cambien de «estrategia comercial» por alguna más original y sobre todo legal.

    Enlace: http://www.netsecuritysolutionsltda.com
    (Descarga directa)

  • FreeSWITCH 1.0.1 Released!

    Veo que acaban de anunciar la versión 1.0.1 de FreeSWITCH.
    Entre las ventajas que incluye esta versión frente a la versión 1.0, se encuentran:

    • ASR Open Source (mod_pocketsphinx)
    • TTS Open Source (mod_flite)
    • Improved ACL with user matching.
    • Soporte mejorado de SNOM.
      entre otras… 🙂

    Enlace: http://www.freeswitch.org/node/130

  • Softphone SIP para PocketPC y compatible con WM5

    Con el éxito de los PocketPC y móviles-PDA han ido apareciendo últimamente muchos softphones comerciales y alguno que otro gratuito, la mayoría compatibles con SIP y alguno que otro IAX, pero casi todos requieren de Windows Mobile 6. Pues he encontrado uno con una pinta bastante interesante y que funciona con Windows Mobile 5 (WM5).

    SetupVoIP es un softphone SIP bastante curioso y muy, muy simple de configurar y aunque no sea libre, por lo menos, es gratuito (freeware).

    Descargar (mirror 1)
    Descargar (mirror 2)

  • Fedora lanza su servicio de VoIP basada en Asterisk

    Fedora, el grupo de desarrollo Open de RedHat, ha anunciado el lanzamiento de Fedora Talk, un servicio gratuito para aquellos usuarios registrados de Fedora y que permitirá realizar llamadas entre usuarios mediante SIP, así como poder recibir llamadas desde teléfonos (EEUU y UK) para contactar con los usuarios conectados.

    Este servicio está basado íntegramente en Asterisk como indica su página web y esperan crecer y poder ofrecer servicios adicionales.

    El futuro está abierto a interpretaciones 🙂

    Enlace: http://talk.fedoraproject.org/index

  • Asterisk 1.4.21.2 y 1.2.30 Released!

    Empezamos el día con una nueva versión de Asterisk: acaba de ser lanzada 2 nuevas versiones de Asterisk, debido a 2 bugs encontrados en el IAX que han sido gestionados como vulnerabilidades como podeis ver en: AST-2008-010 y AST-2008-011.

    Las nuevas versiones las encontrareis en:
    http://downloads.digium.com/pub/asterisk/