Tutoriel Linux

WireGuard no Linux: verificar o túnel, as rotas e o DNS

Débutant5 min de lecture

Um cliente WireGuard pode exibir uma interface wg0 ativa enquanto seus pacotes continuam saindo pela conexão habitual. Isso ocorre frequentemente após a importação de um arquivo de configuração em uma máquina Debian ou Ubuntu.

Antes de modificar o cliente, verifique a interface, a troca com o par e a rota realmente escolhida. Essa verificação indica se o túnel transporta todo o tráfego ou apenas uma rede interna.

Servidor Linux conectado por um túnel criptografado WireGuard a uma rede remota
O túnel deve trocar informações com o par e seguir a rota esperada.

Distinguir um túnel já ativo de um cliente a importar

Mantenha um console local ou uma segunda sessão SSH aberta se o arquivo WireGuard contiver uma rota padrão. Uma linha AllowedIPs = 0.0.0.0/0 pode direcionar o tráfego IPv4 para o túnel ao iniciar wg-quick. Com ::/0, o mesmo princípio se aplica ao IPv6.

Comece verificando se wg0 já existe. Se a interface estiver presente, não substitua seu arquivo e não reinicie wg-quick up. Vá diretamente para os comandos wg show e ip route get abaixo.

ip link show wg0
sudo wg show wg0

Se wg0 estiver ausente, verifique o nome da interface e os direitos do arquivo fornecido pelo seu administrador ou fornecedor. Nunca copie uma chave privada em um ticket, repositório Git ou captura de tela.

if sudo test -e /etc/wireguard/wg0.conf; then
  sudo cp -a /etc/wireguard/wg0.conf /etc/wireguard/wg0.conf.bak && sudo install -m 600 /caminho/client.conf /etc/wireguard/wg0.conf
else
  sudo install -m 600 /caminho/client.conf /etc/wireguard/wg0.conf
fi
sudo grep -E '^(Address|DNS|Endpoint|AllowedIPs)' /etc/wireguard/wg0.conf

O comando grep relê os parâmetros de rede sem exibir as chaves. Verifique principalmente AllowedIPs. Um intervalo como 10.44.0.0/24 normalmente visa a rede remota. Uma rota 0.0.0.0/0 exige um controle mais cauteloso se você estiver conectado ao servidor via SSH.

Se o arquivo deve substituir uma configuração existente, mantenha o antigo sob um nome fora de /etc/wireguard/ ou em seu backup administrativo. Eu escolheria testar primeiro a partir do console de uma VM ou de uma máquina, em vez de alterar a rota padrão de um servidor remoto sem acesso de emergência.

Ativar o WireGuard e ler a troca com o par

Se wg0 estava ausente, ative agora a interface com wg-quick e mantenha seu console ou sua segunda sessão aberta até o final das verificações. Um endereço atribuído a wg0 não confirma que o par remoto está respondendo.

sudo wg-quick up wg0
ip -brief address show wg0
sudo wg show wg0

Na saída de wg show wg0, observe último handshake e os contadores transfer. Um carimbo de data/hora recente após uma solicitação para a rede remota e bytes recebidos indicam que o par está respondendo. A ausência de handshake aponta mais para o endpoint, a porta UDP, o firewall ou uma chave que não corresponde ao par esperado. A documentação WireGuard Quick Start descreve os comandos wg e wg-quick usados aqui.

Para acompanhar a troca durante um teste, você pode reiniciar o seguinte comando. Isso evita modificar a configuração durante o diagnóstico.

watch -n 2 'sudo wg show wg0 latest-handshakes transfer'

Um ping pode ajudar se o servidor remoto permitir ICMP, mas a ausência de resposta não é suficiente para condenar o túnel. Prefira uma solicitação a um serviço que sua configuração deve tornar acessível, como um DNS interno ou uma aplicação de administração.

Verificar a rota escolhida antes de concluir

Use ip route get para saber qual dispositivo o Linux escolheria para enviar um pacote ao destino. O comando não envia tráfego algum.

ip route get 10.44.0.10
ip route get 1.1.1.1

Para um recurso interno, a primeira saída deve mencionar dev wg0 se 10.44.0.10 pertencer às redes declaradas em AllowedIPs. A segunda indica se a saída da Internet passa também por wg0 ou se mantém a interface habitual. Substitua esses endereços de documentação por um destino realmente previsto em sua rede.

Se o VPN fornecer um resolvedor interno, teste-o diretamente apenas se seu endereço estiver presente na documentação do seu túnel e se o Linux escolher bem wg0 para alcançá-lo. Instale dnsutils no Debian ou Ubuntu se o comando dig estiver ausente:

ip route get 10.44.0.53
sudo apt install dnsutils
dig @10.44.0.53 intranet.exemplo.lan
sudo wg show wg0 latest-handshakes transfer

O primeiro comando deve indicar dev wg0. A consulta DNS deve retornar uma resposta esperada e progredir o tráfego recebido ou enviado. Se a rota usar wg0 mas o handshake permanecer ausente, o cliente está realmente enviando para a interface local sem alcançar o par remoto.

Para parar o teste e restaurar as rotas adicionadas por wg-quick, use sudo wg-quick down wg0. Este comando não corrige uma rota configurada em outro lugar no NetworkManager ou systemd-networkd. Ele apenas remove a interface e os elementos que wg-quick instalou para este túnel.

Um túnel WireGuard válido é reconhecido por três provas: uma interface presente, um handshake recente e uma rota que aponta para wg0 para o destino esperado. Os artigos sobre ip addr, a rota IP e dig detalham esses controles separadamente quando o problema vai além do túnel.