Como gerencio minha própria rede virtual com ZeroTier
ZeroTier é um backbone de rede virtual criptografado, permitindo que várias máquinas se comuniquem como se estivessem em uma única rede.
Automação é um tema quente no momento. Em meu trabalho diário como engenheiro de confiabilidade de site (SRE), parte de minha missão é automatizar o máximo possível de tarefas repetidas. Mas quantos de nós fazemos isso em nossas vidas diárias, não relacionadas ao trabalho? Este ano, estou focado em automatizar o trabalho para que possamos nos concentrar nas coisas que são importantes.
Ao automatizar tudo, tive algumas dificuldades com sites remotos. Não sou uma pessoa de networking, então comecei a analisar minhas opções. Depois de pesquisar as diversas redes privadas virtuais (VPN), endpoints de hardware, regras de firewall e tudo o que envolve o suporte a vários sites remotos, fiquei confuso, mal-humorado e frustrado com a complexidade de tudo isso.
Então encontrei o ZeroTier. ZeroTier é um backbone de rede virtual criptografado, permitindo que várias máquinas se comuniquem como se estivessem em uma única rede. O código é todo de código aberto e você pode hospedar o controlador por conta própria ou usar o serviço ZeroTierOne com planos gratuitos ou pagos. Estou usando o plano gratuito deles agora e é robusto, sólido e muito consistente.
Como estou usando o serviço web, não entrarei em detalhes sobre a execução do controlador e dos serviços raiz. ZeroTier tem uma referência completa de como fazer isso em sua documentação, e é muito boa.
Depois de criar minha própria rede virtual na interface do usuário web, a instalação do cliente é quase trivial. ZeroTier possui pacotes para APT, RPM, FreeBSD e muitas outras plataformas, portanto, colocar o primeiro nó online exige pouco esforço.
Depois de instalado, o cliente se conecta ao serviço do controlador e gera um ID exclusivo para o nó. No Linux, você usa o comando zerotier-cli
para ingressar em uma rede, usando o comando zerotier-cli join NETWORKID
.
$ sudo zerotier-cli info
200 info 469584783a 1.x.x ONLINE
Você também pode usar zerotier-cli
para obter uma lista de nós conectados e disponíveis, alterar configurações de rede e sair das redes.
(Kevin Sonney, CC BY-SA 4.0)
Depois de ingressar em uma rede, você precisa aprovar o acesso do nó, seja por meio do console web ou fazendo uma chamada para a interface de programação de aplicativos (API). Ambos os métodos estão documentados no site ZeroTier. Depois de ter dois nós conectados, conectar-se um ao outro — não importa onde você esteja ou de que lado de qualquer firewall esteja — é exatamente o que você esperaria se estivesse no mesmo prédio e na mesma rede. Um dos meus principais casos de uso é o acesso remoto à configuração do Home Assistant sem a necessidade de abrir portas de firewall ou expô-lo à Internet (mais sobre a configuração do Home Assistant e serviços relacionados posteriormente).
Uma coisa que eu mesmo configurei foi um serviço Beta ZeroNDS para DNS interno. Isso me poupou muita complexidade para gerenciar meu próprio serviço de nomes ou ter que criar registros públicos para todos os meus hosts privados e endereços IP. Achei as instruções muito diretas e consegui ter um servidor DNS para minha rede privada em cerca de 5 minutos. Cada cliente deve permitir que Zerotier configure o DNS, o que é muito simples nos clientes GUI. Para habilitá-lo para uso em clientes Linux, use:
$ sudo zerotier-cli setNETWORKID allowDNS=1
Nenhuma outra atualização é necessária à medida que você adiciona e remove hosts, e isso "simplesmente funciona".
$ sudo zerotier-cli info
200 info 469584845a 1.x.y ONLINE
$ sudo zerotier-cli join
93afae596398153a 200 join OK
$ sudo zerotier-cli peers
200 peers
<ztaddr> <ver> <role> <lat> <link> <TX> <RX> <path>
61d294b9cb - PLANET 112 DIRECT 7946 2812 50.7.73.34/9993
62f865ae71 - PLANET 264 DIRECT 7946 2681 50.7.76.38/9993
778cde7190 - PLANET 61 DIRECT 2944 2901 103.195.13.66/9993
93afae5963 1.x LEAF 77 DIRECT 2945 2886 35.188.31.177/41848
992fcf1db7 - PLANET RECT 79124 DI47 2813 195. 181.173.159/9993
Eu mal arranhei a superfície dos recursos aqui. ZeroTier também permite a ponte entre redes ZeroTier, regras de roteamento avançadas e muito mais. Eles ainda têm um provedor Terraform e uma lista de Awesome Zerotier Things. Atualmente, estou usando o ZeroTier para conectar máquinas em quatro locais físicos, três dos quais estão protegidos por firewalls NAT. Zerotier é simples de configurar e quase totalmente fácil de gerenciar.