Resposta rápida
Como configuro o WireGuard em um VPS?
Para configurar o WireGuard em um VPS, instale o pacote wireguard, gere um par de chaves para o servidor e um por dispositivo, e escreva o /etc/wireguard/wg0.conf. Depois ative o IP forwarding e o NAT, inicie o wg-quick@wg0 e importe o arquivo do cliente. Na OffshoreKVM, um VPS KVM com Debian 12 ou Ubuntu 24.04 custa a partir de $3.08 por 30 dias. Sem KYC, pague com cripto.
O que preciso antes de começar?
| Servidor | Um VPS KVM com kernel próprio. OffshoreKVM KVM 1 (1 vCPU, 1 GB RAM, 20 GB NVMe, 2 TB de tráfego) é suficiente para uma residência |
|---|---|
| Acesso | Acesso root por SSH com a sua própria chave pública; o login por senha fica desativado por padrão. Os comandos abaixo rodam como root |
| Sistema | Debian 12 ou Ubuntu 24.04 LTS; ambos estão entre as imagens da OffshoreKVM |
| Pacotes | wireguard e iptables, do repositório da própria distribuição |
| Porta | UDP 51820, a porta usada nos exemplos da documentação do WireGuard |
| Endereços de túnel | 10.8.0.0/24: servidor 10.8.0.1, primeiro dispositivo 10.8.0.2 |
| Apps para clientes | WireGuard para Windows, macOS, Android, iOS e Linux, listado em wireguard.com |
| Preço | KVM 1 $3.08, KVM 2 $4.92, KVM 4 $8.25, KVM 8 $13.50, KVM 16 $20.62 a cada 30 dias. Sem KYC, somente cripto |
Como configurar um servidor WireGuard, passo a passo?
Nove passos, de uma VPS Debian 12 ou Ubuntu 24.04 recém-instalada até um celular que navega por ela.
Conectar e atualizar
Faça login com
ssh root@YOUR_VPS_IPe depois rodeapt update && apt upgrade -y.Instalar WireGuard e iptables
Rode
apt install -y wireguard iptables. As ferramentas do WireGuard apenas recomendam um pacote de firewall, e as regras de NAT abaixo usamiptables.Gerar as chaves
Rode
cd /etc/wireguard && umask 077. Faça o servidor formar par comwg genkey | tee server.key | wg pubkey > server.pub. Faça o dispositivo formar par comwg genkey | tee phone.key | wg pubkey > phone.pub.Descobrir a interface pública
Rode
ip route show default. A palavra depois dedev, comoeth0ouens3, é a interface de que a regra de NAT precisa.Escrever o arquivo do servidor
Crie
/etc/wireguard/wg0.confcom a chave privada do servidor, a porta de escuta, as regras de NAT e um bloco[Peer]por dispositivo, como mostrado abaixo.Ativar o encaminhamento de IP
Rode
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-wireguard.conf && sysctl --system. Sem isso, a VPS descarta o tráfego do túnel.Iniciar o túnel na inicialização
Rode
systemctl enable --now wg-quick@wg0e depoiswg showpara ver a interface, a porta e o peer.Criar e importar o arquivo do cliente
Escreva
phone.confcomo mostrado abaixo. Importe-o no app WireGuard ou exiba-o como QR code comqrencode -t ansiutf8 < /etc/wireguard/phone.conf.Testar o túnel
Ative o túnel e abra qualquer site. No servidor,
wg showagora mostra umlatest handshakerecente, e os sites veem o endereço da VPS.
O que vai no wg0.conf do servidor?
O arquivo do servidor contém a chave privada do servidor, seu endereço de túnel, a porta de escuta, as regras de NAT e um bloco [Peer] por dispositivo. O heredoc abaixo preenche as duas chaves a partir dos arquivos criados no passo 3. Substitua eth0 pela interface do passo 4 antes de rodar.
O WireGuard identifica cada dispositivo pela sua chave pública: um pacote só é aceito se for assinado por uma chave conhecida e vier do AllowedIPs desse peer.
cd /etc/wireguard
cat > wg0.conf <<EOF
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = $(cat server.key)
# Forward tunnel traffic and hide it behind the VPS address (eth0 = your interface)
PostUp = iptables -I FORWARD -i %i -j ACCEPT
PostUp = iptables -I FORWARD -o %i -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
PostUp = iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -D FORWARD -o %i -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
[Peer]
# phone
PublicKey = $(cat phone.pub)
AllowedIPs = 10.8.0.2/32
EOF
chmod 600 wg0.conf%i é substituído pelo nome da interface, wg0, quando wg-quick executa as linhas PostUp e PostDown. MASQUERADE reescreve cada pacote para o endereço da interface de saída. O manual do iptables prefere SNAT --to-source YOUR_VPS_IP para um endereço estático; ambos funcionam aqui.
O que vai na configuração do cliente?
O arquivo do cliente contém a chave privada do dispositivo, seu endereço de túnel, um servidor DNS e a chave pública e o endereço do servidor. AllowedIPs = 0.0.0.0/0, ::/0 envia todo o tráfego para o túnel, IPv6 incluído, então nada vaza para fora dele. Com o servidor somente IPv4 acima, o tráfego IPv6 simplesmente para, e a maioria dos apps volta para IPv4.
cd /etc/wireguard
cat > phone.conf <<EOF
[Interface]
PrivateKey = $(cat phone.key)
Address = 10.8.0.2/32
DNS = 9.9.9.9
[Peer]
PublicKey = $(cat server.pub)
Endpoint = YOUR_VPS_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
EOF
# Phone: scan this QR code in the WireGuard app
apt install -y qrencode
qrencode -t ansiutf8 < phone.conf
# Linux computer: copy phone.conf to /etc/wireguard/, then
# wg-quick up phoneUse qualquer resolvedor DNS de sua confiança no lugar de 9.9.9.9. Em um cliente Linux, a linha DNS precisa de resolvconf ou openresolv, que o Debian lista como pacotes sugeridos. Apague phone.key e phone.conf do servidor depois que o dispositivo tiver sua cópia.
Preciso abrir uma porta no firewall?
Somente se um firewall rodar na VPS: ele precisa liberar a entrada UDP 51820 e deixar o tráfego do túnel passar. Com ufw, rode ufw allow 51820/udp. As regras FORWARD em wg0.conf são inseridas no topo da chain, à frente da política padrão DROP que ufw define para o tráfego roteado. Mantenha a porta 22 aberta antes de ativar qualquer firewall, ou você se tranca para fora.
Como adiciono outro dispositivo?
Cada dispositivo recebe seu próprio par de chaves, seu próprio endereço de túnel e seu próprio bloco [Peer]. Rode wg genkey | tee laptop.key | wg pubkey > laptop.pub em /etc/wireguard. Adicione um [Peer] com PublicKey definido para a nova chave pública e AllowedIPs = 10.8.0.3/32. Aplique sem derrubar os outros dispositivos: systemctl reload wg-quick@wg0, que executa wg syncconf. Monte laptop.conf como phone.conf, com Address = 10.8.0.3/32.
Como roteio IPv6 pelo túnel?
Adicione um intervalo IPv6 privado dos dois lados, encaminhe-o e faça NAT como no IPv4. Escolha um intervalo local único aleatório, como fd42:42:42::/64.
- Servidor:
Address = 10.8.0.1/24, fd42:42:42::1/64, e no peerAllowedIPs = 10.8.0.2/32, fd42:42:42::2/128. - NAT: copie as três linhas
PostUpePostDowncomip6tablese o intervalo IPv6. - Cliente:
Address = 10.8.0.2/32, fd42:42:42::2/128. - Encaminhamento: adicione
net.ipv6.conf.all.forwarding=1em/etc/sysctl.d/99-wireguard.conf.
Verifique uma coisa antes. Com o encaminhamento ativado, o kernel Linux ignora anúncios de roteador a menos que accept_ra seja 2. Se sua VPS aprende sua rota IPv6 dessa forma, defina net.ipv6.conf.eth0.accept_ra=2 no mesmo arquivo.
Por que o túnel conecta, mas nenhum site carrega?
O handshake funciona, mas o tráfego para no servidor, quase sempre por um de quatro motivos.
- O encaminhamento está desligado:
sysctl net.ipv4.ip_forwardprecisa mostrar1. - Interface errada na regra de NAT: compare
eth0emwg0.confcomip route show default. - Nenhum handshake: o IP ou a porta do endpoint está errado, ou um firewall bloqueia a UDP 51820.
- Os nomes não resolvem: o cliente não tem uma linha
DNSfuncionando, ou faltaresolvconfem um cliente Linux.
Depois de cada ajuste, rode systemctl restart wg-quick@wg0 e teste de novo.
Qual VPS devo usar para WireGuard?
Qualquer VPS KVM com um endereço IPv4 funciona; o plano depende de quanto tráfego passa pelo túnel. A página sobre qual é o melhor VPS offshore para WireGuard compara planos, cotas e localizações. Os preços de cada plano estão em quanto custa um VPS offshore na OffshoreKVM. Antes de confiar nele para privacidade, leia o que seu provedor de VPS pode ver no seu servidor.
WireGuard em um VPS: FAQ
Qual porta o WireGuard usa?
O WireGuard não tem porta fixa. ListenPort é opcional e, sem ele, o servidor escolhe uma porta aleatória. UDP 51820 é a porta nos exemplos oficiais, então a maioria dos guias a usa.
Preciso do PersistentKeepalive?
Normalmente não. O manual do wg diz que a maioria dos usuários não precisará. Adicione PersistentKeepalive = 25 ao [Peer] do cliente apenas se o servidor precisar alcançar um dispositivo que está atrás de NAT e fica ocioso.
Este guia funciona no Debian 13 ou Ubuntu 22.04?
Sim. Ambos trazem o WireGuard em seus repositórios padrão, então os mesmos comandos funcionam. Apenas versões do Debian anteriores ao Bullseye precisam de backports, conforme a página de instalação do WireGuard.
O host do meu VPS pode ver o que eu faço pelo túnel?
O túnel termina no VPS, então o tráfego sai dele como tráfego normal de internet; o HTTPS mantém o conteúdo da página criptografado. Sem logs: não guardamos logs de conexão, logs de tráfego nem endereços IP de visitantes ou clientes, no site, no painel ou no VPS. O guia sobre se você precisa de um VPS offshore ou de uma VPN avalia os prós e contras.
Quanto tempo até meu VPS ficar pronto?
Uma pessoa cria o seu VPS assim que o pagamento é confirmado, e ele fica pronto minutos depois, nunca mais de uma hora após essa confirmação; o seu painel mostra o status e, quando o VPS está rodando, o endereço IP. A configuração do WireGuard em si leva alguns minutos depois que você consegue fazer login.
Obtenha um VPS para seu servidor WireGuard
Debian 12 ou Ubuntu 24.04 em KVM, a partir de $3.08 por 30 dias. Sem KYC, somente cripto.
Fontes (10)
- Instalação — WireGuard (read 2026-10-29)
- Início rápido — WireGuard (read 2026-10-29)
- manual wg(8) — wireguard-tools (read 2026-10-29)
- manual wg-quick(8) — wireguard-tools (read 2026-10-29)
- [email protected] — wireguard-tools (read 2026-10-29)
- Pacote wireguard-tools (bookworm) — Debian (read 2026-10-29)
- IP Sysctl (ip_forward, forwarding, accept_ra) — The Linux Kernel documentation (read 2026-10-29)
- iptables-extensions(8): MASQUERADE, SNAT, conntrack — Debian manpages (read 2026-10-29)
- sysctl(8) — Debian manpages (read 2026-10-29)
- qrencode(1) — Debian manpages (read 2026-10-29)