My CW calling.

jueves, 14 de julio de 2022

AllStarLink sobre Línea 4G/LTE

Luego de estar trabajando un buen tiempo con el sistema AllStarLink y estando muy satisfecho con las prestaciones que ofrece, me encuentro con el siguiente problema.

Como seguramente sabeis, para que un nodo de AllStarLink pueda registrarse en el servidor y pueda establecer enlaces con los demas nodos, se necesita que la red donde se encuentra instalado permita el paso de determinados protocolos de Internet y el tráfico hacia y desde determinados puertos, particularmente el puerto 4569. Esto no es un inconveniente cuando el nodo esta dentro de una red domiciliaria con un proveedor de Internet que haga llegar el servicio por un medio NO INALAMBRICO, es decir bien sea fibra óptica o hibrido fibra/cobre. En este caso el mayor reto podría ser la configuración del firewall del router de nuestro domicilio para direccionar el tráfico de forma apropiada y permitir el reenvío en los puertos con los protocolos necesarios. Pero qué pasa si queremos usar un servicio de Internet móvil del que ofrecen los prestadores de servicios de telefonía? Concretamente un servicio de datos 4G/LTE?. En este caso tenemos un problema.

El problema.

Los servicios de datos 4G/LTE presentan varios inconvenientes cuando queremos acceder desde internet a un servidor (cualquiera que este sea) que tengamos internamente en nuestra red. Uno de estos problemas es que lo que vemos como nuestra IP pública no es solo nuestra, sino que esta compartida por los usuarios pegados al enlace del servicio; es decir, nuestro dispositivo se encuentra un salto por detras de la IP pública anunciada, junto con muchos otros dispositovos de otros clientes conectados en una especie de concentrador de red. En este caso el trafico de entrada no es capaz de resolver a que dispositivo debe ser redirigido a menos que la conexión se haya iniciado desde adentro. Algunos dispositivos como por ejemplo las cámaras IP funcionan porque es la cámara la que inicia una conexión de streaming hacia UN SERVIDOR EXTERNO QUE ES PROPIEDAD DE UN TERCERO al cual se conecta la aplicación para ver el streaming y enviar los comandos a la cámara. Es decir que tienes que usar una especie de proxy porque no hay manera de que llegues directamente desde internet hasta tu cámara en este tipo de infraestructuras. Es por esto que dificilmente podemos poner en funcionamiento nuestro nodo conectado a través de un enlace de datos 4G/LTE.

 


La solución.

La forma de salirle al paso al inconveniente consiste en implementar un PROXY y una VPN. Lo anterior puede no resultar cómodo de hacer; pero funciona. Lo que sucederá, es que nuestro nodo se conectará al servidor PROXY usando la VPN y el servidor PROXY será el encargado de ayudarnos a registrar en la red AllStarLink y redirigirá todo el trafico de nuestro nodo de manera que podamos llegar a otros nodos y que a su vez los demas nodos puedan conectar con el nuestro.

Paso 1. El PROXY

El servidor PROXY consiste en otro nodo de ALLStarLink que debemos instalar en un lugar donde exista la posibilidad de un enlace de internet dedicado. En este caso resulta muy comodo usar una servicio de máquina virtual en la nube tal como el que ofrece Google Cloud, a menos que queramos un nodo completamente funcional para control de repetidora o en enlace de radio simplex. Para la instalación del PROXY seguiremos los mismos pasos que para cualquier nodo de AllStarLink (tendremos que obtener un nuevo número de nodo).

En nuestro nodo PROXY debemos completar las siguientes tareas de configuración:

En el archivo iax.conf debe añadir un bloque como el siguiente por cada nodo para el que vaya a servir de proxy.

[Aqui va el número del nodo que quiero proxyficar]
type=friend
host=dynamic
username=radio-proxy
secret=AquiVaLaClaveQueUsaraEnElNodoParaAccederAEsteProxy
auth=md5
context=radio-in
disallow=all
allow=g726aal2
transfer=no

 Añada las siguientes dos líneas en el archivo extensions.conf

[radio-in]
exten => _0N.,1,Rpt(${EXTEN:1}|F)
exten => _0N.,n,Hangup

Reemplace lo que tenga la sección [radio-secure] con lo siguiente:

[radio-secure]
exten=_20XX,1,Rpt,${EXTEN}
exten=_21XX,1,Rpt,${EXTEN}
exten=_22XX,1,Rpt,${EXTEN}
exten=_23XX,1,Rpt,${EXTEN}
exten=_24XX,1,Rpt,${EXTEN}
exten=_25XX,1,Rpt,${EXTEN}
exten=_26XX,1,Rpt,${EXTEN}
exten=_27XXX,1,Rpt,${EXTEN}
exten=_28XXX,1,Rpt,${EXTEN}
exten=_29XXX,1,Rpt,${EXTEN}
exten=_4XXXX,1,Rpt,${EXTEN}
exten=_5XXXX,1,Rpt,${EXTEN}

Añada las siguiente líneas al final de la seccion [allstar-sys]

exten => _9.,1,Rpt(${EXTEN:2}|X|${EXTEN:1:1})
exten => _9.,n,Hangup

Añada estas lineas al final del archivo rpt.conf

[proxy]
ipaddr=AquiVaLaIpPublicaDeEsteServidorQueHaraDeProxy

En este momento este nodo esta preparado para servir de proxy. Asegúrese de que este nodo tiene el archivo que le permite encontrar a los demas nodos y que debería estar en la siguiente ruta: 

/var/lib/asterisk/rpt_extnodes. 

El servicio updatenodelist deberá estar corriendo ya que es el que actualiza la lista del archivo rpt-extnodes.

Llegados a este punto ya tiene un nodo de AllStarLink que funcionará como PROXY. 

Paso 2. Nuestro Nodo en 4G/LTE

El paso a continuación consiste en realizar los siguientes ajustes en el nodo que estará en nuestra red detras del router 4G/LTE. Esto resulta muy interesante porque este nodo podría incluso estar en una zona retirada o de alta montaña funcionando como controlador de repetidor o de enlace simplex con la única condición de que al menos llegue hasta el lugar la señal del proveedor del servicio de datos 4G/LTE.

Agregue los siguientes dos bloque en su archivo iax.conf:

[radio-proxy]
type=user
deny=0.0.0.0/0.0.0.0
permit=<AquiVaLaDireccionIpPublicaDeSuServidorProxy>/255.255.255.255
context=radio-secure-proxy
disallow=all
allow=g726aal2
transfer=no

[radio-proxy-out]
type=peer
host=<AquiVaLaDireccionIpPublicaDeSuServidorProxy>
username=<AquiVaElNumeroDeEsteNodo>
secret=<aquiVaElPasswordQueUsaraEsteNodoParaConectarConElProxy>
auth=md5
disallow=all
allow=g726aal2
transfer=no

 En el archivo rpt.conf añada lo siguiente en el bloque [nodes]:

[nodes]
<deje las lineas que ya tiene este bloque y añada lo que hay a partir de la siguiente linea....>
_20XX = radio-proxy-out/0%s
_20XXX = radio-proxy-out/0%s
_21XX = radio-proxy-out/0%s
_21XXX = radio-proxy-out/0%s
_22XX = radio-proxy-out/0%s
_22XXX = radio-proxy-out/0%s
_23XX = radio-proxy-out/0%s
_23XXX = radio-proxy-out/0%s
_24XX = radio-proxy-out/0%s
_24XXX = radio-proxy-out/0%s
_25XX = radio-proxy-out/0%s
_25XXX = radio-proxy-out/0%s
_26XX = radio-proxy-out/0%s
_26XXX = radio-proxy-out/0%s
_27XXX = radio-proxy-out/0%s
_27XXXX = radio-proxy-out/0%s
_28XXX = radio-proxy-out/0%s
_28XXXX = radio-proxy-out/0%s
_29XXX = radio-proxy-out/0%s
_29XXXX = radio-proxy-out/0%s
_4XXXX = radio-proxy-out/0%s
_4XXXXX = radio-proxy-out/0%s
_5XXXX = radio-proxy-out/0%s
_5XXXXX = radio-proxy-out/0%s
; note the . wildcard doesn't work here in rpt.conf
;_2. = radio-proxy-out/0%s  don't work like extensions

Añada las siguientes líneas en el archivo extensions.conf:

[radio-secure-proxy]
exten => _0X.,1,Goto(allstar-sys|${EXTEN:1}|1)

Para finalizar por cada nodo que tenga en su sistema añada la siguiente línea en la sección [radio-secure-proxy]

            exten => <NumeroDelNodo>,1,rpt,<NumeroDelNodo>|X

Un último paso aqui es ingresar en su cuenta de AllStarLink en el menú de Portal ==> Server Settings, edite la información de su nodo y al final en la casilla que dice "Proxy IP", coloque la dirección IP pública de su proxy y salve la modifiación. Ya puede ir y reiniciar ambos nodos (el proxy y el nodo que tiene atras del servicio 4G) y verifique que aparecen registrados ambos en la red de AllStarLink.

Completados los pasos anteriores estaremos preparados para que nuestro nodo se conecte al sistema usando el proxy.

Paso 3. La VPN

La idea de la VPN es que podamos tener conectados en un enlace dedicado ambos nodos, el que hace de proxy y nuestro nodo detrás del servicio 4G/Lte.

Existen muchos servicios de VPN tanto gratuitos como de pago. En la comunidad de usuarios de AllStarLink he visto que usan ZeroTier. Personalmente estoy cómodo con OpenVPN que me ofrece hasta tres conexiones gratuitas. Cualquiera que sea el de su elección, los pasos son los mismos.

  • Darse de alta en el servicio de VPN.
  • Configurar un conector de VPN para cada máquina/nodo
  • Instalar el cliente de VPN en cada máquina/nodo
  • Desplegar la configuración del conector VPN correspondiente en cada máquina/nodo.
  • Verificar que ambas máquinas/nodo se puedan ver entre si. La forma mas simple de verificar es corriendo el comando ping en ambos nodos.

 El siguiente gráfico ilustra de manera general lo que se quiere lograr.


73s