Poupe até 53% em Servidores VPS, escolha agora. Oferta limitada.

configurar WireGuard no Debian 12: VPN moderna do zero

16 min de leitura  ·  Guia técnico

WireGuard é um protocolo e software de VPN moderno, leve e de alto desempenho integrado ao kernel Linux desde a versão 5.6. Para configurar o WireGuard do zero no Debian 12 (Bookworm), siga estes passos:

  1. Instale o pacote wireguard via apt
  2. Gere o par de chaves pública e privada do servidor
  3. Crie o arquivo de configuração da interface wg0
  4. Habilite o IP forwarding no kernel via sysctl
  5. Inicie e habilite o serviço wg-quick@wg0
  6. Configure o cliente e adicione o peer ao servidor

Pré-requisitos para configurar WireGuard no Debian 12

  • Sistema operacional: Debian 12 (Bookworm) com kernel 6.1 ou superior
  • Acesso root ou usuário com privilégios sudo
  • IP público do servidor (necessário para o cliente se conectar)
  • Porta UDP 51820 liberada no firewall (UFW ou iptables)
  • Conexão SSH ativa — veja como acessar em Acessando servidores VPS Linux da AviraHost
  • Conhecimento básico de linha de comando Linux

O que é WireGuard e por que usá-lo no Debian 12

O WireGuard é um protocolo VPN de código aberto projetado para ser mais simples, mais rápido e mais seguro do que alternativas como OpenVPN e IPsec. Sua base de código conta com aproximadamente 4.000 linhas — contra mais de 100.000 do OpenVPN — o que facilita auditorias de segurança e reduz drasticamente a superfície de ataque.

No Debian 12, o módulo wireguard já está presente no kernel 6.1 sem necessidade de compilação adicional ou DKMS. Isso significa que a instalação é direta via apt e o módulo é carregado automaticamente ao criar a interface de rede.

Entre os casos de uso mais comuns estão: acesso remoto seguro a servidores VPS, criação de redes privadas entre múltiplos servidores (site-a-site), proteção de tráfego em redes públicas e tunelamento de serviços internos sem exposição direta à internet. Se você está avaliando qual infraestrutura usar para hospedar sua VPN, o artigo Compreendendo o Servidor VPS: O que é e Como Funciona pode ajudar na decisão.

Comparado ao OpenVPN, o WireGuard oferece:

  • Latência menor: protocolo UDP nativo, sem overhead de negociação TCP
  • Criptografia moderna: ChaCha20, Poly1305, Curve25519 e BLAKE2s por padrão
  • Reconexão automática: o túnel se restabelece silenciosamente após mudança de IP (roaming)
  • Configuração mais simples: arquivos de configuração minimalistas com sintaxe INI
  • Integração nativa ao kernel: sem dependência de espaço de usuário para o plano de dados

Instalação do WireGuard no Debian 12

O pacote wireguard está disponível nos repositórios oficiais do Debian 12 sem necessidade de adicionar fontes externas. A instalação inclui as ferramentas wg e wg-quick.

Atualize o índice de pacotes e instale:

apt update && apt install -y wireguard

Verifique se o módulo do kernel foi carregado corretamente:

modinfo wireguard
filename:       /lib/modules/6.1.0-21-amd64/kernel/drivers/net/wireguard/wireguard.ko
description:    WireGuard secure network tunnel
author:         Jason A. Donenfeld <[email protected]>
license:        GPL v2
...

Se o módulo não aparecer, carregue-o manualmente:

modprobe wireguard

Geração de chaves criptográficas do servidor

O WireGuard utiliza criptografia de chave pública baseada em Curve25519. Cada peer (servidor ou cliente) precisa de um par de chaves: uma privada (mantida em segredo) e uma pública (compartilhada com os peers).

Atenção: a chave privada nunca deve ser compartilhada ou exposta. Armazene-a com permissões restritas.

Crie o diretório de configuração e gere as chaves do servidor:

mkdir -p /etc/wireguard
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

Visualize as chaves geradas:

cat server_private.key
cat server_public.key
# Exemplo de saída (valores fictícios para ilustração):
# server_private.key:
4GbHZ1234ABCDEFghijklmnopqrstuvwxyz0123456789AB=
# server_public.key:
XyZ9876fedcbaZYXWVUTSRQPONMLKJIHGFEDCBA0987654=

Guarde o conteúdo de ambas as chaves — você precisará delas nos próximos passos.

Configuração da interface WireGuard no servidor

O arquivo de configuração da interface wg0 define o endereço IP da VPN, a porta de escuta e os peers autorizados. A sintaxe segue o formato INI padrão.

Crie o arquivo /etc/wireguard/wg0.conf:

nano /etc/wireguard/wg0.conf

Insira o seguinte conteúdo, substituindo CHAVE_PRIVADA_SERVIDOR pelo valor real:

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = CHAVE_PRIVADA_SERVIDOR
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

As diretivas PostUp e PostDown configuram o NAT (mascaramento) para que os clientes da VPN possam rotear tráfego pela interface de rede pública do servidor. Substitua eth0 pelo nome real da sua interface de rede pública — verifique com ip link show.

Ajuste as permissões do arquivo de configuração:

chmod 600 /etc/wireguard/wg0.conf

Habilitando IP forwarding no kernel do Debian

Para que o servidor funcione como gateway VPN e encaminhe pacotes entre a interface WireGuard e a rede pública, o IP forwarding precisa estar ativo no kernel.

Edite o arquivo /etc/sysctl.conf:

nano /etc/sysctl.conf

Localize e descomente (ou adicione) as seguintes linhas:

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

Aplique as alterações imediatamente sem reiniciar:

sysctl -p
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

Confirme que o forwarding está ativo:

cat /proc/sys/net/ipv4/ip_forward
1

Iniciando o serviço WireGuard com systemd

O utilitário wg-quick integra-se ao systemd por meio de unidades de serviço no formato wg-quick@INTERFACE, permitindo gerenciar a VPN como qualquer outro serviço do sistema.

Inicie a interface e habilite o serviço para iniciar automaticamente no boot:

systemctl enable --now wg-quick@wg0

Verifique o status do serviço:

systemctl status wg-quick@wg0
[email protected] - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/[email protected]; enabled)
     Active: active (exited) since Mon 2024-06-10 14:32:01 UTC; 5s ago
    Process: ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)

Confirme que a interface foi criada:

ip link show wg0
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/none

Liberando a porta no firewall UFW

Se o servidor utiliza UFW como firewall, é necessário liberar a porta UDP 51820 para que os clientes possam estabelecer conexão com o endpoint WireGuard.

ufw allow 51820/udp
ufw reload

Verifique as regras ativas:

ufw status verbose
Status: active
To                         Action      From
--                         ------      ----
51820/udp                  ALLOW IN    Anywhere

Configurando o cliente WireGuard (Linux ou Windows)

Cada cliente precisa de seu próprio par de chaves. Em um cliente Linux, gere as chaves da mesma forma que no servidor:

wg genkey | tee client_private.key | wg pubkey > client_public.key

Crie o arquivo de configuração do cliente (/etc/wireguard/wg0.conf no cliente ou importe no app WireGuard para Windows/Android/iOS):

[Interface]
Address = 10.0.0.2/24
PrivateKey = CHAVE_PRIVADA_CLIENTE
DNS = 1.1.1.1

[Peer]
PublicKey = CHAVE_PUBLICA_SERVIDOR
Endpoint = IP_PUBLICO_SERVIDOR:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

A diretiva AllowedIPs = 0.0.0.0/0 faz com que todo o tráfego do cliente seja roteado pela VPN (modo full-tunnel). Para rotear apenas o tráfego da rede privada da VPN, use AllowedIPs = 10.0.0.0/24.

PersistentKeepalive = 25 envia um pacote keepalive a cada 25 segundos, mantendo o túnel ativo mesmo atrás de NAT.

Adicionando o cliente como peer no servidor

Com a chave pública do cliente em mãos, adicione-o como peer autorizado no servidor. Você pode fazer isso de duas formas: editando o arquivo de configuração ou usando o comando wg em tempo real.

Método 1 — Editar o arquivo de configuração (persistente):

Adicione ao final do /etc/wireguard/wg0.conf:

[Peer]
PublicKey = CHAVE_PUBLICA_CLIENTE
AllowedIPs = 10.0.0.2/32

Reinicie a interface para aplicar:

systemctl restart wg-quick@wg0

Método 2 — Adicionar peer em tempo real (sem reiniciar):

wg set wg0 peer CHAVE_PUBLICA_CLIENTE allowed-ips 10.0.0.2/32

Este método não persiste após reinicialização. Para salvar o estado atual no arquivo de configuração:

wg-quick save wg0

Verificando o status do túnel WireGuard

Após o cliente se conectar, verifique o status do túnel no servidor com o comando wg show:

wg show
interface: wg0
  public key: XyZ9876fedcbaZYXWVUTSRQPONMLKJIHGFEDCBA0987654=
  private key: (hidden)
  listening port: 51820

peer: CHAVE_PUBLICA_CLIENTE
  endpoint: 203.0.113.45:54321
  allowed ips: 10.0.0.2/32
  latest handshake: 14 seconds ago
  transfer: 1.23 KiB received, 4.56 KiB sent

O campo latest handshake confirma que o cliente estabeleceu conexão recentemente. Se ele não aparecer, o cliente ainda não se conectou ou há um problema de conectividade.

Teste a conectividade fazendo ping do servidor para o cliente:

ping -c 4 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=2.34 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=1.98 ms

Problemas comuns e como resolver

Sintoma: interface wg0 não sobe após systemctl start

Causa: erro de sintaxe no arquivo /etc/wireguard/wg0.conf ou chave privada inválida/com espaços extras.
Solução: execute wg-quick up wg0 diretamente no terminal para ver a mensagem de erro completa. Verifique se a chave privada no arquivo corresponde exatamente ao conteúdo de server_private.key sem espaços ou quebras de linha extras. Confirme também que o arquivo tem permissão 600 com ls -la /etc/wireguard/wg0.conf.

Sintoma: cliente conecta mas não acessa a internet

Causa: IP forwarding desabilitado no servidor ou regras de NAT (iptables) não aplicadas corretamente. Outro motivo comum é o nome da interface de rede pública estar errado nas diretivas PostUp/PostDown.
Solução: confirme que cat /proc/sys/net/ipv4/ip_forward retorna 1. Verifique o nome correto da interface pública com ip route show default e ajuste o eth0 nas regras de iptables para o nome real (pode ser ens3, enp1s0, etc.). Reinicie a interface com systemctl restart wg-quick@wg0 para reaplicar as regras.

Sintoma: handshake nunca ocorre (latest handshake ausente no wg show)

Causa: a porta UDP 51820 está bloqueada no firewall do servidor, o IP público ou porta no Endpoint do cliente está incorreto, ou as chaves públicas foram trocadas (cliente tem a chave errada do servidor ou vice-versa).
Solução: verifique se a porta está aberta com ss -ulnp | grep 51820. Confirme as regras do UFW com ufw status. Teste a conectividade UDP externamente com nc -u -v IP_SERVIDOR 51820 a partir do cliente. Revise as chaves públicas em ambos os lados — um erro de um único caractere impede o handshake.

Sintoma: erro "RTNETLINK answers: Operation not supported"

Causa: o módulo wireguard do kernel não está carregado, o que pode ocorrer em kernels muito antigos ou em ambientes de virtualização com kernel customizado que não inclui o módulo.
Solução: execute modprobe wireguard e verifique a saída. Se o módulo não existir, confirme a versão do kernel com uname -r — deve ser 5.6 ou superior. No Debian 12 com kernel padrão 6.1, isso não deve ocorrer. Em VPS com kernel customizado do provedor, pode ser necessário instalar o pacote wireguard-dkms ou solicitar atualização do kernel.

Perguntas frequentes sobre WireGuard

O WireGuard é mais seguro que o OpenVPN?

O WireGuard utiliza criptografia moderna com ChaCha20, Poly1305 e Curve25519, resultando em uma base de código muito menor que o OpenVPN, o que reduz a superfície de ataque. Ambos são considerados seguros quando configurados corretamente, mas o WireGuard tem auditoria de código mais simples devido à sua simplicidade arquitetural. Para a maioria dos casos de uso em servidores Linux modernos, o WireGuard é a escolha recomendada pela facilidade de manutenção e pelo desempenho superior.

O WireGuard funciona no Debian 12 sem kernel personalizado?

Sim. A partir do kernel 5.6, o WireGuard está integrado ao kernel Linux mainline. O Debian 12 (Bookworm) utiliza o kernel 6.1 por padrão, portanto o módulo wireguard está disponível nativamente sem necessidade de compilação ou DKMS. Basta instalar o pacote wireguard via apt e o módulo será carregado automaticamente ao criar a interface.

Como verificar se o túnel WireGuard está ativo no Debian?

Execute o comando wg show como root para exibir o status de todas as interfaces WireGuard ativas, incluindo peers conectados, bytes transferidos e o último handshake. Se a interface não aparecer, verifique com ip link show wg0 e confirme que o serviço está ativo com systemctl status wg-quick@wg0. A presença de um latest handshake recente indica que o túnel está funcional e trocando pacotes.

Qual porta o WireGuard usa por padrão?

O WireGuard utiliza a porta UDP 51820 por padrão, mas essa porta é totalmente configurável no arquivo de configuração da interface por meio da diretiva ListenPort. Diferente do TCP, o protocolo UDP do WireGuard oferece menor latência e melhor desempenho para tunelamento VPN. Em ambientes com restrições de firewall, é possível usar portas alternativas como 443/UDP para contornar bloqueios.

É possível usar WireGuard como VPN site-a-site no Debian 12?

Sim. O WireGuard suporta topologias site-a-site configurando múltiplos peers com blocos AllowedIPs que representam as sub-redes de cada lado. Cada servidor precisa ter o IP do peer e a chave pública do outro configurados, além de IP forwarding habilitado no kernel via sysctl. Por exemplo, se o Site A tem a sub-rede 192.168.1.0/24 e o Site B tem 192.168.2.0/24, o AllowedIPs de cada peer deve incluir a sub-rede remota para que o roteamento funcione corretamente.

Conclusão

O WireGuard no Debian 12 oferece uma solução VPN robusta, moderna e de fácil manutenção. Após seguir este guia, você terá:

  • Servidor WireGuard funcional com interface wg0 ativa, IP forwarding habilitado e NAT configurado para rotear tráfego dos clientes
  • Serviço gerenciado pelo systemd com inicialização automática no boot e comandos padrão para start, stop e restart
  • Base para expansão — adicione novos peers editando o arquivo de configuração ou usando wg set em tempo real, sem interromper conexões existentes

Leia também

Precisa de ajuda com VPN e infraestrutura Linux?

Configurar e manter um servidor WireGuard exige um VPS com kernel atualizado, recursos dedicados e conectividade estável. A AviraHost oferece servidores VPS Linux com Debian 12 pré-instalado, suporte técnico especializado e infraestrutura otimizada para cargas de trabalho de rede.

Conheça os planos de VPS da AviraHost e comece sua VPN hoje

  • 0 Os usuários acharam isso útil
  • WireGuard, VPN, Debian 12, Linux, AviraHost, segurança, redes
Esta resposta foi útil?

Artigos Relacionados

Instalando painel de gerenciamento de hospedagem VirtualMin.

O virtualmin é um painel de gerenciamento de hospedagem de sites gratuito, que é suportado por...

Como usar a ferramenta oficial de acesso remoto do Windows no PC e celular

1. Pelo menu Iniciar, acesse os “Acessórios do Windows” e abra o “Conexão de Área de Trabalho...

Como acessar o painel de gerenciamento dos meus Serviços.

Para acessar o painel de gerenciamento do seu serviço basta seguir o passo á passo abaixo.   1....

Compreendendo o Servidor VPS: O que é e Como Funciona!

Um servidor VPS (Virtual Private Server) é uma solução de hospedagem na qual um servidor físico é...

Como trocar a senha do usuário root do servidor VPS ou Dedicado.

Para trocar a senha do usuário root em um servidor VPS da AviraHost, você pode seguir os...