Telefonía IP libre, cifrada, descentralizada y federada

Los gilipollas, los violentos, los prohibitivos, los irrespetuosos, los mandos, los narcisos, los del ego irracional, los de los billetes, los amenazantes, los negativos, los de esto es una comunidad donde se hace lo que yo digo, los vengativos, los lanzaderas, los que siempre mienten y se ocultan, los que no son capaces de pedir perdón, los que buscan esclavos, los que no admiten crítica, los que creen siempre llevan la razón, los fama, los que creen que la “causa” sirve para pisar a quien sea, los que se enfadan por todo, los que le echan la culpa siempre al otro tú, tú, tú, tú, nosotros los putas; serán seremos devorados por nuestra propia rabia y odio. O mostremos una chispa de humanidad, cojones.

La libertad ya no es un derecho, sino una obligación, en ese espacio los habrá que adquieran una responsabilidad y otros muchos que usen esa obligación para seguir medrando, creerse el impune. Tan simple, como mostrar toda su pobreza del alma, allí en el anonimato, nadie se esconde.

A los cotillas nos encanta hablar, humanidad, de todo lo mundano. De pequeños íbamos a la mesa de mandos de clavijas de la telefónica, donde nuestra tía del pueblo, enrutaba todos los secretos de la pedanía.

Ahora, no se qué gobierno de no se qué país, quiere legalizar las escuchas telefónicas sin orden judicial, algo que ya se hace mediante SITEL; pues telefonía ip libre, cifrada, descentralizada y federada y a comedme el coño.

Se elige kamailio, un enrutador eficiente, para el protocolo SIP, que a diferencia de asterisk no maneja “medias” ni “codificación” de los flujos de audio, entre otras muchas cosas. Por lo tanto, kamailio es liviano, con posibilidad de ser levantado en placas de bajo consumo energético, y libres, como las olimex A10 o A20. Y si el objetivo es llamadas y sms cifrados, sin más líos, Kamailio.

Instalando

Sobre una Debian 7 con MariaDB (cómo) procedemos a instalar y configurar kamailio, una línea desde la red privativa github:

su -
wget -O - https://raw.githubusercontent.com/gurumelo/ostnkamailio/master/kamailio.sh | bash

Para placas arm como raspberry pi, este procedimiento no funciona. Repositorio no cuenta con compilados para arquitecturas ARM, pero se puede compilar.

Si quieren ahondar en la compilación sobre ARM https://pad.elbinario.net/p/kamailio

Para quienes tengan la máquina a mano tras el router como ignurante http://www.fredposner.com/1457/kamailio-behind-nat/

Siguiente, siguiente, siguiente… Como nombre de usuario es adecuado elegir una extensión numérica telefónica, esto permite que teléfonos antiguos rj11 con un conversor rj11→voip→rj45, puedan ser usados como un cliente de la red.

Tras terminar, tendremos una centralita con SSL/TLS, soporte ZRTP, sms’s y llamadas.

Configurando clientes

Una vez levantado servidor, un cliente adecuado libre para probar que todo funcione, puede ser CsipSimple, está disponible en f-droid. Sin detalles, los pasos son:

  1. Elegimos en el wizard una cuenta [OSTN]
  2. Cumplimentamos con extensión, contraseña y dominio o ip de la centralita

Federando

Se entiende por federar la habilidad de diferentes nodos, poder comunicarse entre si. Algo tan olvidado en estos días de centralización. La federación entre centralitas se produce a través de registros DNS.

Dominio sirve kamailio:

_sip._udp IN SRV 20 0 5060 nombrededominio.net.
_sip._udp IN SRV 20 0 5061 nombrededominio.net.

Se quiere usar dominio principal pero la máquina que sirve kamailio es otra

_sip._udp.nombrededominio.net. IN SRV 20 0 5060 OTRAMAQUINASUBDOMINIO.nombrededominio.net.
_sip._udp.nombrededominio.net. IN SRV 20 0 5061 OTRAMAQUINASUBDOMINIO.nombrededominio.net.

Y a tomar por culo.

Si dudas, comentarios. Se está preparando una api en node.js para abrirse una cuenta voip rápidamente.

11 Comments

  1. Genial +1, yo ando trasteando en casa con un pbx en asterisk, conocía kamalio de un proyecto de videoconferencia de VOIP, pero nunca lo había probado, Le echare un vistazo, Hacia la autogestion y mas allá ;)

  2. No dejes de poner musica en tus post. Un 10 por elegir esa canción,

    Como dice Brown:
    Muy grande! En todos los sentidos :)

  3. Pues esto nos viene de puta madre ahora que queremos ofrecer este servicio. Pensamos el otro día en asterisk pero lo mismo esto es mejor. Es cosa de trastear.
    Este finde vamos a trastear con esto. Estaría bien que te pasases si quieres.

    1. Creo que kamalio es una muy buena opción para lo que queréis hacer, asterisk es una suite completa con un montón de opciones que no tiene kamalio, como soporte de conferencia,buzón de voz,etc.. que no necesitáis para vuestro proyecto.

      Lo único que puede dar algún problemilla es apuntar bien los registros SRV en el DNS que uséis, para el protocolo SIP.

      Últimamente no tengo un hueco pero intentare pasarme un dia.

  4. qué hermoso sería que todas/os pudiéramos hacer esas auto-críticas.

    Al menos alguien tiene esa nobleza

  5. Si el script se ejecuta más de una vez (ya sea por que de fallo algo) meterá varias veces en /etc/apt/source.list estas lineas

    deb http://deb.kamailio.org/kamailio wheezy main
    deb-src http://deb.kamailio.org/kamailio wheezy main
    deb http://deb.kamailio.org/kamailio wheezy main
    deb-src http://deb.kamailio.org/kamailio wheezy main
    deb http://deb.kamailio.org/kamailio wheezy main
    deb-src http://deb.kamailio.org/kamailio wheezy main
    deb http://deb.kamailio.org/kamailio wheezy main
    deb-src http://deb.kamailio.org/kamailio wheezy main
    deb http://deb.kamailio.org/kamailio wheezy main
    deb-src http://deb.kamailio.org/kamailio wheezy main
    deb http://deb.kamailio.org/kamailio wheezy main
    deb-src http://deb.kamailio.org/kamailio wheezy main
    deb http://deb.kamailio.org/kamailio wheezy main
    deb-src http://deb.kamailio.org/kamailio wheezy main

    De forma que se duplican y si se quiere lanzar de nuevo ha de eliminarse para que no de error de sources duplicados.

    En caso de ejecutarlo una segunda vez el script este no comprueba si existe ya la base de datos kamailio de modo que da error. Esto supongo se puede controlar para que en caso de existir indique si se desea usar la misma o generar otra (o eliminar esa y crearla de nuevo).

    INFO: test server charset
    INFO: creating database kamailio …
    ERROR 1007 (HY000) at line 1: Can’t create database ‘kamailio’; database exists
    ERROR: Creating database kamailio failed!

    Con kamdbctl drop kamailio se puede eliminar antes de ejecutar el script de nuevo.
    Como parte final si se ejecuta más de una vez (ya sea por que se mete mal algo) esto generará también error en el archivo /etc/kamailio/kamailio.cfg y no se ejecutará. Saldrán duplicadas muchas lineas.

    El tema de apt se puede solucionar editando el script un poco:

    echo -e “\o/ Instalación de kamailio”

    kamasutra=$(grep “deb.kamailio.org/kamailio” /etc/apt/sources.list | wc -l)
    if [ “$kamasutra” -ge 1 ]; then
    echo “Los repositorios ya andan en /etc/apt/sources.list”
    else
    apt-key adv –recv-keys –keyserver keyserver.ubuntu.com 0xfb40d3e6508ea4c8
    echo “deb http://deb.kamailio.org/kamailio wheezy main” >> /etc/apt/sources.list
    echo “deb-src http://deb.kamailio.org/kamailio wheezy main” >> /etc/apt/sources.list
    apt-get update
    apt-get install kamailio kamailio-mysql-modules kamailio-tls-modules rtpproxy
    fi
    usermod -a -G rtpproxy kamailio

    Y el resto un poco también controlando si no existen ya las cosas.

    Saludos.

  6. Desinstalación

    #!/bin/bash
    apt-get remove --purge kamailio kamailio-mysql-modules kamailio-tls-modules  rtpproxy
    deluser kamailio
    sed -i "s|deb http://deb.kamailio.org/kamailio wheezy main||g" /etc/apt/sources.list
    sed -i "s|deb-src http://deb.kamailio.org/kamailio wheezy main||g" /etc/apt/sources.list
    echo "DROP DATABASE kamailio; DROP USER 'kamailio'@'localhost'; DROP USER 'kamailioro'@'localhost';" | mysql -u root -p
    apt-get update
    

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax