Configuración Asterisk/FreePBX para Masmovil VoIP

#1
La verdad, no sé si etiquetar esto como [MANUAL] sería un poco presuntuoso.
Lo cierto es que llevo muchos años sin registrarme pero usando ADSLzone como fuente para diferentes problemas que he tenido o frikadas varias que he querido hacer con servidores en mi casa. Por lo que al encontrar un tema que al final me he tenido que solucionar yo por no haber (o no saber encontrar) una respuesta clara me he decidido a colgar la configuración que me funciona a mí, por si puede ser de ayuda y ahorrar tiempo a quien quiera hacer lo mismo.
Antes que nada quiero advertir que no tengo ni idea de VoIP. Soy informático por formación, y tengo cuatro conceptos básicos claros en cuánto a redes, pero tampoco es mi campo, digamos, favorito. La que voy a poner es la configuración que me funciona a mí. No veo porque no debería funcionar a todo el mundo, pero no tengo manera de saber si es así o no. Y, quizá no sea la mejor manera, o sea que si alguien tiene alguna forma más elegante de conseguir lo mismo, estoy más que abierto a probarlo (dentro del tiempo de qué disponga) y, si funciona, modificar el post. O sea que, como dice aquél, empezamos!!

Primero de todo tenemos que conseguir (si no los tenemos) los datos VoIP del router original de nuestra operadora. En mi caso es un ZTE F680 con el hardware v2, o sea que estoy de suerte. Como me considero bastante más hábil con la cónsola del Linux que con el destornillador, conseguí el acceso administrador por el método del exploit de Samba. Donde lo encontré mejor explicado fue aquí:
Desbloqueando el router ZTE F680
Solo un matiz, donde dice "Llegados a este punto podríamos cerrar ya la sesión de Telnet que tenemos abierta bajo el puerto 27, y pasar a entrar por la nativa en el puerto 25"... El puerto nativo de telnet es el 23, y juraría que es el que usaba mi router. En todo caso, si no funciona uno, probad el otro, y sino id probando todos los del rango 20-30, no sea el caso que unos routers tengan uno abierto y otros otro. Si tampoco hay suerte, pues pasad un escáner de puertos, y probad los que estén abiertos.

A partir de ahí, seguid a partir del 2º paso del excelente manual de Goldeneye:
[MANUAL]: Claves GPON, SIP y acceso al ZTE F680
Por cierto: Gracias.

Como nota, si por alguna razón quisierais seguir usando el router de Masmóvil, antes tendríais que desactivar el perfil de VoIP, ya que los servidores de Masmóvil solo permiten una conexión por usuario.

Y ahora que tenemos los datos, ya podemos configurar Asterisk. En mi caso lo hice con FreePBX. Si fuerais a hacerlo directamente editando los ficheros de configuración, seguramente no estaríais leyendo este post... Pero si lo estáis haciendo, plantearos usar FreePBX ;). En caso de no convenceros, la configuración relevante es la misma.

En primer lugar, dar las gracias a Malosa por su post:

MANUAL: Configuración VoIP FTTH Jazztel

La configuración está básicamente sacada de su post... Excepto por algo que veremos al final.

Para no repetirnos demasiado, donde digo:
[TEL] = Nuestro número de teléfono, con +34 al principio
[proxy] = El proxy de Masmóvil que nos corresponda. imsbcn.masmovil.com o imsmad.masmovil.com. Ignoro si hay más. He visto que hay personas que tienen problema con los nombres de dominio y necesitan las ip. A mi sí me resuelven, pero si a alguien le hace falta son:
Código:
imsbcn.masmovil.com = 212.230.29.54
imsmad.masmovil.com = 212.230.29.22
Matizar que el router ZTE permite poner un proxy de respaldo por si el primario cae. Eso no sé como hacerlo en FreePBX pero posiblemente haría falta definir un nuevo Trunk. Masmóvil no nos permitiría registrarnos en los dos a la vez, o sea que haría falta cambiar manualmente, o dejar los dos encendidos y que registrara el primero que llegara... rezando para que el otro servidor no interpretara los repetidos intentos de conexión como un ataque. Si hay alguna forma de decirle a Asterisk que si el primero registra, el segundo no intente registrar, la verdad es que lo ignoro.
"Algo entre comillas" = El valor del campo en la configuración del router ZTE de Masmóvil. Por ejemplo, normalmente "AuthUserName" sería nuestro número de teléfono, con +34 al principio

Bien, entramos en FreePBX y vamos a Connectivity -> Trunks -> Add Trunk -> Add SIP (chan_sip) Trunk
Aquí, ponemos:

Trunk name: Lo que queramos, por ej. masmovil
Outbound Caller Id: [TEL] (Si no lo hacemos, posiblemente lo haga el proxy de Masmóvil por nosotros. Pero no está de más...)
Cid Options: Force Trunk CID (Nuevamente, probablemente no importe)
Maximum Channels: 1 (Sospecho que no nos van a dejar hacer más de una llamada simultania. Tengo que probarlo...)

Por el resto, valores por defecto. Pasamos a la pestaña sip Settings.

Aquí, por lo que he visto, el GUI cambia un poco según la versión de FreePBX. La mía es la última, y la configuración viene partida en dos subpestañas, Outgoing en Incoming. Versiones más antiguas lo tenían todo junto. Afortunadamente, los campos tienen los mismos nombres, y el orden es el mismo, o sea que...

(Outgoing)
Trunk Name: Nuevamente, lo que queráis, pero para vuestra salud mental si más tarde queréis consultar los ficheros, pondría masmovil...
PEER details:
type=peer
secret="AuthPassword"
port=5060
outboundproxy=[proxy]
nat=yes
insecure=port,invite
host=ims.masmovil.com
;Nuevamente, si no os resuelve, la IP es: 212.230.29.22
fromuser="AuthUserName"
fromdomain=ims.masmovil.com
dtmfmode=auto
disallow=all
auth="DigestUserName"
allow=ulaw,alaw


(Incoming)
USER Context: from.... Masmovil...? Poned lo que queráis, que os resulte descriptivo
USER details: (Sospecho que se podría dejar en blanco... Pero de momento aquí lo dejo:)
context=from-trunk
type=peer
qualify=no
port=5060
outboundproxyport=5060
outboundproxy=[proxy]
nat=yes
insecure=port,invite
host=ims.masmovil.com ;o IP
fromdomain=ims.masmovil.com
dtmfmode=auto
disallow=all
canreinvite=no
allow=ulaw,alaw


Register String: "DigestUserName":"AuthPassword":"DigestUserName"@[proxy]/[TEL]

Y ahora ya debería dejaros registrar y hacer llamadas... Pero no recibirlas. La razón es que el dominio con el que el proxy nos deja registrarnos es ims.masmovil.com. Pero, en cambio, cuando nos manda una llamada, lo hace desde su IP, y esto Asterisk lo interpreta como una llamada desde el dominio del proxy. Despues de intentarlo muchas veces, y buscar información sobre casos similares, la solución que he encontrado es definir un nuevo peer. Desde FreePBX, la forma más fácil es crear un nuevo trunk. O sea que...

Connectivity -> Trunks -> Add Trunk -> Add SIP (chan_sip) Trunk
Trunk name:
Lo que queramos, por ej. masmovil-incoming
Hide CallerID: yes (en realidad no importa, pero así no vemos el campo Outbound Caller Id: y yo me siento mejor :cool:)
Maximum Channels: 1
El resto lo dejamos con valores por defecto.

Vamos a SIP Settings

(outgoing)
Trunk Name: Ponemos algo porque sino no nos va a dejar en paz. Por ejemplo lo mismo que antes, masmovil-incoming

(incoming)
USER Context: from-masmovil-in (lo que queráis, pero tiene que ser único. No vale repetir from-masmovil)
USER details:
type=peer
context=from-trunk
host=[proxy]
port=5060
nat=yes
insecure=port,invite
fromdomain=[proxy]
dtmfmode=auto
disallow=all
canreinvite=no
allow=ulaw,alaw


Register String: En blanco.

Y ya está. Ya debería permitiros llamar y recibir llamadas. Perdón por el tocho. Sin dibujitos ni nada, todo texto... :eek:

Si alguien tiene alguna duda, intentaré resolverla, en la medida de mis (pocas) posibilidades. Y si alguien ve una posibilidad de mejorar la explicación, estoy abierto a sugerencias.
 
Última edición:
#4
Si alguien tiene idea de como conseguir los datos de Digimovil para aplicar esta configuración que lo comente porque están llegando bastante preguntas al respecto :) ¡Gracias por el manual @gcc !
 
Arriba