lunes, 6 de enero de 2014

Volviendo a configurar WPA y la red en Debían

Esta configuración, aunque básica, es de esas que se hacen apenas una vez por instalación y te olvidas. Como hacía tiempo que no tenía que ponerla, había cosas que no me acordaba cómo se indicaban en los ficheros correspondientes. Por lo que aquí voy a contar, lo más rápido posible, qué poner para que al menos funcione todo el tinglado. A tener en cuenta que algunas cosas a lo mejor sobran.

El fichero /etc/network/interfaces:

#auto fuerza a que se cargue al iniciar el sistema
auto lo
iface lo inet loopback

#allow-hotplug iniciliza la interfaz cuando el kernel detecta que se ha conectado la interfaz en caliente
allow-hotplug wlan0
auto wlan0

#quiero que el direccionamiento sea estático
iface wlan0 inet static
  addess 192.168.1.123
  netmask 255.255.255.0
  gateway 192.168.1.1
  wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

En realidad, después de la instalación, me había metido mucha más morralla, pero entre que no me acababa de gustar, que no me conectaba a la wifi, y que podía indicarle esos datos por otros medios, decidí comentarla. Con estas líneas, funciona bien.

Para más información (como por ejemplo, más configuraciones), podemos encontrarla este mismo enlace, buscando este fichero que estamos modificando.

Para la resolución de nombres, es decir, para los DNSs, puedes introducir los datos en el fichero /etc/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4

Siempre tengo la duda de si es nameserver o nameservers. He puesto estas direcciones como podría haber puesto otras. Con esto debería de servir.

Ahora, vamos a modificar /etc/wpa_supplicant/wpa_supplicant.conf. Creo recordar que la primera vez que hice la configuración de wpa_supplicant estaba directamente en /etc/, pero viendo que puedes indicar dónde tiene que buscar el fichero, lo mismo da. Con tal de que el sistema sepa dónde cogerlo, no debería de importar mucho:

#Directorio donde se crearán los distintos sockets para cada una las interfaces de red que necesiten estas ocnfiguraciones:
ctrl_interface=/var/run/wpa_supplicant
#Grupo o GID de aquellos que quieras que puedan cambiar la configuración de la interaz. Por defecto (y si no se pone), será el de root. Podrías cambiarlo, por ejemplo, al nombre de grupo wheel.
ctrl_interface_group=0

network={
  ssid="nombreDeTuRed"
  scan_ssid=1
  proto=WPA
  key_mgmt=WPA-PSK
  psk="elChorroDeLaPassMásGrandeEnFormatoCamelloSiAsíLoDeseas"
}

En principio, teniendo esto cargado, debería de funcionar. Una forma de probarlo, y ver wpa_supplicant está funcionando, sería ejecutar esto:

wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf

Si se queja de que algún parámetro no está bien puesto, tendrás que mirarlo. En micaso eran alguno de las opciones del wpa_supplicant.conf que no existían o tenían un valor erroneo. Y me indicaban cuál era. A mi me está dando un aviso, pero sí me funciona la conexión:

ioctl[SIOCSIWENCODEEXT]

Sale dos veces. Pero, las pocas búsquedas que he hecho no me han ayudado mucho (también mucha perecitis, después de la comilona de hoy).

Aún así, si quieres más información sobre qué significa cada cosa, tenemos un ejemplo de fichero de configuración que está comentado.

En principio, esto ya funciona y está conectado al router / AP y a internet. Si haces ping hacia una dirección externa deberías de poder salir hacia afuera.

Con esto, ya tenemos una pequeña documentación para cuando dentro de unos pocos años volvamos a necesitarlo, poder tirar de aquí sin ningún problema.

sábado, 4 de enero de 2014

Pepelux's perl script

Como ya sabéis, he estado montando una FreePBX en una raspberry pi. Una de las cosas que tenía pendientes era pasar un script que Pepelux (Jose Luis Verdeguer, @pepeluxx) montó para la última Rooted (2013) y que analizaba la configuración del sistema. De esta forma, se podía saber si alguna de esas configuraciones era deseable que estuviese por defecto o no. En mi caso, he tenido que comentar dos líneas que son las que hacen referencia al netstat, porque, posiblemente, no existe esa librería para la arquitectura de la rasp.

Este es el estado en el que me he encontrado mi sistema:

Perl Pepelux Script: Estado actual del asterisk
Estado actual del asterisk
Por lo tanto, vamos a ir viendo cómo puedo ajustar los valores en la medida de lo posible.

Lo primero que he hecho ha sido crearme un usuario nuevo:

#useradd -G users -m -N paquitoelchocolatero
#passwd paquitoelchocolatero

Ahora, podremos acceder al sistema utilizando este usuario desde el servcio de ssh. Por si las moscas, asegúrate de que es así. Además, prueba que puedas elevar privilegios. ¿Funciona? Muy bien. En el caso de que no sea así... Ahora no se me ocurre la razón. En caso contrario, ahora serás root. Y, estando con este usuario, vas a tener que abrir con el editor nano el fichero /etc/ssh/sshd_conf

#nano /etc/ssh/sshd_conf

Busca la línea PermitRootLogin y cambia el estado de yes a no. Vamos a reiniciar el servicio, por lo que tus sesiones se van a cerrar:

#/etc/init.d/ssh restart

Ahora, podemos comprobar cómo el usuario root no es capaz de acceder al sistema. En cambio, paquitoelchocolatero sí que podrá entrar. Además, será capaz de elevar privilegios, por lo que podremos volver a ejecutar el script y el aviso sobre PermitRootLogin habrá desaparecido.

Ya puestos a manipular el servicio ssh, vamos a autorizar sólo las conexiones internas. Tendremos que descomentar ListenAddress (en mi caso, para IPv4) y ponerle un valor. Yo he puesto la misma IP que tiene la tarjeta de red. ¡Ojo! Si se hace mal podrías perder la conexión con el dispositivo y para solucionarlo acceder de forma local. Si no tienes una pantalla y un teclado conectados... Malo. Yo reiniciaría otra vez el servicio.

Ahora voy a arreglar el aviso que dice que los logs son propiedad de asterisk. Estos logs se buscan en /var/log/. Por lo tanto, visitando esta ruta, nos encontramos con que la carpeta que hace referencia a asterisk tiene tanto el usuario como el grupo pricipal asterisk. Lo que voy a hacer va a ser lanzar un cambio de dueño y de grupo recursivo para root.

#chown -R root asterisk/
#chgrp  -R root asterisk/

Eso sí,  mucho ojo porque, de momento, con esta forma dejará de dar la alerta de los propietarios de estos ficheros mientras que no reinicies el equipo. Después se vuelven a crear algunos con permisos de Asterisk.

Otro cambio que voy a hacer es eliminar la posibilidad de que se conecten "invitados". Por lo que seguiré el consejo del script y pondré el valor allowguest = no en el fichero /etc/asterisk/sip.conf. Pero, ¡ojo! Te dicen que no lo cambies, por lo que tendrás que hacer las modificaciones a través de la interfaz web. Habrá que ir a Settings --: Asterisk SIP Settings, y buscar Allow SIP Guests. Como de costumbre, habrá que guardar los cambios y aplicarlos con el botón rojo que aparecerá después de guardarlos. Por cierto: si estás con la distribución raspbx tendrás que hacer un cambio en el script:
  1. En mi distribución está buscando en un fichero que no es el que se espera. Habría que cambiar la apertura del fichero sip.conf al sip_general_additional.conf.
Si el script no encuentra el valor allowguest=no devolverá que está puesto a yes. Independientemente de si tiene asignado ese valor o si ni siquiera aparece dicha asignación.

Con respecto al useragent que dice que hay que cambiar, he hecho varias pruebas. Por no hacer más caótico todo esto, vamos a ver si puedo explicarlo rápido. Se puede añadir el parámetro desde la misma sección del Asterisk SIP Settings. Abajo del todo, puedes añadir otros valores. Ahí he puesto el parámetro useragent, con el valor que más me ha gustado. Ahora bien, nos encontraremos con que tenemos el parámetro repetido dos veces en el fichero sip_general_additional.conf. Podrías modificarlo, algo desaconsejado, porque cualquier cambio que apliques con el famoso botón rojo puede echarlo para atrás. No sirve quitar el valor que no deseamos, tarde o temprano, volverá.

Ahora voy a cambiar la configuración del AMI. Según he podido leer, las siglas AMI proceden de Asterisk Manager Interface. La entrada de mi búsqueda de la cual me he leído los dos primeros párrafos es esta. Lo que quería ver es si al desactivarlo, un softphone sigue funcionando, ya que esperaba que éste hiciese de cliente. Pero, editando /etc/asterisk/manager.conf:

FreePBX /etc/asterisk/manager.conf
FreePBX /etc/asterisk/manager.conf
...dicen que FreePBX (que es en lo que se sustenta nuestra distribución) tiene que tenerlo activado, por lo que poner el valor enabled = no no será una opción. Pero sí podremos cambiar las contraseñas por defecto. La primera contraseña la tendrás que cambiar desde Settings --> Advanced Settings. Ahí donde pone Asterisk Manager Password. Te recomiendo que hagas un backup de la instalación/configuración. Me ha dado una serie de problemas. Si cuando guardes el cambio (justo a la derecha del textbox donde introducirás la nueva contraseña), y después de darle al típico botón rojo de "apply changes", te diese algún error gordo indicándote de que no se puede hacer el cambio, como podría ser
WARNING[5297] security_events.c: Required IE '50' for security event type '12' not present
NOTICE[5297] manager.c: 127.0.0.1 failed to authenticate as 'admin'
hay una posible solución. A mi, después de varias pruebas, me ha funcionado lo siguiente:

  1. Cambiar a mano los ficheros /etc/amportal.conf y /etc/asterisk/extensions_additional.conf . 
  2. Busca el campo que tiene la contraseña amp111. Le tendrás que poner el mismo valor que se ha puesto en la interfaz web.
  3. Reiniciar el dispositivo.
  4. Para terminar, volver a la interfaz web y aplicar los cambios. 

Con respecto a la alerta de la versión, tengo malas noticias. Tendría que salir un dato entre paréntesis. Pero no sale nada. Eso es porque el error que nos salta sobre yum es que intenta lanzar un comando de un gestor de instalación de paquetes que no tenemos. Hay varias formas:

  • apt-cache showpkg freepbx : Esta es la que encontré por mi mismo. Pero no me servía muy bien porque tenía que hacer mucho scripting del que tengo muchas lagunas. 
  • apt-show-versions freepbx : Nuestra distribución no cuenta con este, por lo que también lo descarto. Los otros mostrados de apt no me gustaban. No me hace falta saber nada sobre los paquetes remotos.
  • aptitude versions freepbx : Casi: pero ese retorno de carro...
  • dpkg -s freepbx | grep Version | sed -e 's/Version: /''/g' : Este creo que sí que me va a servir. 
    • Obviando el sed: Nos devuelve una sóla línea que empezará por "Version: ".
    • El comando sed se encargará de reemplazar esa misma cadena por otra vacía. Aunque con las expresiones regulares se podría obviar esta última pipe.
Tendremos que editar el script, y en el contenido del método version(). Será el contenido de la función system(), con alguna de las opciones que acabo de describir. Después, habrá que acordarse de cambiar las expresiones regulares que hay dentro del while(). Me gustaría poder decir que he tenido suerte y que he conseguido que me guarde el resultado en el fichero, pero sale vacío si se hace desde perl. Por lo que no he podido ajustar este script a nuestra versión. Pero habiendo ejecutado el comando raspbx-upgrade, y apt-get update y apt-get upgrade, ya debería de estar actualizado.

[update]
Para el tema de la versión, tenemos este otro post.
[/update]

Ahora podríamos ponernos con los permisos para que sólo se pueda acceder al sistema desde la red interna. Ya habíamos solucionado el que se refiere al ssh, puesto que ya estábamos de paso en ese fichero De todas formas, tenemos un warning que más adelante veré cómo solucionar. 
  • Para el servidor web: tendremos que editar /etc/apache2/ports.conf y modificar la línea Listen 80 y ponerle Listen IP_DISPOSITIVO:80. Ejecuta /etc/init.d/apache2 restart.
  • Para el servicio de TFTP, tendremos que configurar dnsmasq. Es el servicio que está corriendo el pueto 69, que es el que utiliza TFTP. Si consigo configurarlo, os aviso.
  • Para Asterisk Manager tendremos que cambiar el valor que tiene bindaddr en el fichero /etc/asterisk/manager.conf por la dirección IP de tu dispositivo la dirección de loopback (para que nos entendamos: 127.0.0.1) o por localhost. Si pones la dirección IP, como por ejemplo, 192.168.1.123, la interfaz web te puede indicar que hay algún problema y no poder realizar algunos cambios. Que a lo mejor no pasa nada, pero a mi me ha dado problemas hasta que he puesto localhost.
  • Para Asterisk, tendremos que ir a Settings --> Advanced SIP Settings, y abajo del todo, pondremos un campo nuevo que se va a llamar dindaddr, cuyo valor será, tal y como hemos ido haciendo con los otros campos, la dirección IP de la interfaz de red. Acuérdate de guardar los cambios y aplicarlos con el botón rojo que te aparecerá una vez se han guardado los cambios.
Ahora mismo, el estado de la centralita, está bastante mejor que antes. Sí. Es muy mejorable. Pero bueno. Menos da una piedra. 

sábado, 28 de diciembre de 2013

Cargador que contiene bichos

Me ha pasado una cosa muy, muy curiosa. Algo que nunca me había fijado, y, de repetetente me he encontrado con algo asombroso.

¿Recordáis el cargador portátil que me compré para la Rooted de este año que termina, 2013? Pues me he encontrado con que contenía un buen espacio con el que almacenar cosas:

Dispositivo encontrado
Dispositivo encontrado
Como podéis observar, el que tengo seleccionado es el que no debería de estar ahí. Lo más extraño ha sido que, al mirar su contenido, había una carpeta llamada OS con el siguiente contenido:

Contenido de la carpeta OS

Es muy, muy raro... 3 ficheros. Uno de ellos, con extensión .apk. Esta extensión es la que se utiliza en las aplicaciones para sistemas Android. La otra, parece que es un ejecutable. Además, es como si el nombre de estos ficheros indicase el sistema operativo al que está destinado. A lo mejor por eso la carpeta donde estaba tenía el nombre de OS. ¿Vendrá de operating system?

Aún hay más. Llama poderosamente la atención ese fichero passwords.txt. ¿Qué finalidad tendrá? Que se llame así asusta mucho. Y... malas noticias!! Algunas de mis contraseñas, estaban aquí dentro:

Las contraseñas encontradas en la carpeta "oculta"
Las contraseñas encontradas en la carpeta "oculta"
Da mucho, mucho miedo. No me puedo creer haber encontrado algunas de mis contraseñas en este fichero. Otras, posiblemente sean de algún amigo.

Lo peor de todo es que al pasar estos ejecutables por VirusTotal, no han encontrado ningún bicho o malware (o como queráis llamarlo):

Ejecutables analizados por VirusTotal
Ejecutables analizados por VirusTotal

Esto es muy, muy duro. Encontrarse con tus propias contraseñas en un fichero de texto en un aparato que no debería de tener espacio de almacenamiento, y sólo guardar corriente para cargar móviles y similares... Pero esto no quedará así. ¡No señor! Ya me encargaré yo de averiguar a dónde van los datos. En cuanto tenga noticias, os lo haré saber.

viernes, 20 de diciembre de 2013

Ajustes al sistema PBX I

Una vez más, sigo con el tema de mi PBX. Si no has seguido el tema porque acabas de llegar, las etiquetas te llevarán a los posts adecuados. Al estar configurando el tema no he podido hacer otra cosa.

Tengo que hacer varios cambios en el sistema. Creo que lo primero va a ser en el SPA (creo que tendré que darle también el nombre de ATA. Me suena haberlo visto en algún sitio, y como sinónimo me podrá valer).

Lo dicho, nos vamos al ATA. Pestaña: SIP. Sección: RTP Parámeters. Dato: RTP Packet Size. Está a 0.030. Vale, según nos cuentan, parece ser que estos cacharros traen este valor por defecto. Pero puesto de este modo hará que las llamadas salgan entrecortadas y (como dato mío empírico) bajo volumen. Hay que cambiarlo a 0.020. Llevaba tiempo con esta página abierta y lo acabo de cambiar. En cuanto sean horas, pruebo a hacer la llamada desde alguna de las extensiones que no sea el teléfono ordinario. De todas formas, después de hacer alguna llamada, aún hay que solucionar un poco mejor este tema.

Ahora, nos vamos a la sección PSTN Line --> Subscriber Information: En algunos de los artículos que hay en la página de FreePBX (por cierto, si alguna vez veis que hablo de BSD/FreeBSD en vez de PBX, decídmelo en los comentarios) dicen que el campo Display Name le pongamos el valor que deseemos, como por ejemplo 1-pstn o similar. He visto que las llamadas que lleguen a través del aparto a las otras extensiones, incluso para el Asterisk, son con ese nombre. Me acabo de acordar que quería quitarlo, y es el mejor momento. Veré qué sucede, pero por ahora, lo voy a actualizar dejando ese valor vacío.

Ahora, nos vamos al Asterisk (¿os habéis dado cuenta de que seguro que en algún sitio he puesto el nombre del galo?).

Tal y como hemos hecho en otras ocasiones vamos a crear varias extensiones más. Por ejemplo: una para cada uno de los ordenadores. Otra para el móvil. Eso, si no lo habéis hecho ya.

¿Las has creado?¿Seguro? Uno, diez,once, cien, ciento uno... ¿Ya? ¿Estupendo!

Ahora, nos vamos al menú Applications --> Ring Groups.

Vamos a asignarle el número interno. Del mismo modo que las extensiones tienen el número al que se puede llamar, los ringuing roups igual. Puedes ponerles un nombre descriptivo. Tendrás que decidir qué extensiones de las creadas quieres añadir, para lo cual las tendrás que escribir. Yo dejaría el ringuing time tal cual. 20 segundos sonando un teléfono puede ser un infierno para el que esté cerca y no pueda cogerlo. La estrategia. Esto es importante. Hay varias opciones: que vayan sonando secuencialemente los teléfonos cuando el anterior no responde. Que suene el primero, el primero y el segundo, el primero, el segundo y el tercero... Todos a la vez. Esta va a ser mi opción. Que suenen todos a la vez.

Como de costumbre, envía el formulario con el botón que siempre ponen abajo del todo y si te solicita que lo termines de enviar con el botón rojo, hazlo.

Ahora, vamos a modificar el Incoming route, que recuerdo que se accede desde el menú Conecvity. Vamos a seleccionar la ruta que creamos para nuestro SPA3102. Abajo del todo definíamos un destino. En vez de enviarlo a una sola extensión, vamos a seleccionar que es un ringing goup, y seleccionamos el que acabamos de crear. Si ahora tuvieses varias extensiones activas, y te llamasen, podrás comprobar que todas esas extensiones activas sonarán a la vez.

Algo que tendría que haber hecho desde el principio era haber cambiado las contraseñas por defecto.

La primera va a ser la de acceso al sistema desde SSH. Ya sabemos, el comando passwd.

La otra contraseña que hay que cambiar es la del admin del panel de control. Para hacerlo hay que ir al menú Admin --> Admiinstrators y, seleccionando el administrador al que queremos cambiarle la contraseña, podremos poner la nueva en el campo correspondiente. Recuerda que si después de enviar el formulario el sistema te muestra el botón rojo, también tendrás que pulsarlo.

Otra cosa que tendría que haber hecho era lanzar el script de Jose Luis Verdeguer, vamos Pepelux (@pepeluxx). Eso sí, tengo que mirar cómo hacer que las dependencias (los imports en JAVA, #includes en C...) me funcionen. Porque no los encuentra. Claro, en una distro para un dispositivo reducido...

¿Qué más podemos hacer? Tendremos que expandir la partición ráiz al tamaño completo. Recuerdo que por muy grande que sea la tarjeta donde se sustenta el sistema, sólo utilizará 4GB. Al ejecutar sobre un SSH

raspi-config

nos llevará a la siguiente pantalla:

Expandir tamaño utilizado en raspberri: raspi-config --> expand_rootfs
Expandir tamaño utilizado en raspberri: raspi-config --> expand_rootfs
También voy a overclockear (vamos, a hacer overclocking) el dispositivo. Como viene en garantía que se puede hacer hasta 1 GHz... En mi caso, de momento, voy a ponerlo a 900MHz. ¡Ojo! Que tal y como advierten, puede reducir la vida útil del dispositivo.

Overclocking la raspberri: raspi-config --> overclock
Overclocking la raspberri: raspi-config --> overclock
Y... de momento aquí lo dejo. Iré mirando los posts que tenía pendientes por continuar escribiendo y más adelante publicaré más sobre el tema. Pero quiero daros un descanso sobre esto, que ya viene siendo muy cansino.





miércoles, 18 de diciembre de 2013

Configurando FreePBX en la Raspberri PI II

Si has llegado aquí sin haber leído los otros posts, os recomiendo que lo hagáis porque todo esto se basa en cosas que se espera que se hayan hecho ya. 

Vamos a continuar ajustando el sistema. Ahora mismo, para resumir: 
- Tenemos una extensión que nos han dicho que hay que definir. Y, la verdad, de momento no la he usado.
- Tenemos dos rutas: Una incoming y otra outgoing. Aunque están creadas, de momento no se están utilizando.
- El trunk. Para que se pueda conectar el Linsys SPA3102 (si os preguntáis por qué estoy poniendo tantas veces el nombre, al menos una por post, es para que salgan relacionados en caso de que alguien lo busque). 

¿Qué voy a hacer ahora? Ahora va a tocar crear dos extensiones más. Recuerdo que se hace desde Applications --> Extensions. Y seleccionamos la de tipo SIP (que debería de ser la que viene por defecto).

No va a tener mucho misterio. Cada una de ellas ha de tener un User Extension, que será el número de extensión deseado, y su Display Name, que será la descripción de la extensión. Además, yo pondría como valor 1 o 2 el campo Outbound currency limit.

¿Os acordáis del Outbound Route que configuramos en Connectivy --> Outbound routes? Pues tendremos que hacer un cambio que obvié en su momento:

Patrones para utilizar este outbound route
Patrones para utilizar este outbound route
Todavía me está costando pillarlo, pero, después de unos cuantos "ensayo y error", conseguí hacer que cualquier número de 6 dígitos o más, con un 0 delante, hiciese uso de esta ruta. Además, como ya le habíamos dicho el trunk que tenía que utilizar (que sería el que, con mis palabras, enlaza al dispositivo de Cisco), ya se podrían hacer llamadas con la línea telefónica desde un teléfono IP tirando del FreePBX/RasPBX/Asterisk.

De todas formas, me temo que me dejo algo más... En efecto, en el trunk también había que poner la configuración:

Patrones para utilizar este trunk
Patrones para utilizar este trunk

Y, para finalizar, instalarse un programa en el ordenador y en el móvil. Alguno para el ordena puede ser el X-lite. Para el móvil.... Creo recordar que SIPDroid. Lo que he hecho para configurarlos ha sido bastante estandar:
  • El número de extensión es el usuerio
  • La contraseña es un chorro que se encuentra en la extensión con la etiqueta secret.
  • Si hablan de servidor o similiar, con el puerto correspondiente, te debería de servir con la dirección IP del servidor y el puerto que se ha indicado en el campo correspondiente de esa extensión.
Ahora deberías de poder hacer llamadas entre extensiones y utilizar al menos una de ella para llamar al exterior. 

Aún me faltan cosas por hacer. Pero de momento os dejo con esto y os iré dando más la brasa a medida que vaya configurando (y seguro que desconfigurando) cosas. 




lunes, 16 de diciembre de 2013

Configurando e integrando Cisco/Linsys SPA3102 con FreePBX II

Ahora ya deberíamos de tener nuestro Linsys SPA3102 configurado para que saque las llamadas al exterior cuando éste está encendido. Por lo que ahora podremos proceder con la interconexión de la rasp con el SPA. Eso sí. Lo primero que recomiendan es resetearlo para mantener la configuración "lo más simple posible" y sobretodo porque asguran que "a parte de los cambios que describen se querrá mantener el resto de datos tal y como están". En mi caso, y tal y como dice un buen compañero mío: "ni jarto vino". Después de lo que me costó configurarlo para que funcionase bien, lo dejaré tal y como está. Si después veo que tengo problemas, ya me plantearé si reseteo o no. ¡Ah! Recuerda que tienes que estar como administrador y mostrando las opciones avanzadas.

Lo primero que vamos a comprobar en la pestaña SIP es el RTP Packet Size. Según afirman, el valor por defecto 0.030 no es correcto para el codec ulaw / G711u. Hay que cambiarlo a 0.020. Así se evitarán ciertos ruidos o chasquidos en llamadas, de una forma muy aleatoria.

Tienes que ir a la pestaña Line 1: Si no me olvido de nada más, que a punto he estado de olvidarme de este dato, tendrás que poner alguno que se corresponda con tus necesidades. Aún no estoy muy ducho en cómo se configuran los DPs (así es como los abrevian). Pero, algo que me ha funcionado más o menos bien es este:

([69]xxxxxxxxS0<: gw0="">|xxxx<: gw0="">|xxxxx)

El gw0 significa que tiene que salir por el lado de la línea telefónica. La S0 no me acuerdo, la verdad. Pero Cisco tiene una página donde pone ejemplos.

Ahora hay que ir a la pestaña PSTN Line.
  • Asegurate de que el puerto (SIP port) que has seleccionado es el mismo que tenías puesto en el PBX. En el ejemplo ponen el mismo que se indicó a la hora de crear el trunk (5061). ¡Ojo! Revisa si la extensión que tenías configurada también tira de este puerto. Ahora mismo la que yo puse tira del 5060, por lo que podría darme problemas. Si es así, haré pruebas para dejar todos los puertos iguales. 
  • Proxy and registration:
    • Proxy: Es la dirección del servidor Asterisk. 
    • Tanto make call without reg y answer call without reg tienen que estar a yes.
    • Register: No me acuerdo si lo llegué a cambiar. Aunque me aparecía a no, lo he puesto a yes.
    • Register expires: Este dato sirve sobretodo si a la hora de crear el trunk dejaste seleccionado el dato host=dynamic. Aconsejan poner el valor de la entrada a 300 si estás en la misma red y a 900 si el PBX está en otra red (por ejemplo, Internet). No indican nada para host=Dirección_IP. Yo pondré... Venga, de momento los 3600 que vienen por defecto. Siempre tendré tiempo para bajarlo.
  • Suscriber information:
    • Display name: Sólo para los dispositivos internos. Si no llega el Caller ID, se mostrará este dato.
    • User ID: Tiene que coincidir con el que se puso en el trunk.
    • Password: Tiene que ser la misma que se puso en la configuración del trunk con el campo secret.
  • Audio Configuration: Copipasteando la configuración:
    • DTMF Process INFO: Yes
    • DTMF Process AVT: Yes
    • DTMF Tx Method: Auto
  • Dial plans: Dicen que sólo y únicamente se ha de cambiar el Dial plan 2. Creo que esta parte va a ser un quebradero de cabeza. Pero bueno. Vamos a ver. Tendrás que poner (S0<:1234567890>). Tendrás que cambiar el número subrayado por el que tenga la línea conectada al dispositivo, que, a su vez, tendrá que se igual al Inbound Route configurado para tal efecto en el PBX.


  • VoIP-To-PSTN gateway:
    • VoIP-To-PSTN enable: Ponerlo a yes.
    • VoIP Caller ID auth method: Recomiendan que al principio se ponga a none y que después se mire si se quiere modificar. 
    • VoIP PIN max retry: Haré lo mismo que hacen en la doc: dejarlo a 3.
    • One stage dialing: Dicen que es muy importante ponerlo a yes.
    • Tanto Line 1 VoIP Caller DP como VoIP Caller Default DP como Line 1 Fallback DP hay que ponerlos a none. Si no me equivoco, son los Dial Plans. Hay que estar ojo avizor no vaya a ser que haga falta configurarlo después. 
    • También sugieren que los usuarios y contraseñas en la sección VoIP users and passwords se haga más adelante.

  • PSTN-To_VoIP gateway:
    • PSTN-To-VoIP Gateway Enable: Se pone a yes
    • PSTN Caller Auth Method: Dejalo en none
    • PSTN Ring Thru Line 1no. Dicen que es porque estamos usando Asterisk. A ver: haciendo pruebas (antes de publicar este artículo): he visto que con este valor, el teléfono fijo no sonará de recibir una llamada. De hecho, ni se entera de que está entrando. Por lo que siempre debería de haber algún terminal o software conectado al Asterisk, y éste configurado adecuadamente para que le lleve la llamada. 
    • PSTN Pin Max Retry3
    • PSTN CID for VoIP CID: Este no lo he acabado de entender del todo bien. Dicen que se ponga a yes si te suscribes a un CallerID desde el servicio PSTN. En caso contrario, ponerlo a no
    • PSTN CID Number Prefix: Dejalo en blanco. 
    • PSTN Caller Default DP: Es muy importante ponerlo a 2, ya que es el que hemos seleccionado arriba. 
    • Off Hook While Calling VoIPNo.
    • Line 1 Signal Hook Flash To PSTNDisabled.
    • Dejar el resto de datos en blanco.
  • FXO timer values:
    • VoIP answer delay: Ponerlo a 0 (cero), porque si se deja a 1, te puedes encontrar con algún que otro problemilla.
    • PSTN answer delay: Si bien de puede poner a 0 (cero), recomiendan ponerlo a 3 para que se de tiempo a identificar la llamada (CallerID). Y que en raros casos, podría hacer falta ponerlo a 5
    • En la documentación no hablan de PSTN Ring Thru: También le hará falta algún valor. Todavía no me queda del todo claro si el que hace que deje de sonar el "ring" del teléfono es este o el anterior. Pero tenlo en cuenta. De hecho, después de varias pruebas, y algún cambio que contaré más adelante, lo he dejado al mismo valor que el anterior. Te puedes encontrar con que el teléfono (sin que esté logueado al Asterisk a través de este cacharro) empiece a sonar y al saltar el trigger del Answer (diría yo) pasarlo al Asterisk. Casos raros: Que el teléfono deje de sonar, pero la llamada continué dando tono. Y poder coger esa llamada. O, que al dejar de sonar para pasar la llamada al Asterisk, sólo de tiempo a un ring en el servidor, y salte el contestador de tu operadora.
  • PSTN Disconnect Detection:
    • Según dicen, se podría dejar tal cual. Pero, en nuestro caso, habrá que hacer como mínimo un cambio, y este es el campo disconnect tone que debería de tener el valor: 425@-10,425@-10;4(.2/.2/1,.2/.2/1,.2/.6/1)
    Muy bien. Pues tal y como lo tenemos ahora, debería de seguir siendo posible enviar y recibir llamadas desde el terminal telefónico (de toda la vida). Si no os lo he dicho, me faltan algunas cosas como saber la forma de acceder al contestador de mi operadora desde el teléfono normal cuando lo dejo descolgado (dando señal). O la forma de enviar parámetros al sistema a través del teclado del terminal (por ejemplo, mi inalámbrico). Cosas que hay que estudiando.

    Si es así, espérate a los siguientes posts para ir incrementando las funcionalidades.

    [update (antes de la publicaicón]
    Resulta que antes de que se publicase este post, he seguido jugando mucho más con el sistema. He cambiado algún valor, como los que he contado arriba del PSTN Answer Delay y PSTN Ring Thru. También he hecho otra cosa: Si te dicen que el Inconming Route tiene que tener, por ejemplo, una extensión... ¿Dónde se pone esa extensión? ¿Quién la recoge? Muy bien: La puedes configurar también en el SPA. ¿Dónde? En el Line 1.

    Sección proxy and registration:

    • Proxy: La dirección IP del servidor Asterisk.
    • Los combos relacionados con register a yes (register, make / ans call without register)

    Suscriber information:

    • User ID: El usuario/extensión. Por ejemplo: 567890.
    • Password: En nuestro caso, es un chorro de caracteres que aparece en los datos de la extensión como secret.
    Con esto debería de servir. Eso sí, acuérdate de guardar los datos.

    [/update]

    viernes, 13 de diciembre de 2013

    Configurando e integrando Cisco/Linsys SPA3102 con FreePBX I

    Si todavía no has configurado tu PBX, te recomiendo que lo hagas ahora. En principio, y si todo va bien la configuración del Cisco/Linsys SPA3102, se debería de dar por finalizado el montaje básico para el funcionamiento de la raspberry pi, utilizando RaspPBX, con el aparato de Cisco.

    Recuerdo que estoy intentando seguir la configuración que aconsejan en la documentación de FreePBX.

    De todas formas, antes de entrar en detalles con respecto a dicha documentación, hay que hacer otras cosas antes.

    Lo primero que vamos a hacer va a ser conectar el cable de la línea telefónica en el puerto que está marcado como line. Y vamos a conectar un terminal telefónico de toda la vida (por ejemplo, el inalambrico), en el puerto que está marcado como telephone. ¡No lo enchufes a la corriente! Marca un número que sepas que van a responder o que puede dar línea: ¿Te funciona? ¡Estupendo! Eso significa que podemos continuar. Si no te funciona, poco te puedo contar. Este trasto está diseñado para que en caso de que no disponga de electricidad, sea capaz de trabajar con la línea telefónica ordinaria como si nada.

    Ahora puedes enchufar el aparto a la corriente. Con el teléfono conectado, tendrás que marcar cuatro asteriscos (****), para acceder al menú por voz (también conocido como IVR) que te indicará que marques la opción deseada. Hay una tabla que muestra los códigos que hacen falta para que te "cante" los datos deseados o para modificar algunos (y sólo algunos) de esos datos.

    Codigos para configurar lo más básico del SPA3102 desde el teléfono
    Codigos para configurar lo más básico del SPA3102 desde el teléfono
    Una de las cosas que tendrás que hacer es configurar el aparatito para que se encuentre en la misma red que tu equipo. Vamos: si la configuración de red no se adapta a la que ya tienes, este es el momento.

    Ahora, te va a tocar entrar con el navegador. En mi caso, estoy accediendo con la dirección IP asignada al WAN, si bien estoy conectado al puerto ethernet. Por cierto: siempre mostrando como adminitrador y en advanced.

    Nos vamos a la pestaña LAN setup y configuramo los datos necesarios. En mi caso, lo tenía como

    • bridge (creo recordar que lo cambié desde el teléfono), e
    • Auto NetService Private IP Ranges: puedes poner, por ejemplo, 192.168.1.0-192.168.1.255. O incluso lo puedes dejar por defecto si quieres. No debería de hacer falta tocarlo si tienes todo por defecto.
    • LAN IP Address: Puedes poner 192.168.1.2, por poner un ejemplo. Acuérdate de la máscara de red.
    • Y ya depende de tí si quieres que sea tu DHCP o no. Pero si lo activas, acuérdate de quitar el de tu router de Internet. 

    Configurando el Linksys/Cisco SPA3102: LAN Setup
    Configurando el Linksys/Cisco SPA3102: LAN Setup

    La pestaña application no la he tocado. No me hacía falta.

    Ahora bien: pestaña WAN Setup:
    • Lo importante es tener una dirección IP acorde a la red donde te encuentras, además de su gateway correspondiente y, como no, los DNSs. Al menos, si lo pones como estático. 
    • Además, para que se ponga bien en hora, he puesto dos pool.ntp.org
    La pestaña Status es un resumen de cómo está esta sección de las redes. No tiene mayor misterio.

    Ahora nos vamos a la siguiente parte, que también es importante: El teléfono. Si esto no funciona, mal vamos porque ahí es donde está la gracia. Y... ¡ay! si no funciona.

    Vamos a ver, porque de un día para otro, des-hibernando el equipo ordenador, empezó a funcionar. Pero bueno. Vamos a ver las configuraciones que hacen falta (o que tengo puestas) para que esto funcione (al menos, a mi así me rula). Lo haré mirando las distintas secciones que manipulé y sólo comentaré las que realmente hagan falta tocar.

    Tenemos que ir a la pestaña de regional:
    Códigos de tono para España en el SPA3102 - Regional tab - 01

    Miscelanea: País y configuración para el identificador de llamadas - Regional tab - 01
    Siento no contar mucho al respecto. Uno de los problemas es que tenía varias fuentes de donde obtuve los códigos. Algunas de ellas diferían un poco. Otras, incluso quitaban en los pantallazos algunos datos, tal y como me ha pasado a mí. En el caso de la primera imagen, lo que hay que tocar es el Call Progress Tones. No toques la otra sección de esa captura. Con respecto a la sección de miscelanea, esta configuración me sirve y funciona. Incluso una vez activado el servicio. Asegúrate de que lo tienes activado, no te vayas a volver loco intentando hacer que funcione y no lo haga porque no pueda. Después, se puede dar el caso de que funcione en una instalación y en otra haya que hacer algún que otro cambio como cambiar la impedancia a 600+2.16uF. O el CallerID method, que no sea ETSI FSK. O el Caller ID FSK Standar. Cuando estuve buscando, vi que también podía depender de la compañía. Por lo que mucho ojo.

    Ahora, toca ir al PSTN Line, directamente a la sección PSTN Disconnect Detection. Sólo toqué el disconnect tone:

    SPA3102 - PSTN Line - PSTN Disconect Detection - Discconect tone
    SPA3102 - PSTN Line - PSTN Disconect Detection - Discconect tone
    Ahora mismo, debería de ser posible hacer llamadas a cualquier número normal. Eso sí: posiblemente el acceso al contestador dejando el teléfono descolgado no funcione. Veré si lo consigo arreglar. De todas formas, me parece muy raro que sea sólo esto. A lo mejor me dejo algo en el tintero. Si lo pruebas y no funciona, por favor, deja un comentario abajo y a ver qué se puede hacer.