WireGuard é a maneira mais rápida e simples de construir um túnel criptografado entre dois servidores — uma VPN site-a-site para tráfego privado entre seus nós de origem e borda, replicação de banco de dados ou uma rede de gerenciamento. Este guia conecta dois servidores Hostfory (ou uma máquina Hostfory e seu escritório) com um túnel WireGuard persistente.
Pré-requisitos
- Dois servidores Linux com acesso root e IPs públicos (chame-os de Servidor A e Servidor B)
- Ubuntu 22.04 (WireGuard está no kernel desde a versão 5.6)
- Uma porta UDP aberta entre eles (padrão 51820)
Passo 1 — Instalar WireGuard em ambos os servidores
apt update
apt install -y wireguardPasso 2 — Gerar chaves em ambos os servidores
Em cada servidor, gere um par de chaves privada/pública:
cd /etc/wireguard
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
cat privatekey publickeyAnote a chave pública de cada servidor — você as usará para referência cruzada. Mantenha as chaves privadas em segredo.
Passo 3 — Configurar o Servidor A
Crie /etc/wireguard/wg0.conf no Servidor A:
[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_A_PRIVATE_KEY>
[Peer]
# Server B
PublicKey = <SERVER_B_PUBLIC_KEY>
Endpoint = <SERVER_B_PUBLIC_IP>:51820
AllowedIPs = 10.10.0.2/32
PersistentKeepalive = 2510.10.0.1/24 é o IP privado do túnel para o Servidor A. AllowedIPs significa "rotear o tráfego para 10.10.0.2 através deste peer."
Passo 4 — Configurar o Servidor B
Crie /etc/wireguard/wg0.conf no Servidor B (imagem espelhada):
[Interface]
Address = 10.10.0.2/24
ListenPort = 51820
PrivateKey = <SERVER_B_PRIVATE_KEY>
[Peer]
# Server A
PublicKey = <SERVER_A_PUBLIC_KEY>
Endpoint = <SERVER_A_PUBLIC_IP>:51820
AllowedIPs = 10.10.0.1/32
PersistentKeepalive = 25PersistentKeepalive = 25 mantém o túnel ativo através de NAT/firewalls, enviando um keepalive a cada 25 segundos — importante se qualquer um dos lados estiver atrás de NAT.
Passo 5 — Abrir o firewall
Em ambos os servidores, permita a porta UDP do WireGuard:
ufw allow 51820/udpPasso 6 — Ativar o túnel
Em ambos os servidores:
wg-quick up wg0
# Enable on boot
systemctl enable wg-quick@wg0Passo 7 — Testar a conectividade
Do Servidor A, faça ping no IP do túnel do Servidor B:
ping 10.10.0.2E verifique o status do túnel:
wg showVocê deve ver um handshake recente (latest handshake: X seconds ago) e os contadores de tráfego aumentando. Se o handshake nunca ocorrer, a porta UDP não está alcançando o peer — verifique os firewalls em ambas as extremidades e quaisquer ACLs de rede upstream.
Passo 8 — Roteamento de uma sub-rede inteira (opcional)
Para rotear todo o tráfego de uma sub-rede (por exemplo, a rede privada do Servidor B 192.168.50.0/24) através do túnel, expanda AllowedIPs no bloco peer do Servidor A:
AllowedIPs = 10.10.0.2/32, 192.168.50.0/24E habilite o encaminhamento de IP no Servidor B:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -pAdicione uma regra NAT no Servidor B para que o tráfego de retorno encontre seu caminho de volta:
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADECasos de uso comuns na infraestrutura Hostfory
- Link privado origem ↔ borda: mantenha o IP real da sua origem de streaming oculto; as bordas puxam o tráfego pelo túnel, apenas os IPs das bordas são públicos.
- Replicação de banco de dados: execute a replicação de Postgres/MySQL sobre o túnel criptografado em vez de expor a porta do DB publicamente.
- Rede de gerenciamento: SSH, monitoramento (Prometheus scraping) e backups sobre 10.10.0.0/24 — nunca sobre a interface pública.
- Malha Multi-PoP: conecte todos os quatro de nossos PoPs (Amsterdam, Kyiv, Warsaw, Miami) em uma malha WireGuard para tráfego privado inter-PoP.
Solução de problemas
- Handshake, mas sem ping: Incompatibilidade de
AllowedIPs. Cada peer deve listar o IP do túnel do outro. Um erro comum é0.0.0.0/0em ambos os lados, o que cria um loop de roteamento. - O túnel cai depois de um tempo: adicione ou diminua
PersistentKeepalive. As tabelas NAT expiram os fluxos UDP; o keepalive evita isso. - Funciona até a reinicialização: você esqueceu
systemctl enable wg-quick@wg0.
Próximos passos
Para uma configuração de gerenciamento mais robusta, restrinja o SSH para ouvir apenas no IP do túnel (ListenAddress 10.10.0.1 em sshd_config) para que a interface pública nunca exponha o SSH. Combine com Fail2ban para defesa em profundidade.