Conmutador Ethernet inteligente para el planeta Tierra

Conmutador Ethernet inteligente para el planeta Tierra
“Puedes crear una solución (resolver un problema) de varias maneras, ¡pero el método más caro y/o popular no siempre es el más efectivo!”

Preámbulo

Hace unos tres años, en el proceso de desarrollo de un modelo remoto para la recuperación de datos ante desastres, encontré un obstáculo que no me di cuenta de inmediato: la falta de información sobre nuevas soluciones originales para la virtualización de redes en fuentes comunitarias. 

El algoritmo para el modelo desarrollado se planificó de la siguiente manera: 

  1. Un usuario remoto que se puso en contacto conmigo, cuya computadora una vez se negó a arrancar y mostró el mensaje "disco del sistema no detectado/no formateado", lo carga usando Life USB. 
  2. Durante el proceso de arranque, el sistema se conecta automáticamente a una red local privada segura, que además de sí misma contiene la estación de trabajo del administrador, en este caso una computadora portátil, y un nodo NAS. 
  3. Luego me conecto, ya sea para resucitar las particiones del disco o para extraer datos de allí.

Inicialmente, implementé este modelo usando un servidor VPN en un enrutador local en una red bajo mi control, luego en un VDS alquilado. Pero, como suele suceder y según la primera ley de Chisholm, si llueve, la red del proveedor de Internet se cortará, entonces las disputas entre entidades comerciales harán que el proveedor del servicio pierda “energía”...

Por lo tanto, decidí formular primero los requisitos básicos que debe cumplir la herramienta necesaria. El primero es la descentralización. En segundo lugar, dado que tengo varios USB de este tipo, cada uno de ellos tiene una red aislada separada. Bueno, en tercer lugar, una conexión rápida a la red de varios dispositivos y una gestión sencilla de los mismos, incluso en caso de que mi portátil también sea víctima de la ley mencionada anteriormente.

En base a esto y después de pasar dos meses y medio en una investigación práctica de varias opciones no muy adecuadas, yo, bajo mi propia responsabilidad y riesgo, decidí probar otra herramienta de una startup desconocida para mí en ese momento llamada ZeroTier. De lo que nunca me arrepentí más tarde.

Durante estas vacaciones de Año Nuevo, tratando de comprender si la situación con el contenido ha cambiado desde ese momento memorable, realicé una auditoría selectiva de la disponibilidad de artículos sobre este tema, utilizando a Habr como fuente. Para la consulta “ZeroTier” en los resultados de búsqueda solo hay tres artículos que la mencionan, y ninguno con al menos una breve descripción. Y esto a pesar de que entre ellos hay una traducción de un artículo escrito por el propio fundador de ZeroTier, Inc. — Adam Ierymenko.

Los resultados fueron decepcionantes y me impulsaron a empezar a hablar de ZeroTier con más detalle, evitando a los "buscadores" modernos tener que seguir el mismo camino que yo.

¿Entonces que eres?

El desarrollador posiciona ZeroTier como un conmutador Ethernet inteligente para el planeta Tierra. 

“Es un hipervisor de red distribuida construido sobre una red global peer-to-peer (P2P) criptográficamente segura. Una herramienta similar a un switch SDN corporativo, diseñada para organizar redes virtuales sobre físicas, tanto locales como globales, con la capacidad de conectar casi cualquier aplicación o dispositivo”.

Esto es más una descripción de marketing, ahora sobre las características tecnológicas.

▍Núcleo: 

ZeroTier Network Hypervisor es un motor de virtualización de red independiente que emula una red Ethernet, similar a VXLAN, sobre una red global cifrada de igual a igual (P2P).

Los protocolos utilizados en ZeroTier son originales, aunque similares en apariencia a VXLAN e IPSec y constan de dos capas conceptualmente separadas, pero estrechamente relacionadas: VL1 y VL2.

Enlace a la documentación

▍VL1 es una capa de transporte básica de igual a igual (P2P), una especie de “cable virtual”.

"Un centro de datos global requiere un 'armario global' de cableado".

En las redes convencionales, L1 (OSI Layer 1) se refiere a los cables reales o radios inalámbricos que transportan datos y los chips del dispositivo transceptor físico que los modulan y demodulan. VL1 es una red peer-to-peer (P2P) que hace lo mismo: utiliza cifrado, autenticación y otros trucos de red para organizar cables virtuales según sea necesario.

Además, lo hace de forma automática, rápida y sin la participación del usuario al iniciar un nuevo nodo ZeroTier.

Para lograr esto, VL1 está organizado de manera similar al sistema de nombres de dominio. En el corazón de la red hay un grupo de servidores raíz de alta disponibilidad, cuya función es similar a la de los servidores de nombres raíz DNS. Por el momento, los servidores raíz principales (planetarios) están bajo el control del desarrollador: ZeroTier, Inc. y se proporcionan como un servicio gratuito. 

Sin embargo, es posible crear servidores raíz personalizados (luns) que le permitan:

  • reducir la dependencia de la infraestructura de ZeroTier, Inc.; Enlace a la documentación
  • aumentar la productividad minimizando los retrasos; 
  • continuará funcionando normalmente si se pierde la conexión a Internet.

Inicialmente, los nodos se lanzan sin conexiones directas entre sí. 

Cada par en VL1 tiene una dirección ZeroTier única de 40 bits (10 hexadecimal) que, a diferencia de las direcciones IP, es un identificador cifrado que no contiene información de enrutamiento. Esta dirección se calcula a partir de la parte pública del par de claves pública/privada. La dirección, la clave pública y la clave privada de un nodo forman juntas su identidad.

Member ID: df56c5621c  
            |
            ZeroTier address of node

En cuanto al cifrado, este es motivo de un artículo aparte.

Enlace a la documentación

Para establecer comunicación, los pares primero envían paquetes "hacia arriba" en el árbol de servidores raíz y, a medida que estos paquetes viajan a través de la red, inician la creación aleatoria de canales de avance a lo largo del camino. El árbol intenta constantemente "colapsar por sí solo" para optimizarse para el mapa de ruta que almacena.

El mecanismo para establecer una conexión de igual a igual es el siguiente:

Conmutador Ethernet inteligente para el planeta Tierra

  1. El nodo A quiere enviar un paquete al nodo B, pero como no conoce la ruta directa, lo envía al nodo R (luna, el servidor raíz del usuario).
  2. Si el nodo R tiene una conexión directa con el nodo B, reenvía el paquete allí. De lo contrario, envía el paquete hacia arriba antes de llegar a las raíces planetarias. Las raíces planetarias conocen todos los nodos, por lo que el paquete eventualmente llegará al nodo B si está en línea.
  3. El nodo R también envía un mensaje llamado "cita" al nodo A, que contiene sugerencias sobre cómo puede llegar al nodo B. Mientras tanto, el servidor raíz, que reenvía el paquete al nodo B, envía una "cita" informándole sobre cómo puede llegar al nodo A.
  4. Los nodos A y B reciben sus mensajes de encuentro e intentan enviarse mensajes de prueba entre sí en un intento de violar cualquier NAT o firewall con estado que se encuentre en el camino. Si esto funciona, se establece una conexión directa y los paquetes ya no van y vienen.

Si no se puede establecer una conexión directa, la comunicación continuará a través de retransmisión y los intentos de conexión directa continuarán hasta que se logre un resultado exitoso. 

VL1 también tiene otras características para establecer conectividad directa, incluido el descubrimiento de pares de LAN, la predicción de puertos para atravesar NAT IPv4 simétrica y el mapeo explícito de puertos usando uPnP y/o NAT-PMP si está disponible en la LAN física local.

→ Enlace a la documentación

▍VL2 es un protocolo de virtualización de red Ethernet similar a VXLAN con funciones de administración SDN. Entorno de comunicación familiar para sistemas operativos y aplicaciones...

A diferencia de VL1, la creación de redes VL2 (VLAN) y la conexión de nodos a ellas, así como su gestión, requiere la participación directa del usuario. Puede hacer esto usando un controlador de red. De hecho, es un nodo ZeroTier normal, donde las funciones del controlador se controlan de dos maneras: directamente, cambiando archivos o, como recomienda encarecidamente el desarrollador, utilizando una API publicada. 

Este método de administrar redes virtuales ZeroTier no es muy conveniente para la persona promedio, por lo que existen varias GUI:
 

  • Uno del desarrollador ZeroTier, disponible como una solución de nube pública SaaS con cuatro planes de suscripción, incluido el gratuito, pero limitado en dispositivos administrados y nivel de soporte
  • El segundo es de un desarrollador independiente, con una funcionalidad algo simplificada, pero disponible como una solución privada de código abierto para usar en recursos locales o en la nube.

VL2 se implementa encima de VL1 y es transportado por este. Sin embargo, hereda el cifrado y la autenticación del punto final VL1 y también utiliza sus claves asimétricas para firmar y verificar las credenciales. VL1 le permite implementar VL2 sin preocuparse por la topología de la red física existente. Es decir, los problemas de conectividad y eficiencia de enrutamiento son problemas de VL1. Es importante comprender que no existe conexión entre las redes virtuales VL2 y las rutas VL1. De manera similar a la multiplexación de VLAN en una LAN cableada, dos nodos que comparten múltiples membresías de red seguirán teniendo solo una ruta VL1 (cable virtual) entre ellos.

Cada red VL2 (VLAN) se identifica mediante una dirección de red ZeroTier de 64 bits (16 hexadecimal), que contiene la dirección ZeroTier de 40 bits del controlador y un número de 24 bits que identifica la red creada por ese controlador.

Network ID: 8056c2e21c123456
            |         |
            |         Network number on controller
            |
            ZeroTier address of controller

Cuando un nodo se une a una red o solicita una actualización de la configuración de la red, envía un mensaje de solicitud de configuración de la red (a través de VL1) al controlador de red. Luego, el controlador utiliza la dirección VL1 del nodo para encontrarlo en la red y enviarle los certificados, las credenciales y la información de configuración adecuados. Desde el punto de vista de las redes virtuales VL2, las direcciones VL1 ZeroTier pueden considerarse números de puerto en un enorme conmutador virtual global.

Todas las credenciales emitidas por los controladores de red a los nodos miembros de una red determinada están firmadas con la clave secreta del controlador para que todos los participantes de la red puedan verificarlas. Las credenciales tienen marcas de tiempo generadas por el controlador, lo que permite una comparación relativa sin tener que acceder al reloj del sistema local del host. 

Las credenciales se emiten únicamente a sus propietarios y luego se envían a pares que desean comunicarse con otros nodos de la red. Esto permite que la red escale a tamaños enormes sin la necesidad de almacenar en caché grandes cantidades de credenciales en nodos o contactar constantemente con el controlador de red.

Las redes ZeroTier admiten la distribución de multidifusión a través de un sencillo sistema de publicación/suscripción.

Enlace a la documentación

Cuando un nodo desea recibir una difusión de multidifusión para un grupo de distribución particular, anuncia la membresía en ese grupo a otros miembros de la red con la que se está comunicando y al controlador de red. Cuando un nodo desea enviar una multidifusión, accede simultáneamente a su caché de publicaciones recientes y solicita periódicamente publicaciones adicionales.

Una transmisión (Ethernet ff: ff: ff: ff: ff: ff) se trata como un grupo de multidifusión al que todos los participantes se suscriben. Se puede desactivar a nivel de red para reducir el tráfico si no es necesario. 

ZeroTier emula un conmutador Ethernet real. Este hecho nos permite realizar combinando las redes virtuales creadas con otras redes Ethernet (LAN cableada, WiFi, backplane virtual, etc.) a nivel de enlace de datos, utilizando un puente Ethernet normal.

Para actuar como puente, el controlador de red debe designar un host como tal. Este esquema se implementa por razones de seguridad, ya que los hosts de red normales no pueden enviar tráfico desde una fuente distinta a su dirección MAC. Los nodos designados como puentes también utilizan un modo especial del algoritmo de multidifusión, que interactúa con ellos de manera más agresiva y específica durante las suscripciones grupales y la replicación de todo el tráfico de transmisión y las solicitudes ARP. 

El conmutador también tiene la capacidad de crear redes públicas y ad-hoc, un mecanismo QoS y un editor de reglas de red.

▍Nodo:

cero de nivel uno es un servicio que se ejecuta en equipos portátiles, de escritorio, servidores, máquinas virtuales y contenedores que proporciona conexiones a una red virtual a través de un puerto de red virtual, similar a un cliente VPN. 

Una vez que el servicio está instalado y en ejecución, puede conectarse a redes virtuales utilizando sus direcciones de 16 caracteres. Cada red aparece como un puerto de red virtual en el sistema que se comporta como un puerto Ethernet normal.

ZeroTier One está actualmente disponible para los siguientes sistemas operativos y sistemas.

Sistemas operativos:

  • Microsoft Windows - Instalador MSI x86/x64
  • MacOS - Instalador de paquetes
  • apple iOS - Tienda de aplicaciones
  • Android - Tienda de juegos
  • Linux - DEB/RPM
  • FreeBSD - Paquete FreeBSD

NAS:

  • Synology NAS
  • QNAP NAS
  • WD MyCloud NAS

Otros:

  • Docker - archivo acoplable
  • OpenWRT - puerto comunitario
  • Incrustación de aplicaciones -SDK (libzt)

Para resumir todo lo anterior, señalaría que ZeroTier es una herramienta excelente y rápida para combinar sus recursos físicos, virtuales o en la nube en una red local común, con la capacidad de dividirla en VLAN y sin un único punto de falla. .

Eso es todo por la parte teórica en el formato del primer artículo sobre ZeroTier para Habr: ¡probablemente eso sea todo! En el próximo artículo, planeo demostrar en la práctica la creación de una infraestructura de red virtual basada en ZeroTier, donde se utilizará un VDS con una plantilla GUI privada de código abierto como controlador de red. 

Estimados lectores! ¿Utilizas la tecnología ZeroTier en tus proyectos? Si no, ¿qué herramientas utiliza para conectar en red sus recursos?

Conmutador Ethernet inteligente para el planeta Tierra

Fuente: habr.com

Añadir un comentario