Saltar para o conteúdo principal
50% de desconto todos os planos, tempo limitado. A partir de $2.48/mo
12 min left
Segurança e redes

Como configurar o WireGuard VPN em um VPS

Pius Bodenmann Por Pius Bodenmann 12 min de leitura Atualizado por Mir 22d ago
WireGuard VPN tunnel active on an Ubuntu VPS terminal and a phone client

Um WireGuard VPN auto-hospedado dá ao seu notebook e ao seu celular um caminho criptografado até um servidor que você controla. É útil quando você quer um IP de saída estável, acesso seguro em redes Wi-Fi não confiáveis ou uma rota privada para outra rede. Isso não torna você anônimo: os sites continuam vendo um único endereço do VPS, e o provedor de hospedagem continua operando a rede subjacente.

Este guia constrói uma VPN IPv4 de túnel completo no Ubuntu Server. Você vai instalar o WireGuard, gerar chaves com permissões restritivas, habilitar o roteamento, adicionar regras de firewall e NAT, conectar clientes de desktop e móveis e verificar o túnel. O mesmo desenho suporta IPv6, mas só depois que o VPS tiver espaço IPv6 roteado e você configurar separadamente o encaminhamento e as regras de firewall IPv6.

O que é o WireGuard?

O WireGuard é um protocolo VPN moderno e multiplataforma, junto com sua implementação, que transporta pacotes IP criptografados por UDP. A especificação do protocolo WireGuard define um conjunto fixo de primitivas criptográficas, incluindo ChaCha20-Poly1305, Curve25519, BLAKE2s, SipHash24 e HKDF. Esse desenho deliberadamente enxuto torna a configuração e a auditoria mais simples do que em protocolos com muitas suítes de cifra intercambiáveis.

O WireGuard não tem sistema central de contas nem diretório de usuários embutido. Cada dispositivo é um peer com seu próprio par de chaves, endereço de túnel e regras AllowedIPs. Em um VPS, normalmente um peer atua como o gateway voltado à internet, enquanto notebooks e celulares iniciam as conexões até ele.

Por que usar o WireGuard em um VPS?

  • Modelo de peers simples: Cada dispositivo recebe um par de chaves e uma entrada de peer.
  • Superfície de ataque pequena: O WireGuard usa um protocolo compacto e uma suíte criptográfica fixa, em vez de expor um longo menu de opções legadas.
  • Bom desempenho: A integração ao kernel no Linux e uma criptografia eficiente podem entregar alta taxa de transferência, embora o resultado ainda dependa da CPU, da capacidade de rede, da latência e do tamanho dos pacotes.
  • Clientes multiplataforma: Há clientes oficiais para Windows 10 e 11, macOS, Android e iOS, enquanto o Linux e vários sistemas BSD oferecem ferramentas ou pacotes nativos.
  • Roaming: Um peer pode trocar de rede e de endereço IP de origem sem receber uma nova identidade WireGuard; o servidor aprende o último endpoint autenticado.
  • Controle de roteamento claro: AllowedIPs determina tanto quais destinos usam o túnel quanto quais endereços de túnel pertencem a cada peer.

Leitura relacionada: o guia da Cloudzy sobre VPS para VPN. Para implantações mais antigas, veja o guia de configuração de PPTP da Cloudzy; não escolha PPTP para uma nova VPN sensível à segurança.

Pule a instalação manual: WireGuard com um clique

Se você não tem formação técnica, ou prefere não cuidar da instalação por conta própria, a Cloudzy oferece uma implantação de WireGuard VPN com um clique. O restante deste guia cobre a construção manual; esta seção cobre o atalho.

  1. Faça login no painel de controle da Cloudzy.
  2. Selecione o WireGuard na lista de aplicações.
  3. Crie um VPS no local desejado com o plano de sua escolha. Uma máquina Ubuntu com especificações básicas já basta.

Assim que o VPS estiver pronto, faça login e execute o comando a seguir para exibir sua configuração:

cat client.conf

Você verá algo assim:

Terminal output of cat client.conf on a one-click WireGuard VPS, showing the Interface and Peer blocks with the keys and endpoint redacted

Use essa configuração para criar um novo túnel no cliente WireGuard do seu PC, e a conexão está pronta. Se você prefere entender cada peça, ou precisa de um arranjo que a imagem de um clique não cobre, siga com a construção manual abaixo.

Como configurar o WireGuard no Ubuntu

Six-step WireGuard setup cycle around a VPS: install, generate keys, configure wg0 with 10.8.0.1/24, enable forwarding between wg0 and eth0, add firewall and NAT rules on UDP 51820, then start and verify the interface

Os comandos abaixo têm como alvo uma versão atual do Ubuntu Server. Execute-os por SSH com um usuário que tenha sudo. Mantenha a sessão SSH aberta até confirmar o firewall e tire antes um snapshot do VPS, se o seu provedor oferecer isso.

Pré-requisitos

  • Um VPS Ubuntu com endereço IPv4 público
  • Uma conta não root com acesso sudo
  • Acesso SSH e os dados do console de recuperação do provedor do VPS
  • Um dispositivo cliente com o app oficial do WireGuard ou as ferramentas de linha de comando

Você não precisa de um segundo servidor Ubuntu. O cliente pode ser um PC com Windows, um Mac, um notebook Linux, um celular Android ou um iPhone.

Passo 1: instalar o WireGuard

sudo apt update
sudo apt install wireguard -y

Confirme se as ferramentas estão disponíveis:

wg --version

Passo 2: gerar as chaves do servidor com segurança

Crie o diretório do WireGuard e gere o par de chaves com uma umask restritiva. A chave privada nunca deve ser copiada para um cliente nem aparecer em logs.

sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'

Exiba as chaves quando precisar colá-las em arquivos de configuração:

sudo cat /etc/wireguard/server.key
sudo cat /etc/wireguard/server.pub

Passo 3: criar a configuração do servidor

Abra a configuração da interface:

sudo nano /etc/wireguard/wg0.conf

Cole o bloco a seguir e substitua SERVER_PRIVATE_KEY pela chave privada do passo anterior:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

A rede de túnel 10.8.0.0/24 é apenas um exemplo. Escolha outra faixa privada se ela se sobrepuser a uma rede doméstica, de escritório ou na nuvem que você precise alcançar. Não adicione SaveConfig = true: isso pode reescrever o arquivo quando a interface for desligada e apagar as alterações feitas à mão.

sudo chmod 600 /etc/wireguard/wg0.conf

Passo 4: habilitar o encaminhamento IPv4

O VPS precisa rotear pacotes entre wg0 e sua interface de rede pública. Coloque essa configuração em um arquivo sysctl dedicado:

sudo nano /etc/sysctl.d/70-wireguard-routing.conf
net.ipv4.ip_forward = 1

Aplique e verifique:

sudo sysctl -p /etc/sysctl.d/70-wireguard-routing.conf
sysctl net.ipv4.ip_forward

Isso segue o modelo de roteamento do guia de gateway WireGuard do Ubuntu. O IPv6 exige um prefixo IPv6 roteado, endereços de túnel separados, encaminhamento IPv6 e regras de firewall IPv6; não envie o tráfego do cliente para ::/0 enquanto esse caminho não estiver completo.

Passo 5: adicionar regras de firewall e NAT

Descubra o nome da interface pública do VPS. Na saída abaixo, observe o valor após dev; nomes comuns são eth0, ens3 e enp1s0.

ip route show default

Abra o wg0.conf novamente e acrescente as linhas a seguir em [Interface]. Substitua eth0 em todos os lugares se a sua interface pública tiver outro nome:

PostUp = iptables -I FORWARD 1 -i %i -o eth0 -j ACCEPT; iptables -I FORWARD 1 -i eth0 -o %i -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PreDown = iptables -D FORWARD -i %i -o eth0 -j ACCEPT; iptables -D FORWARD -i eth0 -o %i -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Se o UFW estiver ativo, permita o SSH antes de mexer no estado dele e só então abra a porta UDP do WireGuard:

sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw status

Se o UFW estiver inativo agora e você quiser habilitá-lo, confirme antes que a regra do OpenSSH existe. Não desabilite e reabilite o UFW por SSH só para aplicar essas regras; isso adiciona um risco evitável de perder o acesso.

Passo 6: iniciar a interface do WireGuard

sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0 --no-pager
sudo wg show

Se o serviço falhar, execute o journalctl antes de mudar qualquer outra coisa:

sudo journalctl -u wg-quick@wg0 -n 50 --no-pager

Adicionar um cliente WireGuard

A VPS at 10.8.0.1/32 holding separate peer entries for a laptop, tablet, and phone, each with its own keypair and /32 tunnel address, its private key staying on the device, and a QR code marked as containing a private key

Cada dispositivo precisa de um par de chaves e de um IP de túnel exclusivos. Nunca reutilize uma mesma configuração de cliente em dois dispositivos: chaves e endereços duplicados tornam o roteamento imprevisível e impedem uma revogação limpa.

Passo 1: gerar as chaves do cliente

Os aplicativos oficiais para desktop e celular podem gerar as chaves quando você cria um túnel vazio. Em um cliente Linux, use:

umask 077
wg genkey | tee client.key | wg pubkey > client.pub

Mantenha o client.key nesse dispositivo. Copie apenas o client.pub para o servidor.

Passo 2: adicionar o peer no servidor

sudo nano /etc/wireguard/wg0.conf

Acrescente um bloco de peer. Substitua CLIENT_PUBLIC_KEY pela chave pública do cliente:

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

A linha Address = 10.8.0.2/32 atribui o endereço de túnel no cliente. No bloco [Peer] do servidor, AllowedIPs = 10.8.0.2/32 associa esse endereço a este peer para roteamento e validação de origem. Use 10.8.0.3/32 para o próximo dispositivo e siga subindo, sem duplicatas.

sudo systemctl restart wg-quick@wg0

Passo 3: montar a configuração do cliente

Crie o client.conf no cliente e substitua todos os marcadores:

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.8.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = VPS_PUBLIC_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

AllowedIPs = 0.0.0.0/0 transforma isso em um túnel completo IPv4. Para acessar apenas a rede VPN, use AllowedIPs = 10.8.0.0/24. O PersistentKeepalive é útil para um cliente atrás de NAT que precisa manter o mapeamento acessível enquanto está ocioso; o guia de início rápido do WireGuard observa que a maioria dos peers não precisa dele.

Passo 4: importar a configuração

Use o guia de instalação de clientes WireGuard para obter o cliente compatível com a sua plataforma.

  • Windows: Escolha Add Tunnel e depois importe o client.conf.
  • macOS: Escolha Import tunnel(s) from file e selecione o client.conf.
  • Android ou iOS: Importe o arquivo ou escaneie um código QR gerado a partir dele.

Em um cliente Ubuntu ou Debian que tenha o client.conf, instale o qrencode e renderize o arquivo no terminal desse cliente:

sudo apt install qrencode -y
qrencode -t ansiutf8 < client.conf

O código QR contém a chave privada do cliente. Exiba-o apenas em um terminal confiável, não salve capturas de tela e limpe o terminal depois que o celular o importar.

Passo 5: verificar o túnel

Ative o túnel, gere tráfego a partir do cliente e execute estas verificações no VPS:

sudo wg show
ip -brief address show wg0

Um handshake recente e contadores de transferência crescentes confirmam que o WireGuard está trocando pacotes. Em seguida, verifique a saída em túnel completo a partir do cliente:

curl -4 https://api.ipify.org; echo

O comando deve retornar o endereço IPv4 público do VPS. Se não houver handshake, verifique o endereço do endpoint, a porta UDP, o firewall da nuvem, a regra do UFW e as chaves. Se houver handshake mas não houver acesso à internet, verifique o encaminhamento IP, o nome da interface pública, as regras de NAT e o DNS.

Dá para colocar o WireGuard atrás do Nginx?

O documentação do módulo stream do NGINX explica como o NGINX pode retransmitir UDP de uma porta para outra, ou seja, encaminhar UDP/80 ou UDP/443 para o WireGuard em UDP/51820. Isso é um relay UDP, não um proxy reverso HTTP. Não converte o WireGuard em TCP ou HTTPS, nem faz o protocolo parecer tráfego web comum.

Na maioria das implantações, mudar o ListenPort do WireGuard e abrir a porta UDP correspondente é mais simples do que acrescentar o NGINX. Se uma rede bloqueia UDP por completo ou usa inspeção profunda de pacotes, um relay UDP no NGINX não resolve o problema. A documentação de limitações do WireGuard afirma que a ofuscação está fora do escopo do protocolo.

Conectar o VPS a uma rede doméstica

A VPS hub relaying a roaming laptop and phone to a home gateway over WireGuard, with full-tunnel 0.0.0.0/0 and split-tunnel 192.168.1.0/24 paths, PersistentKeepalive on the home peer, and a warning that two overlapping 192.168.1.0/24 networks cannot route cleanly

Um VPS pode atuar como hub entre um cliente em trânsito e um dispositivo dentro da sua casa. O peer do lado da casa inicia uma conexão WireGuard de saída até o VPS, o que dispensa um IP público residencial. Configure o PersistentKeepalive nesse peer doméstico quando ele estiver atrás de NAT.

Alcançar toda a LAN doméstica exige mais do que acrescentar um peer. A entrada de peer no VPS correspondente ao gateway doméstico precisa incluir a sub-rede de casa em AllowedIPs, por exemplo 192.168.1.0/24. Um cliente remoto com túnel completo (AllowedIPs = 0.0.0.0/0) já manda esse tráfego pelo VPS; adicione 192.168.1.0/24 no cliente apenas se você usar túnel dividido. O gateway doméstico também precisa encaminhar tráfego entre o WireGuard e a LAN. Acrescente uma rota no roteador de casa ou uma regra de NAT cuidadosamente delimitada no gateway doméstico. Verifique antes se há sobreposição: um cliente conectado a outra rede 192.168.1.0/24 não consegue rotear as duas redes de forma limpa sem renumerar ou recorrer a um roteamento por políticas mais avançado.

WireGuard auto-hospedado x VPN comercial

Hospedar por conta própria muda quem opera a VPN, mas não melhora a anonimidade automaticamente. Um VPS pessoal lhe dá um IP de saída estável, fácil de associar a uma rede de hospedagem. Um serviço comercial costuma oferecer endereços de saída compartilhados e troca fácil de localização, mas você depende das políticas, da operação e das auditorias independentes que ele publica.

O WireGuard em si é leve, e um VPS pequeno costuma ser um ponto de partida razoável para uma pessoa e alguns dispositivos. Não trate um número fixo de RAM ou vCPU como garantia de taxa de transferência. Teste com a sua contagem real de dispositivos, a sua região, o tamanho dos pacotes e a banda esperada, e então redimensione se a saturação de CPU, a perda de pacotes ou a latência virarem o limite.

Escolha a auto-hospedagem quando um IP de saída pessoal estável, o acesso remoto ou o controle sobre o servidor pesarem mais do que a escolha de localidade e a comodidade. Escolha uma VPN comercial quando você quiser muitos países, saídas compartilhadas, amplo suporte a dispositivos de consumo e outra pessoa cuidando das falhas.

Fator de decisãoWireGuard auto-hospedadoVPN comercial
Modelo de custoUm servidor mais o seu tempo de administraçãoAssinatura, muitas vezes com desconto em prazos longos
Localidades de saídaUma localidade por servidorMuitas localidades disponíveis no aplicativo
ConfiguraçãoVocê configura chaves, roteamento, regras de firewall e clientesInstalar o aplicativo e fazer login
ManutençãoVocê aplica patches, monitora, faz backup e resolve problemasO provedor opera o serviço
Modelo de privacidadeVocê controla o servidor, mas o provedor de hospedagem ainda consegue observar metadadosVocê depende das políticas do provedor e das auditorias independentes que ele publica
Melhor correspondênciaIP de saída pessoal estável, acesso remoto e controle da infraestruturaTroca de localidade, pouca manutenção e amplo suporte a dispositivos

Conclusão

Uma implantação confiável do WireGuard se resume a cinco coisas: chaves privadas protegidas, endereços de peer exclusivos, AllowedIPs corretos, encaminhamento e NAT funcionando, e uma regra de firewall para a porta UDP de escuta. Verifique tanto o handshake quanto o endereço público de saída antes de confiar no túnel, e mantenha o VPS atualizado depois da implantação.

Se você quiser montar o servidor manualmente, comece com um soluções Cloudzy Ubuntu VPS. Se preferir pular as etapas de instalação, use a implantação de WireGuard com um clique da Cloudzy e vá direto para a configuração do cliente e a verificação.

Perguntas frequentes

Por que o WireGuard mostra um peer mas nenhum handshake?

Uma entrada de peer só prova que a configuração foi carregada. A ausência de handshake normalmente significa que o cliente não está alcançando o servidor ou que as chaves não conferem. Verifique o Endpoint do cliente, o IP público do servidor, a porta UDP/51820 tanto no firewall do provedor quanto no UFW, e as chaves públicas dos dois lados. Gere tráfego a partir do cliente antes de checar, porque o WireGuard fica quieto quando está ocioso.

Por que o túnel conecta mas o acesso à internet para?

Um handshake sem acesso à internet normalmente aponta para roteamento, não para criptografia. Verifique o net.ipv4.ip_forward, confirme o nome da interface pública na regra de NAT, cheque as regras FORWARD e teste o DNS separadamente da conectividade IP pura. Confirme também que o AllowedIPs no cliente corresponde ao desenho de túnel completo ou dividido que você pretendia.

Dois dispositivos podem compartilhar uma mesma configuração do WireGuard?

Não. Dê a cada dispositivo sua própria chave privada, chave pública e endereço de túnel /32. Reutilizar uma configuração causa conflitos de endpoint e de rota, e impede que você revogue um dispositivo perdido sem desconectar o outro.

Todo cliente precisa de PersistentKeepalive?

Não. Adicione quando um peer atrás de NAT precisar manter seu mapeamento aberto durante períodos ociosos, o que é comum em celulares, gateways domésticos e algumas redes restritivas. Deixe de fora quando o peer se comunica com frequência ou não precisa ser alcançado pelo outro lado enquanto está ocioso.

Partilhar

Mais do blogue

Continue a ler.

Pronto para implantar? A partir de $2,48/mês.

Cloud independente, desde 2008. AMD EPYC, NVMe, 40 Gbps. Reembolso em 14 dias.