Cómo dejar de pagar por roaming, o con un número en todo el mundo

La idea de este material se me ocurrió el año pasado, cuando, después de haber hecho un gran círculo en nuestro inmenso, a fines de mes recibí facturas por roaming. A pesar de las garantías de las compañías móviles sobre roaming gratuito dentro del país, el tráfico de SMS o Internet se puede cobrar por separado. Y los minutos incluidos en la tarifa son válidos solo en la "región de origen". Bueno, desde este año los planes incluyen viajar no solo en mi país natal, comencé a darme cuenta de mi idea: mi propia central telefónica fija en casa, que podrá contactarme en cualquier parte del mundo.
En el camino, resolví el problema de las comunicaciones telefónicas entre apartamentos y casas de familiares, ya que el tiempo de las negociaciones internas se calculó no solo por horas, sino por decenas de horas.
Pequeño spoiler: como resultado, logré instalar Asterisk en el NAS y el enrutador



Entonces llegué a la conclusión de que necesito mi propia telefonía. Se podría elegir cualquiera de los servicios de telefonía SIP que están presentes en grandes cantidades en el mercado. Pero tenía una lista de requisitos que ninguno de los operadores cumplió:

  • Elección independiente de números internos
  • Acceso a líneas de comunicación externas con posibilidad de llamadas a teléfonos fijos y celulares.
  • Posibilidad de elegir un operador que ofrezca telefonía IP
  • La capacidad de usar la tarjeta SIM del operador seleccionado con la tarifa habitual de "teléfono"
  • Existencia del menú de voz para el reenvío de llamadas al suscriptor necesario
  • Costo mínimo o cero de servicio / mantenimiento de comunicación interna

Muchos operadores ofrecen una central telefónica virtual e incluso un menú de voz. Pero este servicio ya está pagado. Algunos operadores permiten realizar llamadas gratuitas dentro de su red, pero existe un problema al marcar números largos. Y, ciertamente, nadie le permite usar la tarjeta SIM del operador seleccionado con el costo mínimo de llamadas o minutos prepagos. Así que decidí convertirme en mi propio operador de telecomunicaciones.

Primer paso Elección de plataforma: virtualización

Como ya estaba tratando con telefonía IP, se decidió aumentar mi PBX basada en Asterisk: es gratis, hay muchos foros, manuales y ... ¿por qué no? Obtuve algunos teléfonos con soporte SIP y comencé a pensar en la plataforma para trabajar Asterisk. Para ponerlo en las nubes o en un servidor virtual, esto significaría que tarde o temprano tendrá que pagar, pero luego la idea de hacer telefonía para colapsar gratis. Por lo tanto, decidí usar la función de virtualización en mi QNAP TS-451 NAS. Ya escribí sobre este chip de unidad de red, para que pueda leer más . El rendimiento del sistema fue suficiente no solo para el trabajo del propio Asterisk, sino también para la interfaz web, así que decidí usar la distribución Elastix. Debo decir que la última distribución disponible en el sitio web oficial de Elastix.org en el número 5 ya es shareware, por lo que recomiendo buscar la versión 4 de torrents en torrents: era gratuita y se distribuía libremente, pero ahora no está disponible en el sitio.

La creación de usuarios en Elastix se describe muchas veces, pero el resto no se cubre en detalle en la red. Por lo tanto, describiré la conexión del proveedor SIP Multifon de Megafon y la creación de un menú de voz con desvío de llamadas.

Crea una troncal con los parámetros de tu cuenta en Multifon. Puede conectar esta opción a cualquier número de operador Megafon. El descuento no depende del plan tarifario seleccionado y se realiza por cada minuto de una llamada saliente. La bandeja de entrada es gratis. Se admiten dos líneas de conversación a la vez. Además, puede configurar que las llamadas entrantes vayan solo al teléfono, teléfono + teléfono múltiple, solo a teléfono múltiple.


Configuración de texto para aquellos que desean agregar un tronco Multifon a sí mismos:

Tronco Multifon
Detalles de pares:

nombre de usuario = número_de_teléfono
tipo = par
secreto = contraseña
puerto = 5060
nat = si
inseguro = puerto, invitar
host = sbc.megafon.ru
fromuser = número_de_teléfono
fromdomain = multifon.ru
dtmfmode = dentro de banda
contexto = desde el tronco

Cadena de registro:
phone_number: password@multifon.ru/ phone_number

Por lo tanto, estamos conectados al proveedor SIP y ahora podemos desviar la llamada entrante a cualquiera de los números de extensión. Pero, ¿qué sucede si desea que la persona que llama elija qué número de extensión marcar? Puede crear un menú de voz con una opción de destinatario. Haré una descripción paso a paso.

Crea un menú de voz en Elastix

Vaya a Grabaciones del sistema. Aquí los parámetros de la grabación de voz que deben realizarse ya están escritos: PCM, 16 bits, 8000 Hz. Esto se puede hacer tanto en la utilidad de grabación estándar como en programas de terceros como SoundForge.



Después de crear el saludo de voz y cargarlo en el servidor, vaya al elemento del menú IVR. Creamos un nuevo menú de voz y seleccionamos el archivo de bienvenida, así como la reacción al presionar los botones. En mi caso, elegí que presionando el número "3" se llamará al número "101" y así sucesivamente. Si se selecciona el botón incorrecto o la persona que llama no presiona un solo botón, la llamada se reenvía a la extensión 304.



Ahora tenemos que hacer que la llamada entrante llegue a nuestro menú de voz. Vamos al elemento Rutas de entrada y creamos una nueva regla. En el último párrafo de "Establecer destino", seleccione IVR y la cola creada anteriormente, que llamé "dozvon".


Ahorramos y usamos. Todo esto funcionó durante aproximadamente un mes sin fallas, pero esto no me pareció suficiente. Después de todo, no todas las casas tienen un NAS con una máquina virtual o un servidor en el que puede elevar el Asterisco, ¡pero casi todas las casas tienen un enrutador!

Posibles problemas y su solución con un servidor virtual

En el proceso de creación del servidor y el reenvío de puertos, resultó que la operación de dos máquinas virtuales y un servidor físico en el mismo puerto de red no es muy efectiva. La solución más simple era aprovechar el sistema de virtualización y seleccionar una interfaz de red separada para una máquina virtual. Resultó ser muy simple hacer esto con las herramientas integradas de QNAP. Después de eso, la máquina virtual NAS + 1 permaneció en la primera interfaz de red y la segunda máquina virtual en la segunda interfaz de red.



Paso dos: Eleve el asterisco en el enrutador

Dio la casualidad de que uso el proveedor de Yota, pero no uso sus enrutadores originales. Durante mucho tiempo he instalado un excelente enrutador de Zyxel: Keenetic LTE. Hace un par de años ya lo probé en las condiciones más duras del interior y estaba completamente satisfecho: hay un material separado sobre esto en Habré.

En el último firmware NDMS, o más precisamente, comenzando con el firmware 2.08.B, se incluye soporte para paquetes OPKG para la familia de enrutadores Zyxel Keenetic. Esto significa que puede poner el software más diverso. (Existe una gran cantidad de software adaptado para enrutadores Zyxel) Entonces, ¿por qué no poner Asterisk allí? Es importante que el enrutador tenga un mínimo de 128 MB de RAM. Apenas dicho que hecho!
Es aún más agradable porque los especialistas de Zyxel incluso prepararon un manual para implementar Asterisk en sus enrutadores. En principio, para implementar la telefonía en un enrutador, es suficiente seguir las instrucciones paso a paso. Y les diré cómo mejoré y llevé el funcionamiento de este sistema al que estaba girando en un servidor virtual separado.

Lo primero que encontré fue un problema poco claro al iniciar el enrutador después de reiniciar el software. Resultó que mi unidad flash, conectada al puerto USB del enrutador, consume corriente de hasta 0.16A. Esto resultó ser suficiente para que el módem LTE en el enrutador Zyxel Keenetic LTE no pudiera iniciarse periódicamente. Todo se curó conectando una unidad flash a través de un concentrador USB externo con alimentación adicional. Tomó el tiempo probado por muchas personas D-Link DUB-H7 . Esto terminó con los problemas. Creo que los enrutadores con un par de puertos USB funcionarán sin esas muletas.

Ahora vamos a la configuración de Asterisk. Aquí ya necesitas editar todos los bolígrafos. Hay dos formas: pasar por SSH y editar allí (MC está presente) o dar la vuelta a la dirección IP del enrutador y editar archivos usando Notepad ++. Ambas opciones me convenían y me puse manos a la obra. Agregué mis usuarios, registré la troncal múltiple en el archivo sip.conf. Solo queda hacer una cola de voz. Coloqué el archivo de voz de bienvenida en \\ 192.168.1.1 \ Asterisk-blue \ var \ lib \ asterisk \ sounds \ ru , e hice los siguientes cambios en el archivo extensiones.conf.

Hacer un menú de voz en Asterisk
[externo-saliente]
; ------------------ Multifon - exten => _8 .........., 1, NoOp ()
exten => _8 .........., n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _8 .........., n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _8 .........., n, Answer ()
exten => _8 .........., n, Espera (2)
exten => _8 .........., n, Reproducción (/ opt / var / lib / asterisk / sounds / itsp_names / multifon)
exten => _8 .........., n, Dial (SIP / Multifon / 7 $ {EXTEN: 1} ,, T)
exten => _8 .........., n, Hangup ()

[multifon-entrante]; ===== Llamada entrante de Multifon =====
exten => _........, 1, NoOp ()
exten => _........, n, espera (4)
exten => _........, n, Answer ()
exten => _........, n (reproducir), NoOp ()
exten => _........, n, espera (1)
exten => _........, n, Reproducción (hola)
exten => _........, n, espera (0,5)
exten => _........, n, Reproducción (priv)
exten => _........, n, Set (TIMEOUT (dígito) = 1)
exten => _........, n, NoOp ()
exten => _........, n, WaitExten (7)

exten => _1,1, NoOp ()
exten => _1, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _1, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _1, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _1, n (dial_ext), Dial (SIP / 101.60, mt)

exten => _2,1, NoOp ()
exten => _2, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _2, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _2, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _2, n (dial_ext), Dial (SIP / 302.60, mt)

exten => _3,1, NoOp ()
exten => _3, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _3, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _3, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _3, n (dial_ext), Dial (SIP / 304.60, mt)

Entonces funcionó. Las llamadas salientes pasan por Multifon, las llamadas internas entre suscriptores son gratuitas y las llamadas entrantes a través de Multifon pueden dirigirse a cualquiera de los tres suscriptores. Pero me pareció que no era suficiente. Y es una pena que solo Megaphone brinde una conexión SIP alternativa a una línea celular. ¿Qué pasa si quieres usar otro proveedor de telefonía móvil? ¡Hay una solución al problema!

Paso tres: adjuntamos cualquier operador móvil a nuestro Asterisk

El último paso fue conectar cualquier operador móvil a nuestro servidor de telefonía. La solución más lógica sería conectar una puerta de enlace GSM-SIP, que proporciona un enlace troncal SIP en la salida. Pero el costo de tales dispositivos por 1 tarjeta SIM comienza desde 9 mil rublos, por lo que se decidió ir por el otro lado. Encontramos un módem con soporte de voz. En nuestro caso, resultó ser Huawei E3131. Cómo desbloquearlo y habilitar las funciones de voz se ha descrito repetidamente en la red, por lo que no me distraeré con esto. Insertamos la tarjeta SIM que necesitamos en el puerto del concentrador USB y, en primer lugar, apagamos su funcionamiento como módem 3G en el menú.



Luego comenzamos a configurar los archivos del Asterisco. Primero, instale el paquete Dongle con el comando en la consola opkg install asterisk11-chan-dongle . Después de la instalación, abra el archivo dongle.conf y edítelo para obtener lo siguiente:

Archivo de trabajo dongle.conf
[dongle]
intervalo = 15

[valores predeterminados]
contexto = dongle-entrante
rxgain = 0
txgain = 0
usecallingpres = yes
llamada en espera = no
dtmf = dentro de banda
mindtmfgap = 45; intervalo mínimo desde el final de las vistas previas DTMF desde el comienzo del siguiente en ms
mindtmfduration = 80; duración mínima del tono DTMF en ms
mindtmfinterval = 200; intervalo mínimo entre extremos de DTMF de los mismos dígitos en ms

[GSM1]
audio = / dev / ttyUSB1
datos = / dev / ttyUSB2
imei = *****************; E3131 - Ingrese el módem IMEI

Guarde el archivo y vaya al archivo extensiones.conf. El multifón puede comentarse y agregarse al trabajo con el módem.

Nos registramos para la operación de llamadas a través del módem USB en el archivo extensiones.conf
[dongle-outgoing]; para llamadas salientes:
; ------------------ GSM1 Donle - exten => _8 .........., 1, NoOp ()
exten => _8 .........., n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _8 .........., n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _8 .........., n, Answer ()
exten => _8 .........., n, Espera (2)
exten => _8 .........., n, Reproducción (/ opt / var / lib / asterisk / sounds / itsp_names / beeline-gsm)
exten => _8 .........., n, Dial (DONGLE / GSM1 / 8 $ {EXTEN: 1} ,, T)
exten => _8 .........., n, Hangup ()

[dongle-entrante]; para llamadas entrantes:
exten => s, 1, NoOp ()
exten => s, n, espera (4)
exten => s, n, respuesta ()
exten => s, n (reproducir), NoOp ()
exten => s, n, espera (1)
exten => s, n, Reproducción (hola)
exten => s, n, espera (0,5)
exten => s, n, Reproducción (priv)
exten => s, n, Set (TIEMPO DE ESPERA (dígito) = 1)
exten => s, n, NoOp ()
exten => s, n, WaitExten (7)

exten => _1,1, NoOp ()
exten => _1, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _1, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _1, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _1, n (dial_ext), Dial (SIP / 101.60, mt)

exten => _2,1, NoOp ()
exten => _2, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _2, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _2, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _2, n (dial_ext), Dial (SIP / 302.60, mt)

exten => _3,1, NoOp ()
exten => _3, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _3, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _3, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _3, n (dial_ext), Dial (SIP / 304.60, mt)

Ahora todo comenzó y funcionó como debería. Asterisk acepta llamadas entrantes a un número y el usuario selecciona dónde llamarlo seleccionando un número. Una llamada saliente pasa por cualquier operador de telefonía móvil, esté donde esté. Es decir, puede insertar su tarjeta SIM en un módem USB e ir a cualquier parte del mundo. Allí es suficiente tener acceso a la red, y en el teléfono inteligente / computadora portátil para tener un cliente SIP que se conectará a su servidor Asterisk. La solución se ejecuta y funciona. Las fallas resultantes se trataron agregando un concentrador USB con alimentación externa y reemplazando la unidad flash, ya que algunas unidades fallaron. Todo el trabajo para poner en funcionamiento la telefonía llevará una noche.

Para evitar que este trabajo desaparezca, puede crear una copia de seguridad de todo el Asterisk en una unidad flash con un solo comando:

Haga una copia de seguridad del Asterisk en una unidad flash
tar cvzf / opt / backup-`date "+% Y-% m-% d_% H-% M" .tar.gz -C / opt / bin etc. home lib lost + found root sbin share tmp usr var

Bono para propietarios de Zyxel Keenetic LTE

Cabe señalar que este enrutador también está equipado con dos clientes SIP con puertos físicos FXS, a los que puede conectar cualquier teléfono analógico. Y este cliente se conecta fácilmente al servidor Asterisk, que está girando sobre él.

Bonificación para los propietarios de Zyxel Keenetic *

Si no desea gastar dinero en comprar teléfonos SIP, la línea de enrutadores Keenetic admite el adaptador Zyxel DECT, que agrega la función de telefonía SIP con la capacidad de conectar cualquier teléfono inalámbrico DECT.

Conclusión

Se resuelve el problema de la comunicación gratuita entre diversos suscriptores con conversaciones frecuentes y prolongadas. También se resuelve la tarea de "presencia" del suscriptor en la ciudad y la comunicación libre con el propietario del número, donde sea que se encuentre. La solución NAS QNAP TS-451 con virtualización se beneficia de la capacidad de configurar Asterisk a través de una interfaz web. Pero la solución con un enrutador no requiere casi ningún costo. Asterisco: ¡es fácil! ¿Por qué pagar por roaming cuando la conexión puede ser gratuita?

Quiero agradecer por separado al equipo de Zyxel por su capacidad de respuesta, asistencia para experimentar y aumentar la funcionalidad de sus dispositivos.

PD Como se comentó correctamente a continuación, casi todos los operadores móviles prohíben el uso de una tarjeta SIM para crear una puerta GSM. De hecho, nadie lo bloqueará hasta que comience la operación comercial de su puerta. El autor no es responsable de sus acciones.
Sin embargo, conozco casos en los que las empresas utilizan docenas de tarjetas SIM en las puertas de enlace GSM para realizar llamadas económicas a números celulares.

Source: https://habr.com/ru/post/es402367/


All Articles