ZeroTier: acesso remoto por SSH a qualquer dispositivo, mesmo no 5G

Guia completo para instalar, configurar e usar o ZeroTier para criar uma rede privada virtual entre seus dispositivos e acessá-los por SSH de qualquer lugar — mesmo atrás do CGNAT da operadora.

Você já tentou acessar o seu desktop de casa pelo notebook na faculdade, ou pelo celular no 5G da operadora, e esbarrou na frustração de não ter um IP fixo, de estar atrás de NAT, ou de o roteador simplesmente não deixar uma porta aberta para o mundo? Esse é o problema clássico de quem quer acessar a própria infraestrutura remotamente sem expor nada para a internet pública.

O ZeroTier resolve isso de um jeito elegante: ele cria uma rede local virtual que junta todos os seus dispositivos como se estivessem no mesmo cabo de rede, não importa onde eles estejam no mundo. A partir daí, acessar qualquer máquina por SSH vira tão simples quanto acessar um vizinho na sua LAN.

Neste artigo eu mostro tudo: o que é o ZeroTier, como ele funciona por baixo dos panos, como instalar e configurar em Linux, Windows, macOS, Android e iOS, e como usar isso para acessar seus dispositivos por SSH de qualquer lugar. No final, há um link para um segundo artigo sobre como usar o Syncthing para sincronizar arquivos entre esses mesmos dispositivos.

Meus dois objetivos com o ZeroTier:

  1. Acessar por SSH o desktop, o notebook e outros aparelhos mesmo fora da rede local (faculdade, 5G da operadora, Wi-Fi de terceiros).
  2. Servir de “rede base” estável para o Syncthing sincronizar arquivos entre todos os dispositivos.

O que é o ZeroTier

O ZeroTier é um software de rede definida por software (SD-WAN) que cria uma rede ethernet virtual sobre a internet. Na prática, cada dispositivo que entra na sua rede ZeroTier ganha um IP virtual fixo (por exemplo, 10.147.20.10) e passa a enxergar todos os outros membros como se estivessem na mesma rede local — mesmo que um esteja no Rio, outro em São Paulo e um terceiro no 5G de uma operadora qualquer.

As características que fazem ele brilhar:

  • Ponto a ponto (P2P): sempre que possível, os dispositivos conversam diretamente entre si, sem passar por um servidor central. Isso significa baixa latência e boa velocidade.
  • Atravessa NAT e CGNAT: usa UDP hole punching para furar o NAT da sua casa e até o CGNAT das operadoras móveis — exatamente o que torna o acesso pelo 5G possível sem precisar de IP público.
  • Criptografia ponta a ponta: todo o tráfego é cifrado (Curve25519 para troca de chaves, Salsa20/Poly1305 para os dados). Nem o ZeroTier consegue ler o que trafega.
  • IPs estáveis: o IP virtual de cada aparelho não muda, então você configura o SSH uma vez e nunca mais mexe.
  • Multiplataforma: Linux, Windows, macOS, Android, iOS, BSDs, NAS, roteadores.
  • Gratuito para uso pessoal: o plano grátis suporta até 25 dispositivos numa conta, mais que suficiente para um homelab.

Pense nele como uma VPN mesh: não é uma VPN “tudo passa por um servidor” (full-tunnel), e sim uma malha de pares que se enxergam diretamente.


Como o ZeroTier funciona por baixo dos panos

Vale entender três peças, porque elas aparecem na configuração:

Node ID (identidade do dispositivo)

Cada dispositivo que roda o ZeroTier gera uma identidade criptográfica com um endereço de 10 dígitos hexadecimais (ex.: a1b2c3d4e5). É o “RG” daquele aparelho na rede. Você vê o seu com zerotier-cli info.

Network ID (identidade da rede)

Você cria uma rede e ela ganha um Network ID de 16 dígitos hexadecimais (ex.: 8056c2e21c000001). É esse número que você informa em cada dispositivo para ele pedir entrada na rede.

Controller (o “porteiro” da rede)

A rede precisa de um controller, que decide quem entra, quais IPs cada um recebe e quais regras valem. Há duas opções:

  • ZeroTier Central (my.zerotier.com) — o controller hospedado pela própria ZeroTier, gratuito até 25 nós. É o caminho mais simples e o que vou usar neste guia.
  • Controller próprio (auto-hospedado) — você roda o seu, com interfaces como ztncui ou ZeroUI. Mais privado, porém mais trabalhoso. Falo disso na seção de privacidade.

Planets e Moons (os roteadores raiz)

Quando dois pares ainda não se acharam diretamente, eles se encontram através de servidores raiz globais chamados planets. Se a conexão direta P2P não rolar (rede muito restritiva), o tráfego cai para um modo relay — funciona, mas com mais latência. Você pode hospedar seus próprios relays, chamados moons, para ter privacidade e desempenho melhores (também na seção de privacidade).


Planejamento: meus dispositivos

Antes de pôr a mão na massa, defina quais aparelhos vão entrar na rede. No meu caso:

DispositivoSistemaPapel principal
DesktopArch LinuxMáquina principal, acessada por SSH e hub do Syncthing
NotebookLinuxAcesso remoto + nó de sincronização
CelularAndroidNó de sincronização (e SSH opcional)
TabletAndroidNó de sincronização

A ideia: todos entram na mesma rede ZeroTier e ganham um IP virtual fixo. A partir daí, qualquer um acessa qualquer outro por SSH, e o Syncthing usa esses IPs para sincronizar de forma confiável.


Passo 1 — Criar a conta e a rede no ZeroTier Central

  1. Acesse my.zerotier.com e crie uma conta (ou entre com Google/GitHub).

  2. Clique em Create A Network. Uma rede nova aparece com um Network ID de 16 dígitos. Anote esse número — você vai usá-lo em todos os dispositivos.

  3. Abra a rede e configure o essencial:

    • Name / Description: dê um nome (ex.: homelab) para se localizar.
    • Access Control: mantenha PRIVATE (padrão). Numa rede privada, todo novo dispositivo precisa ser autorizado manualmente por você — ninguém entra só com o Network ID. Nunca use PUBLIC para uso pessoal.
    • IPv4 Auto-Assign: ative e escolha uma faixa. Sugiro Easy com uma sub-rede que você reconheça de cara, como 10.147.20.0/24. Evite faixas que colidam com a sua LAN doméstica (se sua casa é 192.168.0.0/24, não use a mesma).

Pronto — a rede existe. Agora é instalar o cliente em cada aparelho e pedir entrada.


Passo 2 — Instalar e entrar com o desktop (Arch Linux)

No Arch, o pacote está nos repositórios oficiais:

sudo pacman -S zerotier-one

Habilite e inicie o serviço:

sudo systemctl enable --now zerotier-one

Confira se o serviço subiu e qual é a identidade do dispositivo:

sudo zerotier-cli info
# 200 info a1b2c3d4e5 1.14.0 ONLINE

Agora entre na rede usando o Network ID que você anotou:

sudo zerotier-cli join 8056c2e21c000001
# 200 join OK

Nesse momento o dispositivo aparece como não autorizado no painel. Vá ao Passo 5 para liberá-lo. Comandos úteis do cliente:

sudo zerotier-cli listnetworks   # redes em que estou e o IP que recebi
sudo zerotier-cli peers          # pares e se a conexão é DIRECT ou RELAY
sudo zerotier-cli leave <NETID>  # sair de uma rede

Outras distros Linux: o instalador universal funciona em qualquer lugar:

curl -s https://install.zerotier.com | sudo bash

Depois é o mesmo systemctl enable --now zerotier-one e zerotier-cli join.


Passo 3 — Instalar no notebook, Windows e macOS

  • Notebook (Linux): repita o Passo 2 (pacman no Arch, ou o instalador universal).
  • Windows: baixe o instalador em zerotier.com/download, instale, clique no ícone da bandeja → Join New Network → cole o Network ID.
  • macOS: mesmo download; após instalar, use o ícone na barra de menus → Join Network.

Em todos, o aparelho aparecerá pendente de autorização no painel.


Passo 4 — Instalar no celular e no tablet (Android/iOS)

  1. Instale o app ZeroTier One (Play Store ou App Store).
  2. Abra, toque no +, cole o Network ID e confirme.
  3. Conceda a permissão de VPN que o Android/iOS solicita — o ZeroTier cria uma interface de rede virtual usando a API de VPN do sistema. Isso não roteia toda a sua internet por um servidor; só cuida do tráfego da rede ZeroTier.
  4. Deixe o toggle da rede ligado.

O celular e o tablet também aparecerão pendentes de autorização.


Passo 5 — Autorizar, nomear e fixar IPs dos membros

Volte ao ZeroTier Central, abra a rede e role até Members. Cada dispositivo que deu join aparece ali pelo seu Node ID.

Para cada um:

  1. Marque a caixa “Auth” (autorizado). Só depois disso o dispositivo recebe um IP e entra de fato na rede.

  2. Dê um nome amigável em “Name” (ex.: desktop, notebook, celular, tablet) — ajuda muito a se localizar.

  3. (Opcional, mas recomendado) Fixe o IP: clique no IP gerenciado e defina um valor fácil de lembrar dentro da faixa. Sugestão:

    DispositivoIP ZeroTier
    desktop10.147.20.10
    notebook10.147.20.11
    celular10.147.20.12
    tablet10.147.20.13

IP fixo é o que torna a configuração de SSH e Syncthing “configura uma vez e esquece”.


Passo 6 — Testar a conectividade

De volta ao desktop, confira o IP que ele recebeu:

sudo zerotier-cli listnetworks
# ... 10.147.20.10/24

Faça um ping do desktop para o notebook (use o IP ZeroTier do notebook):

ping 10.147.20.11

E veja como estão os pares — você quer ver DIRECT (conexão ponta a ponto, ótimo); RELAY significa que está passando por um servidor raiz (funciona, mas é o plano B):

sudo zerotier-cli peers

Se tudo responde, a rede virtual está no ar. Agora é só usar.


Usando SSH sobre o ZeroTier

Esse é o objetivo principal. Com os IPs virtuais estáveis, acessar uma máquina de qualquer lugar — inclusive no 5G — é idêntico a acessá-la na LAN.

No dispositivo de destino (ex.: o desktop)

Garanta que o servidor SSH está instalado e rodando:

# Arch / a maioria das distros
sudo pacman -S openssh
sudo systemctl enable --now sshd

Por padrão o sshd escuta em todas as interfaces (0.0.0.0), então ele já aceita conexões pela interface ZeroTier (zt...). Não precisa abrir nenhuma porta no roteador — esse é o ponto.

Do dispositivo de origem (notebook no 5G, por exemplo)

ssh [email protected]

Funciona estando você em casa, na faculdade ou no 5G da operadora. O ZeroTier cuida de furar o NAT/CGNAT por baixo.

Apelidos no ~/.ssh/config

Decorar IPs é chato. Crie apelidos no ~/.ssh/config:

Host desktop
    HostName 10.147.20.10
    User valmor

Host notebook
    HostName 10.147.20.11
    User valmor

Agora basta ssh desktop ou ssh notebook de qualquer lugar.

Endurecendo o SSH (recomendado)

Como o desktop fica acessível de qualquer rede onde você esteja, vale reforçar a autenticação. Use chaves e desative senha:

# Na origem: gere o par de chaves (se ainda não tiver)
ssh-keygen -t ed25519 -C "valmor@notebook"

# Copie a chave pública para o destino
ssh-copy-id [email protected]

No destino, edite /etc/ssh/sshd_config (ou um arquivo em /etc/ssh/sshd_config.d/) e ajuste:

PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no

Recarregue: sudo systemctl reload sshd. Como a porta SSH não está exposta à internet pública (só vive dentro da rede ZeroTier criptografada), o risco de varredura e força bruta despenca.

E o SSH para o celular/tablet?

O celular e o tablet costumam ser alvos de sincronização, não de SSH. Mas se você quiser entrar no Android por SSH, instale o Termux, rode um sshd dentro dele e conecte no IP ZeroTier do aparelho. É um caso de nicho; para a maioria, os aparelhos Android servem só ao Syncthing.


Firewall e a interface zt

Se você usa firewall no desktop/notebook, libere o tráfego na interface do ZeroTier. O nome dela costuma ser algo como ztabc1234 — você descobre com ip addr show | grep zt. O ZeroTier sempre cria interfaces com o prefixo zt, então use o coringa zt+.

nftables / iptables (libera SSH vindo só da interface ZeroTier):

sudo iptables -A INPUT -i zt+ -p tcp --dport 22 -j ACCEPT

firewalld (coloca a interface numa zona confiável):

sudo firewall-cmd --permanent --zone=trusted --add-interface=ztabc1234
sudo firewall-cmd --reload

Garanta também que o UDP 9993 de saída não esteja bloqueado — é a porta que o ZeroTier usa para conversar com os pares e com os servidores raiz. Quase sempre ela já está liberada por padrão.


Convivência com VPN sempre ativa

Se você roda uma VPN full-tunnel sempre ligada (todo o tráfego sai cifrado por ela), o ZeroTier ainda funciona — mas há detalhes:

  • O tráfego do ZeroTier (UDP 9993) vai sair por dentro do túnel da VPN. Isso é normal e funciona, desde que a VPN não bloqueie UDP de saída.
  • A descoberta P2P direta entre pares pode falhar quando os dois lados estão atrás de VPNs diferentes; nesse caso o ZeroTier cai para RELAY. Continua funcionando, só com mais latência. Hospedar um moon próprio (abaixo) ajuda nesse cenário.
  • Não desligue a VPN para o ZeroTier funcionar — não é necessário. Se notar lentidão, cheque zerotier-cli peers para ver se está em RELAY e considere o moon.

Segurança e privacidade

O ZeroTier já nasce seguro, mas dá para apertar mais:

  • Mantenha a rede PRIVATE e só autorize dispositivos que você reconhece. Reveja a lista de membros de tempos em tempos e remova o que não usa.
  • Flow Rules: o painel permite escrever regras de fluxo (uma mini-linguagem de firewall da própria rede) para, por exemplo, permitir só SSH e o tráfego do Syncthing entre os membros, bloqueando o resto.
  • Controller próprio: se você não quer depender do ZeroTier Central nem que os metadados da sua rede passem por terceiros, hospede um controller seu com ztncui ou ZeroUI. Você assume a gestão de membros e IPs, mas ganha controle total.
  • Moon (relay próprio): registre um servidor seu (um VPS, por exemplo) como moon para servir de ponto de encontro e relay. Melhora a privacidade (não depende dos planets públicos) e o desempenho quando o P2P direto não fecha — especialmente útil atrás de VPN.

Para quem leva privacidade a sério, a combinação controller próprio + moon próprio entrega uma malha privada que não depende de infraestrutura de terceiros para nada além do trânsito de pacotes cifrados.


Solução de problemas comuns

  • Dispositivo aparece OFFLINE no painel: o serviço não está rodando (sudo systemctl status zerotier-one) ou o aparelho não tem internet. No Android, confira se o toggle da rede está ligado e se a permissão de VPN foi concedida.
  • Não recebeu IP: quase sempre é falta de autorização. Marque a caixa Auth no painel.
  • Só aparece RELAY em zerotier-cli peers: a conexão direta P2P não fechou. Libere UDP 9993 de saída, evite redes muito restritivas, ou configure um moon. Mesmo em RELAY o acesso funciona.
  • ping não responde mas o IP existe: verifique o firewall (libere zt+) e confirme que ambos estão autorizados e online.
  • Conflito de faixa IP: se a faixa da rede ZeroTier for igual à da sua LAN doméstica, há colisão de rotas. Troque a faixa gerenciada no painel (ex.: use 10.147.20.0/24).

Próximo passo: sincronizar arquivos com o Syncthing

Com todos os dispositivos na mesma rede virtual e se enxergando por IP fixo, você tem a base perfeita para o segundo objetivo: manter os arquivos sincronizados entre desktop, celular, tablet e notebook automaticamente.

O Syncthing faz exatamente isso, de forma descentralizada e privada, e fica ainda mais confiável rodando sobre os IPs estáveis do ZeroTier. No próximo artigo eu mostro como instalar e configurar o Syncthing nesse cenário — com o desktop como ponto central que envia para os outros aparelhos, mas de forma bidirecional: editou um arquivo no celular, no tablet ou no notebook, ele volta para o desktop e se propaga para todos.

👉 Continue lendo: Syncthing — sincronizando arquivos entre todos os seus dispositivos


Conclusão

O ZeroTier transforma um punhado de aparelhos espalhados — desktop em casa, notebook na rua, celular no 5G — numa única rede local virtual, criptografada e estável. Sem abrir portas no roteador, sem IP fixo, sem expor nada à internet pública. A partir dela, o SSH funciona de qualquer lugar e ferramentas como o Syncthing ganham um chão sólido para operar.

Instale uma vez, autorize seus aparelhos, fixe os IPs — e tenha o seu homelab no bolso, onde você estiver.