Como usar um ficheiro de configuração WireGuard
Nesta página
Uma ligação WireGuard é um ficheiro de texto. É mesmo só isso: meia dúzia de linhas com as suas chaves, o endereço do servidor e as regras sobre o que passa pelo túnel. Depois de ter esse ficheiro, ligar-se a um servidor VPN WireGuard resume-se a entregá-lo à app WireGuard do dispositivo que estiver a usar.
Este guia faz duas coisas. Primeiro, lê um ficheiro de configuração real linha a linha, para que saiba o que faz cada definição e qual alterar quando algo corre mal. Depois, explica como importar esse ficheiro e ligar-se no Windows, Android, iPhone, macOS, Linux e num router, terminando com o punhado de problemas que explicam quase todas as queixas sobre o WireGuard: o handshake que nunca se completa e o túnel que liga mas não carrega nenhuma página.
O que há dentro de um ficheiro .conf, linha a linha
Todas as configurações WireGuard têm a mesma estrutura em duas partes. [Interface] descreve o seu lado do túnel; [Peer] descreve a máquina a que se está a ligar. Eis uma configuração de cliente completa, com os segredos substituídos por marcadores:
[Interface] PrivateKey = YOUR_PRIVATE_KEY_KEEP_THIS_SECRET Address = 10.7.0.4/32 DNS = 10.7.0.1 [Peer] PublicKey = THE_SERVER_PUBLIC_KEY_FROM_YOUR_PROVIDER Endpoint = 198.51.100.10:51820 AllowedIPs = 0.0.0.0/0, ::/0 PersistentKeepalive = 25
198.51.100.10 é um endereço de documentação reservado pelo RFC 5737: nada disto se liga a lado nenhum. Use os valores do seu próprio ficheiro.O bloco [Interface]: o seu lado
- PrivateKey: esta é a sua identidade na VPN. Quem a tiver pode fazer-se passar por si. São 44 caracteres base64 terminados em
=; se a sua tiver outro comprimento, o ficheiro ficou truncado algures ao ser copiado. - Address: o IP que o seu dispositivo tem dentro do túnel, não o seu IP público. O
/32significa "apenas este endereço", o que é normal num cliente. - DNS: o resolvedor usado enquanto o túnel está ativo. Sem ele, o dispositivo continua a perguntar ao resolvedor antigo, o que revela o que está a pesquisar e muitas vezes impede a resolução de qualquer nome do outro lado.
- MTU: opcional, e a linha mais útil de conhecer. Falta na maioria dos ficheiros porque o valor predefinido é o correto; consulte a secção de resolução de problemas para o caso em que não é.
O bloco [Peer]: o lado do servidor
- PublicKey: a chave pública do servidor. A sua nunca aparece no seu próprio ficheiro; quem a guarda é o servidor.
- Endpoint: para onde enviar os pacotes, no formato
host:port. O WireGuard funciona apenas por UDP, e51820é a porta habitual, não uma porta obrigatória. - AllowedIPs: que destinos passam pelo túnel.
0.0.0.0/0, ::/0significa tudo, que é precisamente para o que serve uma VPN de privacidade. Uma lista mais restrita (por exemplo, só a rede interna da sua empresa) envia apenas isso pelo túnel e deixa o resto na ligação normal. Chama-se a isto split tunnel (túnel dividido), e é uma escolha deliberada, não um túnel completo avariado. - PersistentKeepalive: envia um pequeno pacote a cada 25 segundos para que o dispositivo NAT entre si e o servidor mantenha aberto o caminho de regresso. É necessário sempre que estiver atrás de NAT, e num telemóvel ou numa ligação doméstica está sempre.
Address e DNS não são, de todo, definições do WireGuard: são instruções para o assistente wg-quick, que configura a sua interface de rede. O próprio WireGuard nunca as vê. Pode comprová-lo: wg-quick strip wg0 mostra a configuração que o kernel realmente recebe, e essas duas linhas simplesmente desaparecem. Isto importa se alguma vez configurar um túnel com wg setconf em vez de wg-quick, porque nesse caso nada atribui o seu endereço nem o seu resolvedor e o túnel sobe ligado a coisa nenhuma.Precisa de um ficheiro de configuração para importar? Um serviço HytHost VPN entrega-lhe uma configuração WireGuard pronta a usar desde €0.99/mês.
Ver planos VPNWindows: importar o túnel
O Windows tem uma app WireGuard oficial, e importar um ficheiro para ela é todo o trabalho.
- Instale o WireGuard a partir de wireguard.com/install.
- Clique em Adicionar túnel no canto inferior esquerdo, o que abre um seletor de ficheiros filtrado por Ficheiros de configuração (*.zip, *.conf). Escolha o seu
.confe ele aparece na lista de túneis, com o nome do ficheiro. - Ou cole-o. A seta ao lado de Adicionar túnel oferece Adicionar túnel vazio…, que lhe dá uma caixa de texto: útil quando a configuração chegou numa mensagem e não como ficheiro. Vem preenchida com uma chave privada nova, por isso apague essa linha e cole a sua configuração por cima.
- Clique em Activar. O estado passa a Activo e o painel começa a contar os bytes transferidos. Esse contador é a verificação mais rápida que tem: se mostrar dados a sair e nada a voltar, o seu handshake não se está a completar.
Android e iPhone: ler o código QR ou importar o ficheiro
Num telemóvel há duas formas de o fazer, e o código QR existe precisamente porque escrever uma chave de 44 caracteres num ecrã tátil é um martírio.
Android
- Instale o WireGuard a partir da Play Store e toque no botão +.
- O ecrã Criar túnel WireGuard oferece Digitalizar a partir de código QR, Importar de ficheiro ou arquivo e a criação de um túnel de raiz. Escolha a opção que corresponde ao que recebeu.
- Dê um nome ao túnel, se lhe for pedido, e ative o respetivo interruptor. O Android pede uma vez autorização para adicionar uma configuração VPN: esse aviso é do sistema operativo, não da app.
iPhone e iPad
- Instale o WireGuard a partir da App Store e toque em Add a tunnel.
- Em Add a new WireGuard tunnel, escolha Create from QR code ou Create from file or archive. O ecrã do leitor chama-se Scan QR code; depois de uma leitura bem-sucedida, pede-lhe que dê um nome ao túnel.
- Ative-o e autorize a configuração VPN quando o iOS pedir.
Criar um código QR a partir de um ficheiro de configuração que já tem
O código QR não é algo que o fornecedor tenha obrigatoriamente de lhe dar: é apenas o seu ficheiro de configuração desenhado como imagem, e pode gerá-lo com um único comando. A própria app WireGuard sugere isto:
# prints the code straight into the terminal, ready to scan off the screen qrencode -t ansiutf8 < wg0.conf # or write it to an image file qrencode -o wg0.png < wg0.conf
No Debian ou Ubuntu, o qrencode instala-se com apt install qrencode; no macOS, com brew install qrencode.
macOS e Linux
macOS
Instale o WireGuard a partir da Mac App Store. A app para Mac não é a app do iPhone num ecrã maior: fica na barra de menus, e a sua janela abre-se a partir de Manage Tunnels. Clique em Import tunnel(s) from file (a barra de menus tem a mesma opção como Import Tunnel(s) from File…), escolha o seu .conf, selecione o túnel e clique em Activate. O Mac não tem leitor de QR (os códigos QR são para telemóveis), por isso use o próprio ficheiro, ou escolha Add Empty Tunnel… e cole a configuração.
Se preferir trabalhar num terminal, brew install wireguard-tools dá-lhe os mesmos comandos wg-quick do Linux, descritos a seguir.
Linux
- Instale as ferramentas. No Debian ou Ubuntu:
sudo apt install wireguard. A maioria das distribuições tem um pacote com o mesmo nome. - Coloque o ficheiro onde o wg-quick o procura. É o passo em que as pessoas se enganam, porque o nome do ficheiro passa a ser o nome da interface:
sudo install -m 600 -o root -g root wg0.conf /etc/wireguard/wg0.conf
O600é importante: o ficheiro contém a sua chave privada e não deve poder ser lido por outros utilizadores da máquina. Use um nome curto e simples; tem de ser um nome de interface de rede válido. - Ative-o:
sudo wg-quick up wg0 sudo wg show
wg showé o comando que vale a pena decorar. Mostra o peer, o endpoint, uma linha latest handshake e os contadores de transferência. Uma hora de handshake que nunca aparece é a assinatura do problema descrito na secção seguinte. - Arranque automático:
sudo systemctl enable --now wg-quick@wg0. Para parar o túnel manualmente,sudo wg-quick down wg0.
wg-quick: `/etc/wireguard/wg0.conf' does not exist significa que o nome indicado não corresponde a nenhum ficheiro dessa pasta: pediu wg0 e o ficheiro chama-se outra coisa. E se o túnel se recusar a subir queixando-se do resolvconf, a culpa é da linha DNS: o wg-quick precisa do resolvconf ou do systemd-resolved para a aplicar. Instale um deles, ou remova a linha DNS e configure o resolvedor manualmente.No router, para cobrir a casa toda
Pôr o túnel no router cobre todos os dispositivos que estão atrás dele, incluindo os que não conseguem de todo correr uma app de VPN: uma consola de jogos, uma televisão, uma coluna inteligente. Poder fazê-lo ou não depende inteiramente do firmware.
| Firmware | Suporte a WireGuard | Onde procurar |
|---|---|---|
| OpenWrt | Sim, com um pacote | Instale luci-proto-wireguard, adicione uma interface com o protocolo WireGuard VPN e preencha os campos com os dados do seu ficheiro |
| Asus (firmware de origem recente) | Sim, em muitos modelos | A secção VPN tem um cliente WireGuard que importa diretamente um .conf |
| Asuswrt-Merlin | Sim | A mesma ideia, com mais controlo sobre o encaminhamento |
| Mikrotik RouterOS 7 | Sim | O WireGuard vem integrado; o RouterOS 6 não o tem de todo |
| Router típico do operador | Normalmente não | Sem WireGuard e sem forma de o adicionar: veja abaixo |
Se o seu router é a caixa que o operador de internet lhe entregou, as opções realistas são colocar atrás dele um router que controle, ou continuar a usar configurações por dispositivo. Nenhuma das duas é um fracasso; a configuração por dispositivo é muitas vezes até melhor, porque pode deixar o túnel desligado nos dispositivos que não precisam dele.
Uma coisa a decidir antes de encaminhar a casa toda por um túnel: a partir daí passa tudo por ele. Sites de bancos que desconfiam de endereços estrangeiros, serviços de streaming que verificam a sua região e tudo o que comunique com dispositivos da sua própria rede podem comportar-se de forma diferente. É aqui que um AllowedIPs mais restrito mostra o seu valor: envie apenas o que precisa de ir e deixe o resto como está.
Liga mas não carrega nada, e outros problemas reais
O WireGuard é invulgarmente silencioso quando falha, e isso é uma opção de design deliberada: um pacote não autenticado não recebe qualquer resposta, pelo que um scanner não consegue perceber se há algo à escuta. O efeito secundário é que uma chave errada, uma porta errada e uma rede bloqueada parecem idênticas do seu lado: silêncio. Parta do sintoma.
| O que vê | O que costuma ser | Onde procurar |
|---|---|---|
| Nunca há handshake; os bytes enviados sobem e os recebidos ficam a zero | Nada responde, ou a resposta não consegue voltar | Endpoint, a PublicKey do servidor, UDP bloqueado |
| Handshake correto, coisas pequenas funcionam, as páginas web ficam a meio | MTU | Adicione uma linha MTU a [Interface] |
| Ligado, mas nada é resolvido | DNS | A linha DNS, e o resolvconf no Linux |
| Ligado, resolve nomes, mas nenhum tráfego passa pelo túnel | AllowedIPs demasiado restrito | AllowedIPs em [Peer] |
| Funciona e deixa de funcionar ao fim de um ou dois minutos sem atividade | O mapeamento NAT expirou | PersistentKeepalive = 25 |
"Handshake did not complete"
O seu dispositivo enviou um pacote de iniciação e não recebeu nada de volta. Verifique, por esta ordem:
- O endpoint. Host certo, porta certa, e a porta tem de ser UDP. Um erro de escrita aqui produz exatamente este sintoma e mais nenhum.
- Se o UDP chega de todo ao exterior. Redes wi-fi de convidados, redes de hotéis, algumas redes empresariais e alguns operadores móveis só permitem TCP nas portas comuns. Se a mesma configuração funciona na sua ligação de casa e falha numa rede específica, a configuração está boa e o problema é a rede.
- Se as chaves estão no sítio certo. A
PublicKeyem[Peer]é a chave pública do servidor, e o servidor tem de ter, por seu lado, a chave pública que corresponde à suaPrivateKey. Uma configuração copiada de outro dispositivo falha aqui. - O seu relógio. O handshake do WireGuard inclui uma marca temporal e rejeita as que estejam muito desfasadas. É raro, mas acontece em dispositivos que perderam a hora.
Se o túnel funciona em casa mas nunca a partir de dados móveis, a causa pode estar do lado do seu operador e não do seu: o CGNAT e soluções semelhantes alteram o que consegue chegar até si. O guia de reencaminhamento de portas explica como identificar isso a partir do seu próprio router em poucos minutos.
O problema do MTU, que vale a pena perceber de uma vez
Este é o caso clássico de "ligado, mas a internet não funciona", e o padrão é inconfundível: o ping funciona, o DNS funciona, as páginas pequenas carregam e tudo o que seja mais pesado fica pendurado para sempre.
A causa é o tamanho. Encapsular o tráfego para o túnel acrescenta cabeçalhos, pelo que um pacote que cabia à justa na ligação normal deixa de caber quando está dentro do WireGuard. Os pacotes pequenos passam sem problemas; os grandes são descartados. Normalmente a rede avisa o emissor para usar pacotes mais pequenos, mas a mensagem que o faz é muitas vezes filtrada, por isso, em vez de um erro, fica simplesmente à espera.
A solução é dizer ao WireGuard para usar pacotes mais pequenos logo de início. O wg-quick já tenta: pega no MTU da sua rota normal e subtrai 80 bytes para a sobrecarga do túnel, pelo que numa ligação comum de 1500 bytes obtém 1420. Quando isso ainda é demasiado (algumas redes móveis, a maioria das ligações que já correm dentro de outro túnel), defina-o explicitamente e vá descendo:
[Interface] MTU = 1420 # what wg-quick would have picked # still stalling? try 1380, then 1280
1280 é o mínimo que vale a pena experimentar, porque é o tamanho de pacote mais pequeno que o IPv6 exige que tudo transporte, pelo que sobrevive praticamente a qualquer caminho. Custa um pouco de eficiência e é muito melhor do que um túnel que bloqueia.
O túnel está ativo mas nada passa por ele
Verifique primeiro o AllowedIPs. Não é uma firewall nem uma lista de permissões: decide que destinos são encaminhados para o túnel. Se não incluir 0.0.0.0/0, o tráfego para o resto da internet nunca foi feito para passar por lá, e a sua ligação está a comportar-se exatamente como foi configurada. No Linux, ip route show table all | grep wg0 mostra o que foi realmente encaminhado.
Se o encaminhamento está correto e os nomes simplesmente não são resolvidos, é a linha DNS: ou falta, ou existe mas não é aplicada porque o resolvconf não está instalado.
De onde vem o ficheiro de configuração
Tudo o que está acima pressupõe que tem um ficheiro. Há exatamente duas formas de o obter.
Gerir o servidor por conta própria
Gera um par de chaves, instala o WireGuard numa máquina com endereço público, adiciona o seu dispositivo como peer e escreve à mão a configuração do cliente. Não é difícil e é mesmo algo que vale a pena aprender. O custo é contínuo: um servidor para pagar e manter atualizado, e uma edição manual nos dois lados sempre que adiciona um dispositivo, porque, lembre-se, um peer é um dispositivo.
Obtê-lo de um fornecedor
A alternativa é o ficheiro ser gerado por si e só ter de o transferir. Com a HytHost VPN, desde €0.99/mês, está aqui:
- Encomende o serviço e inicie sessão na área de cliente, depois abra o seu serviço VPN na lista.
- Procure a secção WireGuard Configuration. Tem dois botões: Copy to Clipboard, que copia o texto da configuração para a área de transferência, e Download Configuration, que lhe entrega o ficheiro já pronto.
- Se o copiou, cole-o num editor de texto simples e guarde-o com a extensão
.conf;wg0.confé um bom nome. Confirme que o editor não acrescentou.txtno fim. - Importe-o seguindo a secção acima correspondente ao seu dispositivo. Num telemóvel, transforme-o primeiro num código QR com o
qrencode.
A mesma página mostra se o túnel está neste momento ligado ao servidor, o que responde à pergunta "o problema é meu ou deles?" antes de começar a mexer em definições. Não há botão de código QR: gere-o a partir do ficheiro, o que também significa que o código nunca viaja para onde não precisava de ir.
Precisa de um ficheiro de configuração para importar? Um serviço HytHost VPN entrega-lhe uma configuração WireGuard pronta a usar desde €0.99/mês.
Ver planos VPNPerguntas frequentes
Instale a app oficial do WireGuard, importe o ficheiro de configuração que o seu servidor ou fornecedor lhe deu e ative o túnel. No Windows, isso é Adicionar túnel seguido de Activar; no Android e no iPhone pode ler o ficheiro como código QR em vez de o importar; no Linux, coloque o ficheiro em /etc/wireguard/ e execute wg-quick up com o respetivo nome. Uma hora de handshake e dados recebidos na app confirmam que a ligação está ativa.
Um ficheiro de texto simples, normalmente terminado em .conf, com dois blocos. [Interface] descreve o seu dispositivo: a chave privada, o endereço que assume dentro do túnel e o resolvedor a usar. [Peer] descreve o servidor: a chave pública, o host e a porta UDP, e que destinos devem ser encaminhados pelo túnel. Esse ficheiro é a ligação inteira: não fica mais nada guardado em lado nenhum do seu dispositivo.
Não de forma fiável, e vale a pena saber porquê. Uma configuração é um peer, identificado por um par de chaves, e o servidor regista uma única localização atual para cada peer. Se ligar um telemóvel e um portátil com o mesmo ficheiro, o servidor envia o tráfego de regresso para o que fez o handshake mais recente, e as duas ligações caem e voltam sem parar. Cada dispositivo precisa da sua própria configuração com o seu próprio par de chaves.
Gera-o a partir do ficheiro de configuração que já tem: um código QR do WireGuard é simplesmente esse ficheiro codificado como imagem. Execute qrencode -t ansiutf8 < wg0.conf para o mostrar num terminal e lê-lo a partir do ecrã, ou qrencode -o wg0.png < wg0.conf para o guardar como imagem. Como o código contém a chave privada, deve ser tratado como o próprio ficheiro: nunca publicado em lado nenhum.
Não. A chave privada é o que identifica o seu dispositivo na VPN, por isso quem tiver o ficheiro pode ligar-se como se fosse você. Nunca deve ser publicada num chat, num fórum, num gestor de incidências ou num pedido de suporte, e o mesmo se aplica a um código QR ou a uma captura de ecrã do ficheiro. Se uma configuração tiver sido exposta, a solução é gerar um novo par de chaves e substituir o peer, e não esperar que ninguém a tenha lido.
Essa mensagem significa que o pacote de iniciação saiu e nada voltou, e o WireGuard não lhe consegue dizer porquê, porque nunca recebeu resposta. Verifique o host e a porta do Endpoint, confirme que a rede onde está permite UDP de saída e confirme que a PublicKey em [Peer] é a chave do servidor, enquanto o servidor tem a chave pública correspondente à sua chave privada. Se o mesmo ficheiro funciona noutra rede, o ficheiro está correto e é a rede que está a filtrar o UDP.
Este padrão (handshake correto, ping correto, páginas web que ficam paradas) é quase sempre o MTU. Quando o tráfego é encapsulado para o túnel, cada pacote cresce, pelo que os pacotes que antes cabiam são descartados, e a mensagem que normalmente o assinalaria é muitas vezes filtrada. Adicione uma linha MTU a [Interface]: 1420 é o que o wg-quick calcularia numa ligação comum, e 1380 ou 1280 funcionam quando isso ainda é demasiado.
Não para usar um ficheiro de configuração. O cliente faz uma ligação UDP de saída para o servidor, e a resposta volta pelo mapeamento que essa ligação cria, que é o que o PersistentKeepalive mantém aberto. Só é preciso abrir uma porta do lado que corre o servidor WireGuard e tem de aceitar ligações de entrada.
Num fornecedor que a gere por si. Um serviço HytHost VPN, desde €0.99/mês, mostra na área de cliente uma secção WireGuard Configuration com um botão para copiar o texto da configuração e outro para transferir o ficheiro já pronto. A partir daí, importa-se na app WireGuard em qualquer dispositivo, e a mesma página indica se o túnel está neste momento ligado.
Um ficheiro de configuração que fica consigo
A HytHost VPN dá-lhe uma configuração WireGuard que transfere uma vez e importa em qualquer dispositivo: Windows, Android, iPhone, macOS, Linux ou o seu router. Desde €0.99/mês.
Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hoursEste guia foi útil?