Laboratório em bancada
Laboratório: VPN site-to-site WireGuard entre duas redes privadas
Você implementará uma VPN site-to-site usando WireGuard entre duas máquinas Linux em redes privadas distintas. Em cerca de 2 horas, terá túneis funcionais, roteamento e validação de tráfego criptografado.

- Duração estimada
- 120 min
- Passos
- 11
- Validações
- 4
Demonstrar, na prática, como criar uma VPN site-to-site segura entre dois pontos usando apenas software livre. O laboratório cobre geração de chaves, configuração dos peers, roteamento entre redes privadas e validação de conectividade. O foco é entender cada etapa e visualizar o tráfego protegido pelo WireGuard.
Topologia
Duas máquinas Linux (VMs ou físicas), cada uma em uma rede privada distinta (ex: 10.10.1.0/24 e 10.10.2.0/24), conectadas via uma rede pública simulada (ex: 192.168.100.0/24). Cada máquina atuará como gateway de sua rede e estabelecerá um túnel WireGuard para a outra.
Rede1 (10.10.1.0/24) Rede2 (10.10.2.0/24)
[HostA]---[GW1]====Internet====[GW2]---[HostB]
|192.168.100.1 192.168.100.2|
|wg0: 10.100.1.1 wg0: 10.100.2.1|Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| Máquina virtual ou física (GW1) | 1 vCPU, 512MB RAM, 1 interface para rede privada, 1 interface para rede pública |
| Máquina virtual ou física (GW2) | 1 vCPU, 512MB RAM, 1 interface para rede privada, 1 interface para rede pública |
| WireGuard | GPLv2 · a versão estável atual |
| iptables | GPLv2 · a versão estável atual |
| iproute2 | GPLv2 · a versão estável atual |
Roteiro
- Preparar as máquinas e interfaces
Garanta que GW1 e GW2 tenham duas interfaces de rede: uma para a rede privada e outra para a rede pública (simulada).
O que você deve ver: Ambas as máquinas acessíveis via SSH e com conectividade entre as interfaces públicas.
- Instalar o WireGuard
Instale o WireGuard em ambas as máquinas. O WireGuard é o motor da VPN.
sudo apt update && sudo apt install wireguard -yO que você deve ver: WireGuard instalado sem erros.
- Gerar pares de chaves
Cada máquina precisa de um par de chaves pública/privada para autenticação.
wg genkey | tee privatekey | wg pubkey > publickeyO que você deve ver: Arquivos 'privatekey' e 'publickey' criados em cada máquina.
- Configurar a interface WireGuard (GW1)
Crie o arquivo de configuração do WireGuard para GW1, definindo IP, porta, chave privada e peer remoto.
[Interface] Address = 10.100.1.1/24 ListenPort = 51820 PrivateKey = <chave_privada_GW1> [Peer] PublicKey = <chave_publica_GW2> AllowedIPs = 10.100.2.1/32,10.10.2.0/24 Endpoint = 192.168.100.2:51820 PersistentKeepalive = 25O que você deve ver: Arquivo /etc/wireguard/wg0.conf criado em GW1.
- Configurar a interface WireGuard (GW2)
Repita a configuração para GW2, invertendo os papéis das chaves e IPs.
[Interface] Address = 10.100.2.1/24 ListenPort = 51820 PrivateKey = <chave_privada_GW2> [Peer] PublicKey = <chave_publica_GW1> AllowedIPs = 10.100.1.1/32,10.10.1.0/24 Endpoint = 192.168.100.1:51820 PersistentKeepalive = 25O que você deve ver: Arquivo /etc/wireguard/wg0.conf criado em GW2.
- Ativar o encaminhamento de IP
Para rotear pacotes entre as redes privadas, habilite o forwarding.
sudo sysctl -w net.ipv4.ip_forward=1O que você deve ver: net.ipv4.ip_forward = 1
- Ajustar regras de firewall (iptables)
Permita tráfego do WireGuard e encaminhamento entre interfaces.
sudo iptables -A FORWARD -i wg0 -j ACCEPT sudo iptables -A FORWARD -o wg0 -j ACCEPT sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEO que você deve ver: Regras aplicadas sem erros.
- Subir a interface WireGuard
Ative a interface wg0 em ambas as máquinas.
sudo wg-quick up wg0O que você deve ver: Interface wg0 ativa, sem mensagens de erro.
- Adicionar rotas nas redes privadas
Configure as máquinas das redes privadas para enviar tráfego para a outra rede via seu respectivo gateway.
sudo ip route add 10.10.2.0/24 via 10.10.1.1 (em HostA) sudo ip route add 10.10.1.0/24 via 10.10.2.1 (em HostB)O que você deve ver: Rotas adicionadas sem erro.
- Testar conectividade entre hosts finais
Verifique se HostA (10.10.1.x) consegue pingar HostB (10.10.2.x) e vice-versa.
ping 10.10.2.10 (a partir de HostA)O que você deve ver: Respostas de ping bem-sucedidas.
- Verificar status do WireGuard
Confirme que o túnel está estabelecido e há troca de pacotes.
sudo wg showO que você deve ver: Peers listados, com contadores de transferência de dados crescentes.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Ping entre hosts finais | ping 10.10.2.10 | Respostas de ping recebidas. |
| Verificar interface wg0 | ip addr show wg0 | Interface wg0 com IP atribuído. |
| Checar status do túnel | sudo wg show | Peers listados e tráfego transmitido. |
| Traceroute entre hosts | traceroute 10.10.2.10 | Pacotes passando pelo gateway e túnel. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Ping não responde entre hosts | Roteamento ou firewall incorreto | Verifique rotas e regras iptables em ambos os gateways |
| wg-quick up wg0 retorna erro de chave | Chave privada ou pública mal configurada | Revise os arquivos de chave e configuração |
| wg show não exibe peers | Configuração de peer ausente ou endpoint errado | Confirme blocos [Peer] e IP/porta do endpoint |
| Sem tráfego no túnel | AllowedIPs restritivo ou NAT faltando | Ajuste AllowedIPs e regras de NAT |
Segurança e hardening
- Proteja os arquivos de chave privada (permissão 600)
- Restrinja o acesso SSH aos gateways
- Limite AllowedIPs ao mínimo necessário
- Desabilite o encaminhamento IP quando não estiver usando a VPN
- Monitore logs para tentativas de acesso não autorizado
