16 min de leitura · Guia técnico
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:
- Instalar o WireGuard e as ferramentas necessárias via DNF
- Gerar os pares de chaves pública e privada do servidor
- Criar o arquivo de configuração
/etc/wireguard/wg0.conf - Liberar a porta UDP 51820 no firewalld e ativar IP forwarding
- Iniciar e habilitar o serviço
wg-quick@wg0com systemctl - 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.keyewg0.conf— uma chave privada exposta compromete toda a segurança do túnel - Habilite o serviço no systemd: execute
systemctl enable wg-quick@wg0para garantir que o túnel suba automaticamente após qualquer reinicialização do servidor - Monitore os handshakes regularmente: use
wg showperiodicamente 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
- Como Instalar e Configurar o OpenVPN no VPS Linux para Acesso Seguro Remoto
- Guia Definitivo: Protegendo Servidor Linux de Ataques DDoS
- Checklist de Segurança: Fail2ban vs CSF para proteger servidores Linux
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.