Entrar ou criar conta

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.

WireGuard do zero a VPN corporativa segura
Ligado ao treinamento WireGuard do zero a VPN corporativa segura
Duração estimada
120 min
Passos
11
Validações
4
Objetivo

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

ItemRequisito, 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
WireGuardGPLv2 · a versão estável atual
iptablesGPLv2 · a versão estável atual
iproute2GPLv2 · a versão estável atual

Roteiro

  1. 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.

  2. Instalar o WireGuard

    Instale o WireGuard em ambas as máquinas. O WireGuard é o motor da VPN.

    sudo apt update && sudo apt install wireguard -y

    O que você deve ver: WireGuard instalado sem erros.

  3. 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 > publickey

    O que você deve ver: Arquivos 'privatekey' e 'publickey' criados em cada máquina.

  4. 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 = 25

    O que você deve ver: Arquivo /etc/wireguard/wg0.conf criado em GW1.

  5. 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 = 25

    O que você deve ver: Arquivo /etc/wireguard/wg0.conf criado em GW2.

  6. Ativar o encaminhamento de IP

    Para rotear pacotes entre as redes privadas, habilite o forwarding.

    sudo sysctl -w net.ipv4.ip_forward=1

    O que você deve ver: net.ipv4.ip_forward = 1

  7. 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 MASQUERADE

    O que você deve ver: Regras aplicadas sem erros.

  8. Subir a interface WireGuard

    Ative a interface wg0 em ambas as máquinas.

    sudo wg-quick up wg0

    O que você deve ver: Interface wg0 ativa, sem mensagens de erro.

  9. 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.

  10. 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.

  11. Verificar status do WireGuard

    Confirme que o túnel está estabelecido e há troca de pacotes.

    sudo wg show

    O que você deve ver: Peers listados, com contadores de transferência de dados crescentes.

Como saber que funcionou

TesteComandoCritério
Ping entre hosts finaisping 10.10.2.10Respostas de ping recebidas.
Verificar interface wg0ip addr show wg0Interface wg0 com IP atribuído.
Checar status do túnelsudo wg showPeers listados e tráfego transmitido.
Traceroute entre hoststraceroute 10.10.2.10Pacotes passando pelo gateway e túnel.

Troubleshooting

SintomaCausa provávelCorreção
Ping não responde entre hostsRoteamento ou firewall incorretoVerifique rotas e regras iptables em ambos os gateways
wg-quick up wg0 retorna erro de chaveChave privada ou pública mal configuradaRevise os arquivos de chave e configuração
wg show não exibe peersConfiguração de peer ausente ou endpoint erradoConfirme blocos [Peer] e IP/porta do endpoint
Sem tráfego no túnelAllowedIPs restritivo ou NAT faltandoAjuste 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

Checklist final

Referências

  1. ArchWiki: WireGuard