VPNSmith
VPS Contabo
self-host-vpnINFO

Dois dispositivos, uma chave WireGuard: o que falha realmente, e porque parece aleatório

Copiar uma configuração de cliente para um telemóvel e um portátil funciona até os dois estarem ligados. A partir daí o tráfego vai para o que fez o último handshake, o servidor não os consegue distinguir, e não podes revogar um sem cortar o outro. O que o protocolo faz, e a solução em três comandos.

Por Eric Gerard · Fundador · VPNSmith - Especialista em VPN auto-hospedada e VPS RGPD4 min de leituraFoto via Pexels

Configuras o WireGuard num portátil, funciona, e copiar essa mesma configuração para um telemóvel demora dez segundos. Os dois ligam-se. Durante algum tempo nada parece errado.

Depois os dois ficam ligados ao mesmo tempo, e um deles deixa de receber tráfego. Sem erro, sem regularidade, e normalmente quando estás a tentar fazer outra coisa.

A solução é um par de chaves por dispositivo. O nosso gerador de configurações WireGuard gratuito cria um par de chaves, um endereço e uma configuração separados para cada peer no teu navegador, e se ainda tens de alugar o servidor, um Contabo Cloud VPS 4 a 5,50 €/mês (link de afiliado) vem com o seu próprio IPv4 público. Se preferires um alojamento nos EUA com garantia de reembolso de 30 dias, o Ultahost VPS Basic custa 5,52 $ por mês num compromisso de 24 meses (1 GB de RAM, IPv4 dedicado, lido a 21 de outubro de 2026), o suficiente para um servidor WireGuard para alguns dispositivos. O gerador é gratuito até 10 dispositivos; acima disso, o WireGuard Pro (produto nosso, 9 EUR uma vez, sem subscrição) sobe o limite para 250 e junta um ZIP com cada .conf de cliente e o respetivo código QR em PNG, prático para configurar um escritório ou uma família inteira de uma só vez.

O que o servidor vê

O WireGuard identifica um peer pela sua chave pública. Não pelo IP, não pelo dispositivo, não pelo nome. Dois dispositivos com a mesma chave privada são, para o servidor, um peer que não para de se mover.

Cada handshake atualiza o endpoint registado para esse peer, o endereço e a porta para onde o servidor envia as respostas. O telemóvel faz o handshake, as respostas vão para o telemóvel. O portátil faz o handshake, as respostas vão para o portátil. O que não fez o handshake mais recente continua a enviar pacotes que chegam bem, e deixa de receber o que quer que seja de volta.

É todo o mecanismo, e explica exatamente o sintoma: uma ligação que salta entre dois dispositivos a intervalos que ninguém controla, porque o intervalo de handshake não é algo que agendes.

As três consequências, pela ordem do que te vão custar

Não os consegues distinguir. O wg show lista um peer, um tempo de handshake, um contador de transferência. O tráfego do telemóvel e do portátil é somado. Se algum dia precisares de saber que dispositivo fez alguma coisa, essa informação não existe.

Não consegues revogar só um. Remover a chave do servidor remove o acesso a todos os dispositivos que a têm. Um telemóvel perdido significa cortar também o portátil, e depois voltar a emitir para os dois.

O AllowedIPs torna-se ambíguo. No servidor, o AllowedIPs é a forma como um pacote é associado a um peer. Dois dispositivos atrás de uma única entrada de peer partilham um endereço de túnel, por isso tudo o que é encaminhado para esse endereço chega ao dispositivo que tem o endpoint nesse momento.

Um serralheiro a trabalhar numa bancada numa oficina, a cortar uma chave numa máquina, com centenas de chaves virgens penduradas num painel perfurado na parede atrás dele
Um serralheiro a trabalhar numa bancada numa oficina, a cortar uma chave numa máquina, com centenas de chaves virgens penduradas num painel perfurado na parede atrás dele

A solução: uma chave e um endereço por dispositivo

No cliente, ou no servidor se estiveres a gerar para outra pessoa:

wg genkey | tee phone.key | wg pubkey > phone.pub

No servidor, acrescenta um bloco de peer por dispositivo, cada um com o seu endereço:

[Peer]
# laptop
PublicKey = <laptop.pub>
AllowedIPs = 10.10.0.2/32

[Peer]
# phone
PublicKey = <phone.pub>
AllowedIPs = 10.10.0.3/32

Acrescenta-o a quente, sem desligar ninguém:

wg set wg0 peer <phone.pub> allowed-ips 10.10.0.3/32

⛔ Depois escreve-o também no ficheiro de configuração. O wg set altera a interface em execução e nada no disco; um reboot perde-o. Essa armadilha, e o resto do ciclo de vida de um peer, estão tratados em adicionar um peer WireGuard.

Remover um dispositivo mais tarde passa a ser um único comando, que não mexe em mais nada:

wg set wg0 peer <phone.pub> remove

A linha de comentário não é decoração

Nada no protocolo transporta um nome de dispositivo, por isso uma lista de doze chaves públicas fica ilegível seis meses depois. Um comentário # phone acima de cada bloco é a única etiqueta que alguma vez vai existir, e o dia em que precisares de revogar um à pressa é o dia em que a vais querer.

Dois casos vizinhos que não são isto

Uma chave pré-compartilhada é partilhada de propósito. A PresharedKey é simétrica e tem de ser idêntica nas duas extremidades de um par de peers. Isso não é reutilização de chave entre dispositivos, e os dois confundem-se facilmente: vê o guia da chave pré-compartilhada.

Um dispositivo, vários túneis também não é problema. Um portátil pode ter chaves diferentes para servidores diferentes sem conflito, porque a identidade é por túnel e não por máquina.

Se emites configurações para dispositivos com regularidade, gerar o código QR é a parte rápida, e merece a mesma disciplina: o código QR WireGuard contém a chave privada por inteiro, por isso um código por dispositivo e nunca um partilhado.

★ Datacenter GDPR em Nuremberg · ✓ IPv4 dedicado incluído · porta de 200 Mbit/s

Aloje a sua VPN no seu próprio VPS → ContaboAcesso root completo · IPv4 público · escolha a sua região→

Perguntas frequentes

Dois dispositivos podem usar a mesma chave WireGuard?
Conseguem ligar-se, e é isso que engana as pessoas. O servidor identifica um peer pela sua chave pública, por isso dois dispositivos que partilham uma chave são, para ele, um único peer. Só o handshake mais recente fica com o endpoint, por isso o tráfego de retorno vai para um dispositivo de cada vez.
O que falha exatamente quando reutilizo uma chave?
O tráfego de retorno segue o dispositivo que fez o último handshake, por isso o outro parece perder a ligação ao acaso. O servidor não os consegue distinguir no wg show nem em nenhum registo. E revogar o acesso de um dispositivo revoga-o para os dois, porque só há uma chave para remover.
Partilhar uma chave é um problema de segurança ou só de encaminhamento?
As duas coisas, e o lado da segurança dura mais do que o incómodo. Uma chave num telemóvel que mais tarde se perde é a mesma chave ainda instalada no portátil, por isso o único remédio é revogá-la em todo o lado e voltar a emitir. Uma chave por dispositivo transforma isso numa alteração de uma linha.
Quantos peers pode ter um servidor WireGuard?
Na prática não há um limite fixo baixo; a lista de peers fica em memória e milhares são viáveis em hardware comum. Acrescentar um peer por dispositivo não custa nada, o que elimina o último argumento a favor de partilhar um.
Dois peers podem partilhar o mesmo endereço AllowedIPs?
Não. No servidor, o AllowedIPs é a forma como decide a que peer pertence um pacote, por isso dois peers a reclamar 10.10.0.2/32 criam uma ambiguidade que o kernel resolve usando um deles. Cada dispositivo precisa do seu próprio endereço de túnel.