Passo a passo para configurar WireGuard VPN no Rocky Linux 9

16 min de leitura · · WireGuard, VPN, Rocky Linux, AviraHost, segurança, redes, servidor · 0

WireGuard VPN no Rocky Linux 9 é uma solução de tunelamento seguro baseada em criptografia moderna que opera diretamente no kernel do Linux, oferecendo desempenho superior ao OpenVPN com configuração significativamente mais simples. Para configurar o WireGuard do zero no Rocky Linux 9, siga estes passos:

  1. Instalar o WireGuard e as ferramentas necessárias via DNF
  2. Gerar os pares de chaves pública e privada do servidor
  3. Criar o arquivo de configuração /etc/wireguard/wg0.conf
  4. Liberar a porta UDP 51820 no firewalld e ativar IP forwarding
  5. Iniciar e habilitar o serviço wg-quick@wg0 com systemctl
  6. Configurar o peer cliente e verificar o túnel com wg show

Pré-requisitos para configurar WireGuard VPN no Rocky Linux 9

  • Sistema operacional: Rocky Linux 9 (mínimo) com acesso root ou sudo
  • Acesso SSH: conexão ativa ao servidor — veja como acessar em Acessando servidores VPS Linux da AviraHost
  • IP público fixo: o servidor precisa de um endereço IP público acessível pelos clientes
  • Porta UDP 51820 disponível e não bloqueada por firewall externo
  • DNF atualizado: repositórios EPEL habilitados (o WireGuard está disponível no repositório base do Rocky Linux 9)
  • Permissão para modificar sysctl: necessário para ativar IP forwarding
  • Um segundo dispositivo (cliente) com WireGuard instalado para testar o túnel

Instalando o WireGuard no Rocky Linux 9

O pacote wireguard-tools está disponível diretamente nos repositórios base do Rocky Linux 9, sem necessidade de adicionar repositórios externos. O módulo do kernel já está incluído no kernel padrão da distribuição a partir da versão 5.6, o que simplifica bastante a instalação comparado a distribuições mais antigas.

Antes de instalar, atualize os pacotes do sistema para garantir que você está usando as versões mais recentes:

sudo dnf update -y

Em seguida, instale o WireGuard:

sudo dnf install wireguard-tools -y
Output esperado:
Installed:
  wireguard-tools-1.0.20210914-1.el9.x86_64

Complete!

Verifique se o módulo do kernel está carregado:

sudo modprobe wireguard
lsmod | grep wireguard
Output esperado:
wireguard             118784  0
curve25519_x86_64      36864  1 wireguard
libchacha20poly1305    16384  1 wireguard
ip6_udp_tunnel         16384  1 wireguard
udp_tunnel             28672  1 wireguard

Se o módulo aparecer na listagem, o kernel suporta WireGuard nativamente e você pode prosseguir para a geração das chaves.

Gerando chaves criptográficas para o servidor e o cliente

A criptografia assimétrica do WireGuard utiliza o algoritmo Curve25519 para troca de chaves, o que garante sigilo perfeito para frente (PFS) sem a complexidade de uma PKI tradicional. Cada peer — servidor e cliente — precisa de um par de chaves próprio: uma chave privada (que nunca deve ser compartilhada) e uma chave pública (que é trocada entre os peers).

Crie o diretório de configuração e defina permissões restritivas:

sudo mkdir -p /etc/wireguard
sudo chmod 700 /etc/wireguard

Gere o par de chaves do servidor:

wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key
Output esperado (exemplo — suas chaves serão diferentes):
# server_public.key conterá algo como:
8J3kLmN9pQrStUvWxYzAbCdEfGhIjKlMnOpQrStUvW=

Proteja a chave privada do servidor:

sudo chmod 600 /etc/wireguard/server_private.key

Agora gere o par de chaves do cliente (pode ser feito no próprio servidor para depois transferir ao cliente):

wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key
sudo chmod 600 /etc/wireguard/client_private.key

Anote os valores de ambas as chaves públicas — você precisará delas nos arquivos de configuração:

sudo cat /etc/wireguard/server_public.key
sudo cat /etc/wireguard/client_public.key

Criando o arquivo de configuração do servidor WireGuard

O arquivo wg0.conf define a interface VPN do servidor, incluindo o endereço IP interno do túnel, a porta de escuta e os peers autorizados. O endereço 10.0.0.1/24 é uma escolha comum para a interface do servidor dentro da rede privada do túnel.

Crie o arquivo de configuração:

sudo nano /etc/wireguard/wg0.conf

Insira o seguinte conteúdo, substituindo os valores das chaves pelos gerados anteriormente:

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = COLE_AQUI_A_CHAVE_PRIVADA_DO_SERVIDOR

# Habilita NAT para que os clientes acessem a internet pelo servidor
PostUp = firewall-cmd --zone=public --add-masquerade
PostDown = firewall-cmd --zone=public --remove-masquerade

[Peer]
# Cliente 1
PublicKey = COLE_AQUI_A_CHAVE_PUBLICA_DO_CLIENTE
AllowedIPs = 10.0.0.2/32

Salve o arquivo com Ctrl+O e saia com Ctrl+X. Defina permissões restritivas no arquivo de configuração:

sudo chmod 600 /etc/wireguard/wg0.conf

O campo AllowedIPs = 10.0.0.2/32 no bloco [Peer] instrui o servidor a aceitar pacotes apenas do IP 10.0.0.2 vindos deste peer específico. Para adicionar mais clientes no futuro, basta adicionar novos blocos [Peer] com chaves públicas e IPs diferentes (10.0.0.3/32, 10.0.0.4/32, etc.).

Configurando o firewalld e o IP forwarding no Rocky Linux 9

O roteamento de pacotes entre a interface VPN e a internet requer que o kernel encaminhe pacotes entre interfaces de rede — funcionalidade conhecida como IP forwarding. Sem ela, os clientes conseguem se conectar ao servidor, mas não conseguem acessar recursos além do próprio servidor.

Ative o IP forwarding de forma permanente editando o sysctl:

sudo nano /etc/sysctl.d/99-wireguard.conf

Adicione as seguintes linhas:

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

Aplique as configurações imediatamente:

sudo sysctl --system
Output esperado (trecho relevante):
* Applying /etc/sysctl.d/99-wireguard.conf ...
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

Agora libere a porta UDP 51820 no firewalld:

sudo firewall-cmd --permanent --add-port=51820/udp
sudo firewall-cmd --reload
Output esperado:
success
success

Verifique se a porta foi adicionada corretamente:

sudo firewall-cmd --list-ports
Output esperado:
51820/udp

O masquerade (NAT) já está sendo gerenciado pelos comandos PostUp e PostDown no arquivo wg0.conf, que ativam e desativam o masquerade automaticamente quando a interface sobe ou desce.

Iniciando o serviço WireGuard e verificando o túnel

Com a configuração do servidor concluída, o próximo passo é iniciar a interface VPN usando o wg-quick, que é o utilitário responsável por ler o arquivo wg0.conf e configurar a interface de rede automaticamente, incluindo rotas e regras de firewall definidas nos campos PostUp/PostDown.

Inicie a interface WireGuard:

sudo wg-quick up wg0
Output esperado:
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] firewall-cmd --zone=public --add-masquerade

Habilite o serviço para iniciar automaticamente após reboot:

sudo systemctl enable wg-quick@wg0
Output esperado:
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /usr/lib/systemd/system/[email protected].

Verifique o status da interface:

sudo wg show
Output esperado:
interface: wg0
  public key: 8J3kLmN9pQrStUvWxYzAbCdEfGhIjKlMnOpQrStUvW=
  private key: (hidden)
  listening port: 51820

peer: CHAVE_PUBLICA_DO_CLIENTE
  allowed ips: 10.0.0.2/32

Enquanto nenhum cliente tiver se conectado, o campo latest handshake não aparecerá. Ele surgirá após o primeiro handshake bem-sucedido com um peer.

Configurando o cliente WireGuard para conectar ao servidor

A configuração do peer cliente segue a mesma estrutura do servidor, mas com os papéis invertidos: a chave privada usada é a do cliente, e o bloco [Peer] aponta para o servidor. O campo Endpoint deve conter o IP público do servidor Rocky Linux 9 e a porta 51820.

No dispositivo cliente (Linux, Windows, macOS ou Android), crie o arquivo de configuração:

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

[Peer]
PublicKey = COLE_AQUI_A_CHAVE_PUBLICA_DO_SERVIDOR
Endpoint = IP_PUBLICO_DO_SERVIDOR:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

O campo AllowedIPs = 0.0.0.0/0, ::/0 redireciona todo o tráfego IPv4 e IPv6 pelo túnel VPN — útil para uso como VPN de privacidade. Se quiser apenas acessar recursos da rede interna do servidor, substitua por 10.0.0.0/24.

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

No cliente Linux, inicie a conexão com:

sudo wg-quick up wg0

Após alguns segundos, verifique o handshake no servidor:

sudo wg show
Output esperado (com cliente conectado):
peer: CHAVE_PUBLICA_DO_CLIENTE
  endpoint: IP_DO_CLIENTE:PORTA_EFEMERA
  allowed ips: 10.0.0.2/32
  latest handshake: 5 seconds ago
  transfer: 1.23 KiB received, 648 B sent

Se o campo latest handshake mostrar um tempo recente, o túnel está funcionando corretamente. Você pode testar a conectividade com um ping:

ping 10.0.0.1

Problemas comuns e como resolver

Sintoma: wg-quick up wg0 falha com "RTNETLINK answers: Operation not supported"

Causa: O módulo do kernel WireGuard não está carregado ou o kernel em uso é muito antigo para suportá-lo nativamente.
Solução: Execute sudo modprobe wireguard e verifique a saída. Se retornar erro, confirme a versão do kernel com uname -r — o Rocky Linux 9 usa kernel 5.14+, que inclui WireGuard nativamente. Se o módulo não carregar, reinstale o kernel padrão com sudo dnf reinstall kernel e reinicie o servidor.

Sintoma: Handshake nunca ocorre — cliente fica aguardando conexão indefinidamente

Causa: A porta UDP 51820 está bloqueada no firewall do servidor ou o IP público/porta no campo Endpoint do cliente está incorreto.
Solução: Verifique se a porta está liberada com sudo firewall-cmd --list-ports. Confirme o IP público do servidor com curl ifconfig.me. Teste a conectividade UDP externamente com nc -u IP_DO_SERVIDOR 51820 a partir do cliente. Se houver um firewall externo (painel de controle do provedor), libere a porta UDP 51820 também nele.

Sintoma: Clientes conectam ao túnel mas não conseguem acessar a internet

Causa: IP forwarding está desativado ou o masquerade (NAT) não foi configurado corretamente.
Solução: Verifique o IP forwarding com sysctl net.ipv4.ip_forward — deve retornar 1. Confirme que o masquerade está ativo com sudo firewall-cmd --query-masquerade. Se retornar no, ative manualmente com sudo firewall-cmd --zone=public --add-masquerade --permanent && sudo firewall-cmd --reload. Reinicie a interface com sudo wg-quick down wg0 && sudo wg-quick up wg0 para que os comandos PostUp sejam reexecutados.

Sintoma: Serviço wg-quick@wg0 não inicia após reboot

Causa: O serviço não foi habilitado no systemd ou há um erro de sintaxe no arquivo wg0.conf.
Solução: Verifique se o serviço está habilitado com sudo systemctl is-enabled wg-quick@wg0. Se retornar disabled, execute sudo systemctl enable wg-quick@wg0. Para verificar erros de configuração, rode sudo wg-quick up wg0 manualmente e observe a saída. Erros de sintaxe no wg0.conf aparecem como mensagens de erro explícitas.

Sintoma: Erro "resolvconf: command not found" ao executar wg-quick

Causa: O campo DNS no arquivo de configuração requer o utilitário resolvconf, que não está instalado por padrão no Rocky Linux 9.
Solução: Instale o pacote com sudo dnf install openresolv -y ou remova temporariamente o campo DNS do arquivo de configuração se não precisar de resolução DNS pelo túnel. Após instalar o openresolv, reinicie a interface.

Perguntas frequentes sobre WireGuard VPN no Rocky Linux 9

O WireGuard é mais rápido que o OpenVPN?

Sim, o WireGuard utiliza um código-base muito menor e criptografia moderna (ChaCha20, Curve25519), o que resulta em menor latência e maior throughput em comparação ao OpenVPN. Ele opera diretamente no kernel do Linux, eliminando a sobrecarga de processos em espaço de usuário. Isso torna o WireGuard especialmente vantajoso em conexões com alta taxa de transferência ou em dispositivos com recursos limitados de CPU.

Preciso abrir alguma porta no firewall para o WireGuard funcionar?

Sim. O WireGuard usa UDP por padrão, geralmente na porta 51820. Você precisa liberar essa porta no firewalld ou iptables do servidor para que os peers consigam se conectar. Sem essa liberação, o handshake não ocorre e o túnel não é estabelecido. Lembre-se também de verificar se há firewalls externos no painel do seu provedor de VPS que possam estar bloqueando a porta.

Como verificar se o túnel WireGuard está ativo no Rocky Linux 9?

Execute o comando wg show como root. Ele exibe os peers conectados, o endpoint, a última vez que houve handshake e os bytes transferidos. Se o campo latest handshake mostrar um tempo recente (segundos ou poucos minutos atrás), o túnel está funcionando corretamente. Você também pode usar ip addr show wg0 para confirmar que a interface está ativa com o IP configurado.

O WireGuard mantém a conexão após reinicialização do servidor?

Apenas se você habilitar o serviço com systemctl enable wg-quick@wg0. Sem isso, a interface VPN não sobe automaticamente após reboot. O arquivo de configuração em /etc/wireguard/wg0.conf é lido pelo wg-quick na inicialização do serviço. Verifique o status com systemctl status wg-quick@wg0 após um reboot para confirmar que o serviço iniciou corretamente.

É possível usar o WireGuard para rotear todo o tráfego do cliente pela VPN?

Sim. No arquivo de configuração do peer cliente, defina AllowedIPs = 0.0.0.0/0, ::/0 para redirecionar todo o tráfego IPv4 e IPv6 pelo túnel. No servidor, ative o IP forwarding com net.ipv4.ip_forward = 1 no sysctl e configure NAT com masquerade no firewalld. Sem o masquerade ativo no servidor, os pacotes dos clientes chegarão à internet com o IP interno do túnel (10.0.0.x), que não é roteável publicamente, e as respostas não retornarão ao cliente.

Conclusão

Configurar o WireGuard VPN no Rocky Linux 9 é um processo direto que resulta em uma solução de tunelamento segura, eficiente e de fácil manutenção. Para garantir que sua instalação esteja funcionando corretamente e de forma segura, mantenha estes pontos em mente:

  • Proteja as chaves privadas: mantenha permissão 600 nos arquivos server_private.key e wg0.conf — uma chave privada exposta compromete toda a segurança do túnel
  • Habilite o serviço no systemd: execute systemctl enable wg-quick@wg0 para garantir que o túnel suba automaticamente após qualquer reinicialização do servidor
  • Monitore os handshakes regularmente: use wg show periodicamente para verificar se os peers estão ativos e se há transferência de dados — um handshake parado por mais de 3 minutos pode indicar problema de conectividade

Para aprofundar seus conhecimentos em otimização do ambiente Linux onde o WireGuard está rodando, consulte também as Dicas de Otimização de Servidores Linux da AviraHost.

Leia também

Precisa de ajuda com WireGuard VPN no seu servidor?

Configurar e manter uma VPN segura exige um servidor com recursos adequados e suporte técnico confiável. Os planos de VPS da AviraHost oferecem Rocky Linux 9 pré-instalado, acesso root completo e suporte especializado para que você possa focar na configuração sem se preocupar com a infraestrutura.

Conheça os planos de VPS da AviraHost


Esta resposta foi útil?