Switch Ethernet Inteligente para o Planeta Terra

Switch Ethernet Inteligente para o Planeta Terra
“Você pode criar uma solução (resolver um problema) de diversas maneiras, mas o método mais caro e/ou popular nem sempre é o mais eficaz!”

Preâmbulo

Há cerca de três anos, no processo de desenvolvimento de um modelo remoto para recuperação de dados de desastres, encontrei um obstáculo que não foi percebido imediatamente - a falta de informações sobre novas soluções originais para virtualização de redes em fontes comunitárias. 

O algoritmo para o modelo desenvolvido foi planejado da seguinte forma: 

  1. Um usuário remoto que entrou em contato comigo, cujo computador uma vez se recusou a inicializar, exibindo a mensagem “disco do sistema não detectado/não formatado”, carrega-o usando USB vitalício. 
  2. Durante o processo de inicialização, o sistema se conecta automaticamente a uma rede local privada segura, que além de si contém a estação de trabalho do administrador, neste caso um laptop, e um nó NAS. 
  3. Então eu me conecto - para ressuscitar as partições do disco ou para extrair dados de lá.

Inicialmente, implementei esse modelo usando um servidor VPN em um roteador local em uma rede sob meu controle e depois em um VDS alugado. Mas, como acontece frequentemente e de acordo com a primeira lei de Chisholm, se chover, a rede do fornecedor de Internet cairá, então as disputas entre entidades empresariais farão com que o fornecedor de serviços perca “energia”...

Portanto, decidi primeiro formular os requisitos básicos que a ferramenta necessária deve atender. A primeira é a descentralização. Em segundo lugar, como tenho vários USBs desse tipo, cada um deles possui uma rede isolada separada. Pois bem, em terceiro lugar, ligação rápida à rede de vários dispositivos e gestão simples dos mesmos, inclusive no caso do meu portátil também ser vítima da lei acima mencionada.

Com base nisso e tendo passado dois meses e meio pesquisando práticas de várias opções não muito adequadas, eu, por minha própria conta e risco, decidi tentar outra ferramenta de uma startup desconhecida para mim na época chamada ZeroTier. Do qual nunca me arrependi depois.

Durante estes feriados de Ano Novo, tentando perceber se a situação do conteúdo mudou desde aquele momento memorável, realizei uma auditoria selectiva à disponibilidade de artigos sobre este tema, utilizando o Habr como fonte. Para a consulta “ZeroTier” nos resultados da pesquisa existem apenas três artigos que a mencionam, e nenhum com pelo menos uma breve descrição. E isso apesar de entre eles haver a tradução de um artigo escrito pelo próprio fundador da ZeroTier, Inc. - Adam Ierymenko.

Os resultados foram decepcionantes e me levaram a começar a falar sobre o ZeroTier com mais detalhes, evitando que os “buscadores” modernos tivessem que seguir o mesmo caminho que eu segui.

Então, o que você é?

O desenvolvedor posiciona o ZeroTier como um switch Ethernet inteligente para o planeta Terra. 

“É um hipervisor de rede distribuído construído sobre uma rede global peer-to-peer (P2P) criptograficamente segura. Uma ferramenta semelhante a um switch SDN corporativo, projetada para organizar redes virtuais sobre redes físicas, tanto locais quanto globais, com a capacidade de conectar praticamente qualquer aplicativo ou dispositivo.”

Esta é mais uma descrição de marketing, agora sobre os recursos tecnológicos.

▍Núcleo: 

ZeroTier Network Hypervisor é um mecanismo de virtualização de rede independente que emula uma rede Ethernet, semelhante ao VXLAN, sobre uma rede ponto a ponto (P2P) criptografada global.

Os protocolos usados ​​no ZeroTier são originais, embora semelhantes em aparência ao VXLAN e IPSec e consistem em duas camadas conceitualmente separadas, mas intimamente relacionadas: VL1 e VL2.

Link para documentação

▍VL1 é uma camada de transporte ponto a ponto (P2P) básica, uma espécie de “cabo virtual”.

“Um data center global requer um 'armário global' de cabeamento.”

Em redes convencionais, L1 (OSI Layer 1) refere-se aos cabos ou rádios sem fio reais que transportam dados e aos chips do dispositivo transceptor físico que os modulam e demodulam. VL1 é uma rede ponto a ponto (P2P) que faz a mesma coisa, usando criptografia, autenticação e outros truques de rede para organizar cabos virtuais conforme necessário.

Além disso, faz isso de forma automática, rápida e sem o envolvimento do usuário ao lançar um novo nó ZeroTier.

Para conseguir isso, o VL1 é organizado de forma semelhante ao sistema de nomes de domínio. No centro da rede está um grupo de servidores raiz altamente disponíveis, cuja função é semelhante à dos servidores de nomes raiz DNS. No momento, os principais servidores raiz (planetários) estão sob o controle do desenvolvedor - ZeroTier, Inc. e são fornecidos como um serviço gratuito. 

No entanto, é possível criar servidores raiz personalizados (luns) que permitem:

  • reduzir a dependência da infraestrutura da ZeroTier, Inc.; Link para documentação
  • aumentar a produtividade minimizando atrasos; 
  • continue funcionando normalmente se a conexão com a Internet for perdida.

Inicialmente, os nós são lançados sem conexões diretas entre si. 

Cada par em VL1 possui um endereço ZeroTier exclusivo de 40 bits (10 hexadecimais), que, diferentemente dos endereços IP, é um identificador criptografado que não contém informações de roteamento. Este endereço é calculado a partir da parte pública do par de chaves pública/privada. O endereço, a chave pública e a chave privada de um nó formam sua identidade.

Member ID: df56c5621c  
            |
            ZeroTier address of node

Quanto à criptografia, este é um motivo para um artigo separado.

Link para documentação

Para estabelecer a comunicação, os pares primeiro enviam pacotes “para cima” na árvore de servidores raiz e, à medida que esses pacotes viajam pela rede, eles iniciam a criação aleatória de canais de encaminhamento ao longo do caminho. A árvore está constantemente tentando “entrar em colapso por conta própria” para se otimizar para o mapa de rotas que armazena.

O mecanismo para estabelecer uma conexão ponto a ponto é o seguinte:

Switch Ethernet Inteligente para o Planeta Terra

  1. O Nó A deseja enviar um pacote para o Nó B, mas como não conhece o caminho direto, ele o envia upstream para o Nó R (moon, o servidor raiz do usuário).
  2. Se o nó R tiver uma conexão direta com o nó B, ele encaminha o pacote para lá. Caso contrário, ele envia o pacote a montante antes de chegar às raízes planetárias.As raízes planetárias conhecem todos os nós, portanto o pacote acabará por chegar ao nó B se estiver online.
  3. O nó R também envia uma mensagem chamada "rendezvous" para o nó A, contendo dicas de como ele pode chegar ao nó B. Enquanto isso, o servidor raiz, que encaminha o pacote para o nó B, envia um "rendezvous" informando-o sobre como pode alcançar o nó A.
  4. Os nós A e B recebem suas mensagens de encontro e tentam enviar mensagens de teste entre si, na tentativa de violar qualquer NAT ou firewalls com estado encontrados ao longo do caminho. Se isso funcionar, uma conexão direta será estabelecida e os pacotes não vão mais para frente e para trás.

Se uma conexão direta não puder ser estabelecida, a comunicação continuará através do relé e as tentativas de conexão direta continuarão até que um resultado bem-sucedido seja alcançado. 

VL1 também possui outros recursos para estabelecer conectividade direta, incluindo descoberta de pares de LAN, previsão de porta para passagem de NAT IPv4 simétrico e mapeamento de porta explícito usando uPnP e/ou NAT-PMP, se disponível na LAN física local.

→ Link para documentação

▍VL2 é um protocolo de virtualização de rede Ethernet semelhante a VXLAN com funções de gerenciamento SDN. Ambiente de comunicação familiar para sistemas operacionais e aplicativos...

Ao contrário do VL1, criar redes VL2 (VLANs) e conectar nós a elas, bem como gerenciá-las, requer a participação direta do usuário. Ele pode fazer isso usando um controlador de rede. Em essência, é um nó ZeroTier regular, onde as funções do controlador são controladas de duas maneiras: diretamente, alterando arquivos ou, como o desenvolvedor recomenda fortemente, usando uma API publicada. 

Este método de gerenciamento de redes virtuais ZeroTier não é muito conveniente para a pessoa comum, portanto, existem várias GUIs:
 

  • Um do desenvolvedor ZeroTier, disponível como uma solução SaaS de nuvem pública com quatro planos de assinatura, inclusive gratuito, mas limitado no número de dispositivos gerenciados e no nível de suporte
  • A segunda é de um desenvolvedor independente, com funcionalidade um tanto simplificada, mas disponível como uma solução privada de código aberto para uso local ou em recursos na nuvem.

VL2 é implementado sobre VL1 e é transportado por ele. No entanto, ele herda a criptografia e autenticação do endpoint VL1 e também usa suas chaves assimétricas para assinar e verificar credenciais. VL1 permite implementar VL2 sem se preocupar com a topologia de rede física existente. Ou seja, problemas de conectividade e eficiência de roteamento são problemas de VL1. É importante compreender que não há conexão entre redes virtuais VL2 e caminhos VL1. Semelhante à multiplexação de VLAN em uma LAN com fio, dois nós que compartilham múltiplas associações de rede ainda terão apenas um caminho VL1 (cabo virtual) entre eles.

Cada rede VL2 (VLAN) é identificada por um endereço de rede ZeroTier de 64 bits (16 hexadecimais), que contém o endereço ZeroTier de 40 bits do controlador e um número de 24 bits que identifica a rede criada por esse controlador.

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

Quando um nó se junta a uma rede ou solicita uma atualização de configuração de rede, ele envia uma mensagem de solicitação de configuração de rede (via VL1) ao controlador de rede. O controlador então usa o endereço VL1 do nó para localizá-lo na rede e enviar-lhe os certificados, credenciais e informações de configuração apropriados. Do ponto de vista das redes virtuais VL2, os endereços VL1 ZeroTier podem ser considerados números de porta em um enorme switch virtual global.

Todas as credenciais emitidas pelos controladores de rede para os nós membros de uma determinada rede são assinadas com a chave secreta do controlador para que todos os participantes da rede possam verificá-las. As credenciais possuem carimbos de data e hora gerados pelo controlador, permitindo comparação relativa sem a necessidade de acessar o relógio do sistema local do host. 

As credenciais são emitidas apenas para seus proprietários e depois enviadas para pares que desejam se comunicar com outros nós da rede. Isso permite que a rede seja dimensionada para tamanhos enormes sem a necessidade de armazenar em cache grandes quantidades de credenciais em nós ou de entrar em contato constante com o controlador de rede.

As redes ZeroTier suportam distribuição multicast por meio de um sistema simples de publicação/assinatura.

Link para documentação

Quando um nó deseja receber uma transmissão multicast para um determinado grupo de distribuição, ele anuncia a participação nesse grupo para outros membros da rede com os quais está se comunicando e para o controlador de rede. Quando um nó deseja enviar um multicast, ele acessa simultaneamente seu cache de publicações recentes e periodicamente solicita publicações adicionais.

Uma transmissão (Ethernet ff: ff: ff: ff: ff: ff) é tratada como um grupo multicast no qual todos os participantes se inscrevem. Ele pode ser desabilitado no nível da rede para reduzir o tráfego se não for necessário. 

ZeroTier emula um switch Ethernet real. Este facto permite-nos realizar combinar as redes virtuais criadas com outras redes Ethernet (LAN com fio, WiFi, backplane virtual, etc.) no nível do link de dados - usando uma ponte Ethernet normal.

Para atuar como ponte, o controlador de rede deve designar um host como tal. Este esquema é implementado por razões de segurança, uma vez que os hosts normais da rede não têm permissão para enviar tráfego de uma fonte diferente do seu endereço MAC. Os nós designados como pontes também usam um modo especial do algoritmo multicast, que interage com eles de forma mais agressiva e direcionada durante assinaturas de grupo e replicação de todo o tráfego de transmissão e solicitações ARP. 

O switch também tem a capacidade de criar redes públicas e ad-hoc, um mecanismo de QoS e um editor de regras de rede.

▍Nó:

Zero Nível Um é um serviço executado em laptops, desktops, servidores, máquinas virtuais e contêineres que fornece conexões a uma rede virtual por meio de uma porta de rede virtual, semelhante a um cliente VPN. 

Depois que o serviço estiver instalado e iniciado, você poderá conectar-se a redes virtuais usando seus endereços de 16 dígitos. Cada rede aparece como uma porta de rede virtual no sistema, que se comporta como uma porta Ethernet normal.

ZeroTier One está atualmente disponível para os seguintes sistemas operacionais e sistemas operacionais.

Sistemas operacionais:

  • Microsoft Windows - Instalador MSI x86/x64
  • MacOS - Instalador PKG
  • apple iOS - Loja de aplicativos
  • Android - Loja de jogos
  • Linux - DEB/RPM
  • FreeBSD - Pacote FreeBSD

NAS:

  • NAS Synology
  • NAS QNAP
  • NAS WD MyCloud

Outros:

  • Estivador - arquivo docker
  • OpenWRT - porto comunitário
  • Incorporação de aplicativos -SDK (libzt)

Para resumir tudo o que foi dito acima, observo que ZeroTier é uma ferramenta excelente e rápida para combinar seus recursos físicos, virtuais ou de nuvem em uma rede local comum, com a capacidade de dividi-la em VLANs e sem um único ponto de falha. .

Isso é tudo na parte teórica no formato do primeiro artigo sobre ZeroTier para Habr - provavelmente é tudo! No próximo artigo, pretendo demonstrar na prática a criação de uma infraestrutura de rede virtual baseada em ZeroTier, onde um VDS com um modelo GUI privado de código aberto será usado como controlador de rede. 

Caros leitores! Você utiliza a tecnologia ZeroTier em seus projetos? Caso contrário, quais ferramentas você usa para conectar seus recursos em rede?

Switch Ethernet Inteligente para o Planeta Terra

Fonte: habr.com

Adicionar um comentário