Segurança

Servidor WireGuard: guia de instalação e configuração para Linux e Windows

12 de maio de 2026·7 min leitura

O que é WireGuard?

WireGuard é um protocolo VPN de código aberto integrado ao kernel Linux desde a versão 5.6 (disponível também no Windows, macOS, Android e iOS). Seu design é minimalista: menos de 4.000 linhas de código, criptografia moderna (Curve25519, ChaCha20-Poly1305, BLAKE2s) e configuração reproduzível baseada em pares de chaves. Ao contrário do OpenVPN ou IPsec, não requer infraestrutura de certificados e o handshake leva milissegundos.

Por que usá-lo em IoT?

Gateways IoT implantados em campo se conectam por redes de operadora com NAT ou CGNAT — não têm IP pública fixa e não são diretamente acessíveis. Com WireGuard, cada dispositivo estabelece um túnel criptografado para um servidor central com IP estático. O sistema central vê todos os gateways como se estivessem na mesma rede local, sem abrir portas para o exterior.

O WireGuard permite estabelecer túneis VPN cifrados com footprint mínimo e configuração reproduzível. Este guia cobre a instalação e configuração de um servidor WireGuard no Linux (Ubuntu/Debian) e no Windows 10/11: geração de chaves, arquivo wg0.conf, ativação do serviço e verificação do handshake com o peer. O mesmo servidor suporta múltiplos peers simultâneos sem degradação de desempenho.

Visualização · Handshake WireGuard — servidor ↔ peer cliente

Arquitetura do túnel

O túnel WireGuard é ponto-a-ponto: um servidor central (sua instância na AWS, GCP ou on-premise) atua como peer estático com IP público fixo, e o peer remoto é o cliente dinâmico que inicia a conexão. Isso cria um canal de acesso criptografado para configuração remota, diagnóstico ou qualquer serviço que exija comunicação segura entre os dois extremos.

ComponentePapel WireGuardIP do túnel (exemplo)
Servidor VPN (Linux / Windows)Peer estático (ListenPort ativo)10.8.0.1/24
Peer / cliente remotoPeer dinâmico (inicia conexão)10.8.0.2/32

Passo 1 — Instalar WireGuard no servidor

Linux (Ubuntu / Debian)

Em um servidor Ubuntu 22.04 ou Debian 12 (recomendado):

sudo apt update && sudo apt install -y wireguard
sudo modprobe wireguard   # carrega o módulo do kernel

Verifique se o módulo está disponível:

lsmod | grep wireguard
# wireguard              90112  0

Windows 10 / 11

Baixe o instalador oficial em wireguard.com/install ou via winget:

# Opção A — winget (Windows 10 v1709+ / Windows 11)
winget install WireGuard.WireGuard

# Opção B — instalador gráfico
# Baixe o .msi em wireguard.com/install e execute como Administrador

Verifique se wg.exe está disponível abrindo o PowerShell ou CMD:

wg --version
# wireguard-windows v0.5.3

Passo 2 — Gerar par de chaves no servidor

Linux (Ubuntu / Debian)

# Gera a chave privada do servidor
wg genkey | sudo tee /etc/wireguard/server_private.key
# Deriva a chave pública
sudo cat /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key
sudo chmod 600 /etc/wireguard/server_private.key

Guarde a chave pública do servidor em local seguro — você precisará compartilhá-la com cada peer que se conectar.

Windows 10 / 11

O wg.exe é instalado em C:\Program Files\WireGuard\. Execute o PowerShell como Administrador:

cd "C:Program FilesWireGuard"

# Gera a chave privada do servidor
.wg.exe genkey | Set-Content server_private.key

# Deriva a chave pública
Get-Content .server_private.key | .wg.exe pubkey | Set-Content server_public.key

Alternativa GUI: no app WireGuard clique em 'Add Tunnel' → 'Add empty tunnel'. O app gera o par de chaves automaticamente e exibe a chave pública. Basta adicionar Address, ListenPort e os blocos [Peer].

Passo 3 — Criar o arquivo de configuração do servidor

Linux (Ubuntu / Debian)

Crie /etc/wireguard/wg0.conf com o seguinte conteúdo (substitua os valores entre < >): (/etc/wireguard/wg0.conf)

[Interface]
PrivateKey = <conteúdo de server_private.key>
Address = 10.8.0.1/24
ListenPort = 51820

# Habilita IP forwarding para roteamento entre peers
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# Index AMI gateway IoT / embedded device — unidade 001
PublicKey = <chave pública do Index AMI — gerada no Passo 4>
AllowedIPs = 10.8.0.2/32

Nota: a porta 51820 UDP deve estar aberta no firewall do servidor. Na AWS: regra de entrada UDP 51820 no Security Group. Na GCP: regra de firewall VPC com protocolo UDP e porta 51820.

Windows 10 / 11

O formato de wg0.conf é idêntico ao do Linux. O Windows não precisa das linhas PostUp/PostDown (roteamento manual se necessário):

[Interface]
PrivateKey = <contenido de server_private.key>
Address = 10.8.0.1/24
ListenPort = 51820

[Peer]
PublicKey = <clave pública del peer — generada en Paso 4>
AllowedIPs = 10.8.0.2/32

Importe o arquivo como serviço Windows (PowerShell ou CMD como Administrador):

# Instala o túnel como serviço Windows
wireguard /installtunnelservice "C:WireGuardwg0.conf"
# O serviço inicia automaticamente com o nome: WireGuardTunnel$wg0

Abra a porta UDP 51820 no Firewall do Windows (PowerShell como Administrador):

New-NetFirewallRule -DisplayName "WireGuard VPN" `
  -Direction Inbound -Protocol UDP `
  -LocalPort 51820 -Action Allow

Passo 4 — Adicionar o peer ao servidor

Quando o peer enviar sua chave pública, adicione um bloco [Peer] ao final do arquivo wg0.conf do servidor:

[Peer]
# Nome descritivo do peer (comentário opcional)
PublicKey = <chave pública do peer>
AllowedIPs = 10.8.0.2/32

Recarregue a configuração sem reiniciar o serviço:

Linux (Ubuntu / Debian)

sudo wg syncconf wg0 <(wg-quick strip wg0)

Windows 10 / 11

Abra a GUI do WireGuard → selecione o túnel wg0 → edite o arquivo e adicione o bloco [Peer] → aplique as alterações.

Passo 5 — Levantar a interface e verificar o handshake

Linux (Ubuntu / Debian)

No servidor:

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0

Verifique o estado da interface:

sudo wg show

# Saída esperada:
interface: wg0
  public key: <chave pública do servidor>
  private key: (hidden)
  listening port: 51820

peer: <chave pública do Index AMI>
  endpoint: <IP 4G do Index AMI>:XXXXX
  allowed ips: 10.8.0.2/32
  latest handshake: 3 seconds ago
  transfer: 1.23 KiB received, 2.45 KiB sent

O campo latest handshake com um valor recente (menos de 3 minutos) confirma que o túnel está ativo. Se não aparecer, verifique a seção de resolução de problemas.

Windows 10 / 11

Se você instalou o serviço com /installtunnelservice, o túnel inicia automaticamente. Para controle manual pelo PowerShell:

sc start WireGuardTunnel$wg0
# o para detenerlo:
sc stop WireGuardTunnel$wg0

Alternativa GUI: abra o WireGuard pela bandeja do sistema ou menu Iniciar e ative o interruptor do túnel wg0.

Verifique o status do túnel com wg.exe (precisa estar no PATH ou use o caminho completo):

wg show
# interface: wg0
#   public key: ...
#   listening port: 51820
# peer: ...
#   latest handshake: 3 seconds ago

Passo 6 — Verificar conectividade de ponta a ponta

A partir do servidor, faça ping ao IP do túnel do Index AMI:

ping 10.8.0.2
# PING 10.8.0.2 (10.8.0.2): 56 data bytes
# 64 bytes from 10.8.0.2: icmp_seq=0 ttl=64 time=8.3 ms

Latência abaixo de 15 ms sobre LTE é normal. Se a sua aplicação de gestão rodar no mesmo servidor, já pode alcançar o peer diretamente via 10.8.0.2.

Resolução de problemas

SintomaCausa provávelSolução
Sem handshake após 2 minPorta UDP 51820 bloqueadaAbra UDP 51820 no firewall / security group do servidor
Handshake OK mas sem pingRotas ou AllowedIPs mal configuradosVerifique que AllowedIPs do peer inclua o IP destino
Túnel cai após 3–5 min sem tráfegoNAT 4G expira a sessão UDPGaranta PersistentKeepalive = 25 no peer Index AMI
Chave pública inválidaCaracteres cortados ao copiarA chave tem exatamente 44 caracteres base64; copie-a completa

Topologia em malha (múltiplos gateways)

Para implantações com mais de um Index AMI, adicione um bloco [Peer] adicional por unidade no wg0.conf do servidor. Cada Index AMI recebe um IP de túnel único (10.8.0.2, 10.8.0.3, …). O servidor atua como hub central — os gateways não precisam de visibilidade entre si.

[Peer]
# Index AMI gateway IoT / embedded device — unidade 002
PublicKey = <chave pública unidade 002>
AllowedIPs = 10.8.0.3/32

[Peer]
# Index AMI gateway IoT / embedded device — unidade 003
PublicKey = <chave pública unidade 003>
AllowedIPs = 10.8.0.4/32

Linux (Ubuntu / Debian)

Aplique as alterações em tempo real sem reiniciar o serviço:

sudo wg addconf wg0 /etc/wireguard/wg0.conf
# ou se adicionar o peer diretamente:
sudo wg set wg0 peer <public key> allowed-ips 10.8.0.3/32

Windows 10 / 11

No Windows, as alterações em tempo real com wg addconf não estão disponíveis diretamente. Para adicionar um peer, edite wg0.conf, pare o serviço com sc stop WireGuardTunnel$wg0 (ou pela GUI) e reinicie-o.

Próximos passos

Com o servidor ativo e o handshake verificado, o túnel cifrado está operacional. O peer remoto é acessível com segurança pelo seu IP de túnel de qualquer ponto da rede. Se o barramento RS485 do peer apresentar falhas de comunicação, consulte o guia de diagnóstico RS485 em campo.