Wireguard é um protocolo de VPN relativamente recente que foca em segurança e performance. Utilizando de diversos recursos e criptografia de ponta para melhor encriptar seus pacotes sem sacrificar a velocidade.
Nesse caso iremos utilizar uma rede virtual com ip 192.168.2.1/24 como exemplo.
Além do servidor iremos fazer algumas configurações no cliente, então é importante notar quando parte deste guia for “No Servidor” ou “No Cliente”
Instalação
No Servidor
Atualize os repositórios e instale o Wireguard e o iptables em seu servidor:
apt update
apt install wireguard iptables
Habilite o IPv4 Forwarding tirando o comentário (#) na seguinte linha no arquivo /etc/sysctl.d/99-sysctl.conf
net.ipv4.ip_forward=1
Agora iremos aplicar as mudanças
sysctl -w net.ipv4.ip_forward=1
No Cliente
Agora no cliente vamos precisar das Ferramentas do Wireguard
apt install wireguard-tools
E então, criaremos chaves públicas e privadas para sua máquina:
bash -c "umask 077 ; wg genkey > /etc/wireguard/client_priv.key"
bash -c "wg pubkey < /etc/wireguard/client_priv.key > /etc/wireguard/client_pub.key"
Voltando para o Servidor
Vamos agora gerar chaves públicas e privadas para o servidor
umask 077 ; wg genkey > /etc/wireguard/server_priv.key
wg pubkey < /etc/wireguard/server_priv.key > /etc/wireguard/server_pub.key
Também criaremos um arquivo de configuração em /etc/wireguard/wg0.conf, onde wg será o nome sua interface.
Você pode colocar o que quiser, seja casa0.conf ou trampo.conf, o importante é lembrar para depois.
Importante mencionar que você deve trocar eth0 nas Regras do Firewall pela sua interface de rede de preferência.
[Interface]
Address = 192.168.2.1/24
ListenPort = 51820
PrivateKey = (CHAVE PRIVADA DO SERVIDOR VAI AQUI)
# Regras de Firewall
# Lembre de trocar *eth0* pela sua interface de rede!
# Na dúvida, cheque pelo comando: `ip a`
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# Informações do Cliente aqui
PublicKey = (CHAVE PÚBLICA DO CLIENTE VAI AQUI)
# Rota do cliente aqui
# Pode ser outro número em vez de 69,
# mas é importante estar na mesma rede 192.168.2.0
# que você decidiu anteriormente
AllowedIPs = 192.168.2.69/32
Preste bastante atenção ao substituir as chaves privadas e públicas tanto do cliente quanto do servidor.
Se você está seguindo o guia minuciosamente, a chave privada de seu servidor deve estar em /etc/wireguard/server_priv.key
Caso você queira adicionar mais clientes, nesta rede de exemplo poderiamos utilizar até 254 clientes. Para fazê-lo é só copiar a parte [Peer] e substituir a PublicKey e AllowedIPs conforme necessário. Não mude o 32, já que isso garante que cada túnel será isolado.
Agora iremos habilitar e iniciar o serviço do Wireguard.
systemctl enable --now wg-quick@wg0.service
Lembrando que o wg0 é o nome da interface que você colocou no arquivo de configuração.
Novamente no Cliente
Crie outra configuração em /etc/wireguard/vpndaora.conf:
[Interface]
Address = 192.168.2.69/24
PrivateKey = (CHAVE PRIVADA DO CLIENTE AQUI)
# Seu servidor de DNS preferido aqui
# DNS = 9.9.9.9
[Peer]
PublicKey = (CHAVE PÚBLICA DO SERVIDOR AQUI)
# Endpoint
# Pode tanto ser um domínio ou um IP que aponte para seu servidor.
Endpoint = (IP DO SEU SERVIDOR AQUI):51820
# Rota do servidor aqui
AllowedIPs = 0.0.0.0/0, ::/0
Preencha suas informações onde necessário, e utilize o IP público do seu servidor, não o da rede do wireguard.
Inicie o Wireguard em seu cliente:
sudo wg-quick up myvpn
Se tudo estiver configurado corretamente, você deverá conseguir pingar o 192.168.2.1 (ou o IP que você configurou a interface do wireguard), você pode estar atrás de uma rede corporativa, então vamos precisar utilizar um Túnel de WebSocket para camuflar nosso tráfego.
Service