Hoy en día es útil poder reunir todos los dispositivos que posees bajo una única red virtual, para que puedas acceder a ellos más fácilmente y poder controlarlos incluso de forma remota, sin necesariamente exponerlos al resto del mundo. Existen varios métodos para crear una VPN (Red Privada Virtual) y, en principio, no están realmente al alcance de todos. Sin embargo, hace unos días nos encontramos con Nivel cero, una solución de código abierto que permite a cualquier persona crear su propia red virtual sin tener conocimientos específicos, gracias a un asistente muy sencillo y una aplicación que garantiza una conexión totalmente encriptada y autenticada mediante algoritmos como Salsa256 de 20 bits y Poly1305.
El punto de partida es precisamente crear la red virtual que permitirá que nuestros dispositivos se conecten entre sí como si estuvieran conectados a la misma red de área local (LAN). Para hacer esto, puede usar el controlador central alojado por ZeroTier en my.zerotier.com, un portal de interfaz de usuario basado en web para administrar redes virtuales. Para registrarse, simplemente proporcione su correo electrónico y contraseña y, una vez que haya iniciado sesión, podrá crear su propia red virtual, identificada por una identificación única de 16 dígitos.
El último paso es instalar el cliente ZeroTier en cada dispositivo que desee conectar a la red, con la membresía gratuita para uso no comercial, puede conectar hasta 100 dispositivos al controlador de red ZeroTier Central. Prácticamente todos los sistemas populares son compatibles, incluidos los dispositivos móviles Android e iOS y el firmware de varios NAS como Sinology. Una vez instalada la aplicación, cada dispositivo estará a su vez identificado mediante un ID de 10 dígitos: basta con indicar los 16 dígitos de identificación de tu red para iniciar la configuración automática.
Configurar un controlador de red independiente
Lo hemos probado y queríamos ir más allá tratando de dar un primer paso hacia una solución autohospedada, configurando nuestro controlador que no está expuesto públicamente. En este artículo veremos cómo configurar el tuyo controlador de red independiente sin tener que pasar necesariamente de registrarse a my.zerotier.com.
Configurar un controlador independiente es bastante simple: simplemente instale el software cero de nivel uno y siga las instrucciones de instalación a continuación para instalar ztncui en una máquina Linux.
Requisitos previos
- Máquina Ubuntu con 1GB de RAM
- abra el puerto 9993 si un nodo de destino está detrás de un firewall (no es necesario, pero reduce la latencia)
INSTALACIÓN
Conectémonos a nuestra máquina Linux y comencemos a instalar el cliente. Las distribuciones basadas en Debian y RPM, incluidas Debian, Ubuntu, CentOS, RHEL, Fedora y otras, son compatibles mediante un script que agrega el repositorio correcto e instala el paquete. El siguiente comando también se muestra en la página de descarga de ZeroTier zerotier.com/download.shtml.
curl -s https://install.zerotier.com | bash sudo
En este punto el cliente Zerotier estará instalado en nuestra máquina, ahora vamos a agregar el repositorio para descargar Ztncui, es decir lo que será nuestro controlador.
curl -O https://s3-us-west-1.amazonaws.com/key-networks/deb/ztncui/1/x86_64/ztncui_0.5.8_amd64.deb
Vamos a instalarlo con el siguiente comando:
sudo apt-get install ./ztncui_0.5.8_amd64.deb
Opcional: una vez instalado ztncui podemos instalar certificados SSL, por defecto se utilizarán certificados autogenerados y autofirmados, pero puedes generar los tuyos propios llenándolos con tu información personal usando los siguientes comandos:
sudo -i
cd /opt/key-networks/ztncui/etc/tls
rm -f privkey.pem cadena completa.pem
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privkey.pem -out fullchain.pem
chown ztncui.ztncui *.pem
chmod 600 llave privada.pem
Restringimos el acceso al puerto 3443 en la interfaz de red pública a nuestra propia dirección IP (al menos hasta que se establezca la contraseña de administrador).
sudo sh -c "echo 'HTTPS_PORT = 3443'> /opt/key-networks/ztncui/.env"
Habiendo obtenido ya un certificado y una clave privada, debería poder acceder a ztncui a través de HTTPS en el puerto especificado por HTTPS_PORT.
En este punto, podemos usar nuestro controlador, conectémonos a través de HTTPS en el puerto 3443 a través del navegador web, https: //: 3443
Luego se pueden crear más usuarios a través del menú. Usuario>Crear usuario ingresando nombre de usuario, contraseña y especificando si la contraseña se cambiará en el primer inicio de sesión.
Desde el menu Nuestra red es posible crear la red que nos permitirá conectar todos los dispositivos remotos. Hacemos clic en Agregar red y elija un nombre para nuestra red.
Volvamos al Home donde es posible identificar el ID de 16 dígitos de la red virtual recién creada. Al hacer clic en Listar todas las redes en este controlador será posible configurar nuestra red.
Haga clic en configuración fácil.
Tenemos la posibilidad de asignar o generar automáticamente una clase de IP para la red virtual y establecer el rango de direcciones que utilizarán los dispositivos que agreguemos.
Una vez confirmado volvemos a la página anterior; haciendo clic en detalles podremos tener más información sobre la red recién creada.
Al hacer clic en miembros podremos consultar la lista de dispositivos añadidos. Obviamente la lista estará vacía.
Sin embargo, podemos agregar nuestro propio controlador escribiendo el comando en nuestra terminal:
sudo zerotier-cli unirse [ID de red]
Donde [networkID] es el código de 16 dígitos que identifica nuestra red. Puede verificar el estado de la conexión con el comando:
estado de sudo zerotier-cli
En esta etapa, un error como "ACCESS_DENIED" es normal, ya que el cliente debe habilitarse. Así que vamos a la sección Red>Miembros de nuestro controlador, se mostrará el ID del dispositivo recién añadido al que podemos asignar un nombre para poder reconocerlo más fácilmente. Habilitar la bandera autorizará al dispositivo a formar parte de nuestra red, efectivamente podemos ver que se le ha asignado automáticamente una IP perteneciente al pool previamente configurado (se puede cambiar si se desea).
Para agregar los otros dispositivos en su lugar, siempre podemos descargar el cliente desde la página de descargas de ZeroTier. Será posible seleccionar el icono correspondiente al sistema operativo del dispositivo que deseamos añadir a la red.
Por ejemplo, si seleccionamos Windows descargaremos el paquete .msi para instalarlo directamente en la máquina. También podemos conectar dispositivos móviles a través de la app Zerotier One disponible tanto en Play Store como en Apple Store. El procedimiento será similar al explicado anteriormente: instalar el cliente, unirnos a la red identificada por los 16 dígitos y habilitar los dispositivos agregados desde el tablero de nuestro controlador. La siguiente imagen mostrará los diferentes clientes que agregamos durante nuestra prueba.
A partir de ahora, nuestros dispositivos también serán accesibles de forma remota, desde cualquier destino utilizando las IP asignadas.
Enrutamiento entre ZeroTier y redes físicas
El hecho de tener que utilizar direcciones IP distintas a las de la LAN de la oficina para identificar los dispositivos de nuestra empresa no nos entusiasmaba, hubiera sido más cómodo conectarnos a las máquinas sin tener que recordar todas las IP virtuales asignadas por la red ZeroTier . Entonces, al revisar la documentación, encontramos una manera de hacerlo.
Los pasos a realizar son los siguientes:
- Instale ZeroTier en una máquina Linux que actuará como puerta de enlace
- Agregue una nueva ruta en nuestro controlador ZeroTier
- Habilitar el reenvío de IP
- voy a configurar iptables
Esta es una tabla de resumen que contiene los parámetros de ejemplo que necesitaremos para la configuración, para ser reemplazados con su configuración.
Información | EJEMPLO | Variable |
---|---|---|
ID de red ZeroTier | 865e7201263ef8e07 | $NETWORK_ID |
Interfaz de nombre ZeroTier | zt7nnig26 | $ZT_IFACE |
Nombre de interfaz física | eth0 | $PHY_IFACE |
Subred de ZeroTier | 10.100.10.0/24 | |
Oficina de física de subred (objetivo) | 192.168.1.0/24 | $PHY_SUB |
Dirección IP de puerta de enlace ZeroTier | 84.100.10.100 | $ZT_ADDR |
1.Instale ZeroTier en una máquina Linux que actuará como puerta de enlace
Dentro de la red LAN será necesario configurar una máquina Ubuntu, instalar el cliente ZeroTier y agregar la máquina a la red virtual habilitándola para obtener una IP, como se muestra arriba.
En nuestro caso, el propio controlador forma parte de la red física, por lo que utilizaremos esa misma máquina como "enrutador".
2. Agregue una ruta administrada a la red ZeroTier en nuestro controlador
En este paso agregaremos otra ruta para cualquier dispositivo conectado a la red ZeroTier. Vamos a Red>detalles como se muestra arriba y luego haga clic en rutas.
La página mostrará la ruta existente actual, creada por defecto al crear la red virtual. Añadiremos uno nuevo estableciendo como objetivo la clase de IP que identifica nuestra red física corporativa y cómo Puerta de enlace la dirección IP virtual de la máquina Linux. Se recomienda configurar la clase de destino con una subred un poco más grande que la subred física real, de modo que los dispositivos ubicados en las redes física y virtual de ZeroTier sigan prefiriendo la conexión física. En nuestro ejemplo, nuestra LAN interna es 192.168.1.0/24, por lo que configuraremos 192.168.1.0/23 en lugar de /24 (un número más pequeño es una subred más grande en esta notación), mientras que la IP virtual de la puerta de enlace, así como nuestro controlador , es 84.100.10.100.
Haga clic en Enviar y la nueva ruta se añadirá a la lista.
3.Habilitar el reenvío de IP
En este punto, conectémonos a la terminal de Linux y editemos el archivo. /etc/sysctl.conf usando el comando
sudo usted /etc/sysctl.conf
y descomente la línea para net.ipv4.ip_forward eliminando #. Guardamos y cerramos el archivo pulsando Esc y escribiendo : wq! seguido de la tecla enter de confirmación.
El reenvío se habilitará en el próximo reinicio de la máquina, para habilitarlo de inmediato, escriba el comando:
sudo sysctl -w net.ipv4.ip_forward=1
4.Configurar iptables
También desde la shell de Ubuntu asignamos dos variables que nos facilitarán los comandos posteriores. Los valores asignados corresponden a las 2 interfaces de red de la máquina, para visualizarlos teclear en Ifconfig a través de conchas; obtendrá algo como eth0 y ztnnig26. Configuramos las variables con el siguiente comando:
PHY_IFACE=eth0; ZT_IFACE=zt7nnig26
Agreguemos las reglas a las tablas de ip:
sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
sudo iptables -A ADELANTE -i $PHY_IFACE -o $ZT_IFACE -m estado --estado RELACIONADO, ESTABLECIDO -j ACEPTAR
sudo iptables -A ADELANTE -i $ZT_IFACE -o $PHY_IFACE -j ACEPTAR
También guardamos las reglas para el próximo arranque.
sudo apt install iptables-persistent sudo bash -c iptables-save > /etc/iptables/rules.v4
Test!
Ahora todo lo que queda es probar la configuración;
- Conecte la PC a otra red (diferente de la LAN recién agregada)
- Agréguelo a la red de nivel cero y habilite la autorización
- Intente acceder a alguna máquina de red LAN que agregó anteriormente usando la IP de la red física
Conclusiones
Obviamente, ZeroTier ofrece mucho más de lo que se describe en este artículo, solo consulte el manual para darse cuenta de su potencial. Digamos que, después de leer el manual, decidimos intentar obtener una solución autohospedada decidiendo presentar este interesante producto a través de una guía rápida. También tuvimos excelentes impresiones con respecto a la velocidad de conexión, comparable a la de nuestra VPN de punto a sitio que usamos habitualmente.
Obviamente, lo que se muestra en este artículo es solo un primer paso para tener una infraestructura completamente independiente. Por el momento, sin embargo, los 4 servidores raíz de nivel cero ubicados en diferentes áreas geográficas se utilizan para establecer conexiones entre los diferentes pares. La versión actual de zerotier le permitiría crear sus propios servidores raíz, pero esta característica todavía se considera algo experimental, por lo que decidimos detenernos allí por el momento dada la inminente llegada de la versión 2.0. Así que solo queda esperar a la llegada de la nueva versión para saber si habrá novedades interesantes.
NB Para situaciones más críticas, donde, por ejemplo, se trata de datos confidenciales o equipos particulares, es mejor centrarse en soluciones VPN administradas completamente internamente en lugar de software de terceros. Si necesita saber cuál es la mejor solución para usted, ¡contáctenos!
Enlaces útiles
https://www.zerotier.com/manual/
https://zerotier.atlassian.net/wiki/spaces/SD/overview
https://www.zerotier.com/2019/09/24/zerotier-2-0-status/
https://key-networks.com/ztncui/