Pular para o conteúdo
SuaVPN.com

VPN para Linux com WireGuard: wg-quick, systemd e diagnóstico

Publicado em · Atualizado em

VPN no Linux é um túnel WireGuard montado pelo próprio kernel: você instala as ferramentas de usuário da sua distribuição, copia um arquivo .conf para /etc/wireguard e sobe a interface com wg-quick. Este guia cobre a instalação por distribuição, a permissão do arquivo, o início automático com systemd, o DNS e o diagnóstico.

Preciso instalar um aplicativo de VPN no Linux?

Não. O WireGuard faz parte do kernel do Linux desde a versão 5.6, então não há driver de terceiros a instalar. O que você instala é o pacote de ferramentas de usuário, com dois comandos: wg, que lê e altera o estado da interface, e wg-quick, que monta o túnel a partir de um arquivo .conf.

A SuaVPN não tem aplicativo próprio nem extensão de navegador, em nenhum sistema. O painel gera um arquivo .conf no formato padrão do WireGuard, com um par de chaves por dispositivo, e quem executa a conexão é a ferramenta da sua distribuição. Confira o seu kernel com uname -r e o módulo com lsmod | grep wireguard.

Como instalar o WireGuard em cada distribuição?

Pelo gerenciador de pacotes da própria distribuição, sem repositório de terceiros. O nome do pacote muda: no Ubuntu e no Debian ele se chama wireguard, e nas demais famílias, wireguard-tools. Em kernels anteriores ao 5.6, o pacote wireguard-dkms compila o módulo na instalação e a cada atualização de kernel.

O comando wg-quick é um script em bash que depende do iproute2 e, quando a configuração tem linha DNS, de um comando resolvconf. Imagens mínimas de contêiner às vezes não trazem o bash, e é por isso que o pacote existe separado do módulo: o kernel já tem o protocolo, falta a camada que traduz o arquivo em interface, endereço e rotas.

Instalação das ferramentas do WireGuard por distribuição
DistribuiçãoComando de instalaçãoObservação
Ubuntu e Debiansudo apt install wireguardInstala wireguard-tools; o resolvconf costuma vir do pacote systemd-resolvconf
Fedora e RHELsudo dnf install wireguard-toolsMódulo no kernel padrão; nada mais a compilar
Arch e Manjarosudo pacman -S wireguard-toolsPara a linha DNS, instale openresolv ou systemd-resolvconf
openSUSEsudo zypper install wireguard-toolsMesma configuração das demais
Kernel anterior ao 5.6Instalar wireguard-dkmsCompila o módulo; exige cabeçalhos do kernel instalados

Do arquivo .conf ao túnel ativo com wg-quick

No painel, em Dispositivos, crie um dispositivo com o nome da máquina, escolha a localização oferecida ali — a lista ao vivo fica na página de status — e salve o arquivo .conf. Copie-o para /etc/wireguard/wg0.conf. O nome do arquivo vira o nome da interface, então use letras, números, hífen e sublinhado, com no máximo 15 caracteres, que é o limite do kernel para nome de interface de rede.

Em seguida, ajuste dono e permissão: sudo chown root:root /etc/wireguard/wg0.conf e sudo chmod 600 /etc/wireguard/wg0.conf. O arquivo contém a chave privada do dispositivo em texto puro, como uma chave SSH, e o comando wg avisa quando ele está legível por qualquer usuário da máquina. Se ele vazar, exclua o dispositivo no painel e gere outro; os demais continuam funcionando.

Suba o túnel com sudo wg-quick up wg0 e derrube com sudo wg-quick down wg0. A saída mostra cada comando ip executado pelo script, o que ajuda quando algo falha no meio. Passar o caminho do arquivo também funciona (sudo wg-quick up ./wg0.conf), útil para testar antes de mover para /etc/wireguard.

Por que o ip route continua mostrando a rota antiga?

Porque o wg-quick não substitui a rota padrão: com AllowedIPs = 0.0.0.0/0, ele usa roteamento por política. O script cria uma tabela de rotas para o túnel, marca com fwmark os pacotes que o WireGuard envia ao servidor e manda para essa tabela tudo o que não tem a marca. Sem isso, o tráfego cifrado entraria no túnel, em laço.

A consequência prática é que ip route sozinho não conta a história: o comando que mostra o quadro completo é ip rule, junto de ip route show table all. A segunda diferença é que, enquanto a interface existir, o tráfego que cai nela não volta a sair pela rota antiga; se o servidor parar de responder, os pacotes são descartados em vez de seguirem em claro.

Como iniciar a VPN no boot com systemd?

O pacote instala uma unidade template chamada wg-quick@.service, em que a parte depois da arroba é o nome da interface. Para subir o túnel agora e a cada inicialização: sudo systemctl enable --now wg-quick@wg0. Para desfazer: sudo systemctl disable --now wg-quick@wg0. Cada arquivo em /etc/wireguard vira uma instância própria, e você habilita apenas as que quiser.

Confira o estado com systemctl status wg-quick@wg0 e leia os erros com journalctl -u wg-quick@wg0. Em notebook que troca de rede o dia inteiro, essa é a diferença entre lembrar de ligar a VPN e ela simplesmente estar ligada. Em servidor sem monitor, é o que faz o túnel voltar sozinho depois de um reinício.

Por que o DNS não muda no Linux?

Porque o wg-quick aplica a linha DNS do arquivo chamando o comando externo resolvconf, que nem sempre está instalado. Sem ele, a subida termina com resolvconf: command not found. E se a linha DNS for removida para contornar o erro, o túnel sobe, mas as consultas continuam indo ao resolvedor da rede local, que vê todos os domínios visitados.

A correção é instalar o pacote certo: resolvconf ou openresolv nas distribuições clássicas, ou systemd-resolvconf em sistemas com systemd-resolved, que fornece um resolvconf que repassa a configuração ao resolved. Com o túnel ativo, confira com resolvectl status, procurando o servidor de DNS associado à interface wg0, ou leia /etc/resolv.conf. O guia sobre ocultar IP explica por que esse vazamento anula boa parte do efeito da VPN.

NetworkManager: um botão no menu de rede

Em desktops GNOME e KDE atuais, o NetworkManager fala WireGuard nativamente e dispensa o wg-quick. Importe com nmcli connection import type wireguard file wg0.conf: a conexão aparece ao lado das redes Wi-Fi e liga pelo menu, ou por nmcli connection up wg0. A importação copia a configuração, com a chave privada, para /etc/NetworkManager/system-connections, então o arquivo original pode ser guardado em outro lugar.

Escolha um método e fique com ele. Rodar wg-quick e NetworkManager sobre a mesma configuração cria duas interfaces disputando as mesmas rotas, e o sintoma é confuso: o túnel aparece como ativo e nada carrega. Se importou no NetworkManager, não habilite também a unidade do systemd.

Diagnóstico com sudo wg show

O comando sudo wg show é o primeiro a rodar quando algo não funciona. Ele lista a interface, a porta de escuta e, para o par remoto, o endpoint, os AllowedIPs, o campo latest handshake e o transfer. Handshake recente com bytes subindo nos dois sentidos significa túnel saudável; sem handshake, os seus pacotes não chegaram ao servidor ou a resposta não voltou.

A partir daí, o caminho é curto: confira a localização na página de status, teste em outra rede (o roteamento do celular serve para isolar firewall corporativo) e olhe o firewall de saída, porque o WireGuard usa UDP e algumas redes só liberam TCP nas portas 80 e 443. Se o handshake acontece mas parte dos sites não carrega, o suspeito é o MTU.

Sintomas comuns no Linux e o que verificar em cada um
SintomaCausa provávelO que fazer
resolvconf: command not foundFalta o utilitário que aplica a linha DNSInstalar resolvconf, openresolv ou systemd-resolvconf
RTNETLINK answers: Operation not supportedMódulo do kernel ausente ou não carregadosudo modprobe wireguard; em kernel antigo, instalar wireguard-dkms
Sem latest handshake em wg showUDP de saída bloqueado ou servidor indisponívelTestar em outra rede e conferir a página de status
Túnel ativo, mas sem navegaçãoOutro túnel ou regra de roteamento em conflitoDerrubar a outra VPN e inspecionar ip rule e ip route show table all
Sites grandes travam, SSH congelaMTU alto demais para o caminhoReduzir a MTU no bloco [Interface], começando em 1420, até estabilizar
Aviso de arquivo acessível por todosPermissão do .conf larga demaissudo chmod 600 no arquivo em /etc/wireguard

Servidor, Raspberry Pi e roteador: o mesmo arquivo

A mesma configuração funciona em um VPS, em um Raspberry Pi ou em um roteador com OpenWrt, o que torna o Linux o sistema mais flexível da assinatura: um aparelho na borda da rede protege tudo o que estiver atrás dele, consumindo uma única vaga de dispositivo. Os planos diferem só no número de vagas: Básico 3, Pro 5 e Família 10, com os valores na página de planos.

A SuaVPN não tem split tunneling: a configuração roteia todo o tráfego, e restringir AllowedIPs a certas redes é uma edição manual que fica sob a sua manutenção. O pagamento é no cartão, pela Stripe, com renovação automática; o cancelamento vale a qualquer momento, o acesso segue até o fim do período pago e há 7 dias de arrependimento pelo Código de Defesa do Consumidor, art. 49. Os guias de Windows e Mac cobrem as outras máquinas.

Perguntas frequentes

O WireGuard funciona em qualquer distribuição?

Em qualquer uma com kernel 5.6 ou mais novo, e nas anteriores com o módulo compilado via DKMS. As ferramentas de usuário estão nos repositórios oficiais de Ubuntu, Debian, Fedora, Arch e openSUSE.

Preciso de interface gráfica para usar VPN no Linux?

Não. O wg-quick faz tudo pelo terminal, e é por isso que os mesmos passos valem em um servidor sem monitor. O NetworkManager é opcional, para quem quer um botão no menu de rede.

Por que chmod 600 no arquivo .conf?

Porque ele guarda a chave privada do dispositivo em texto puro. Com permissão larga, qualquer usuário da máquina copia a chave e passa a se conectar como aquele dispositivo. O comando wg avisa quando o arquivo está acessível a todos.

Como faço o túnel subir sozinho no boot?

Com a unidade template do systemd: sudo systemctl enable --now wg-quick@wg0, onde wg0 é o nome do arquivo em /etc/wireguard sem a extensão. Para parar, use systemctl disable --now com o mesmo nome.

Posso usar em um servidor, VPS ou Raspberry Pi?

Sim. O mesmo arquivo .conf funciona em servidores, contêineres com acesso à rede e roteadores com OpenWrt. Cada configuração ocupa uma vaga de dispositivo do plano.

Como troco de localização no Linux?

Cada arquivo .conf aponta para uma localização. Gere no painel uma configuração para a localização desejada, salve com outro nome em /etc/wireguard, derrube o túnel atual com wg-quick down e suba o novo com wg-quick up. A lista ao vivo do que está no ar fica na página de status.

Dá para mandar só alguns programas pela VPN?

Não como recurso da SuaVPN: não há split tunneling e a configuração cobre todo o tráfego. No Linux é possível restringir AllowedIPs no arquivo à mão, mas essa edição fica sob sua manutenção e precisa ser testada antes de ser usada para valer.

Existe aplicativo da SuaVPN para Linux?

Não, e também não existe extensão de navegador. O painel gera a configuração padrão do WireGuard, e quem conecta é o wireguard-tools ou o NetworkManager da sua distribuição.

Fontes

Experimente a SuaVPN

WireGuard, assinatura no cartão, vários dispositivos por assinatura e cancelamento quando quiser.

Ver planos

Pronto para navegar com mais privacidade?

Crie sua conta em um minuto e conecte o primeiro dispositivo hoje.