Pesquisar

Como Criar um Servidor WireGuard no Linux Usando um Script Shell

O WireGuard é um dos protocolos de VPN mais modernos e eficientes, oferecendo alta performance, segurança robusta e facilidade de configuração. Ele é amplamente utilizado para criação de redes privadas seguras, interligação de servidores e proteção de tráfego de dados em redes públicas.

Diferente de outras soluções como OpenVPN ou IPsec, o WireGuard é mais leve, rápido e fácil de configurar. Neste artigo do Blog Dolutech, vamos demonstrar como criar um servidor WireGuard no Linux utilizando um script Shell automatizado, facilitando a instalação e gerenciamento do serviço.

image 10
Wireguard

Benefícios do WireGuard

  • Simplicidade – Configuração mais fácil do que outras VPNs.
  • Alta Performance – Menor latência e melhor eficiência em comparação com OpenVPN e IPsec.
  • Segurança Avançada – Utiliza criptografia moderna como ChaCha20 e Poly1305.
  • Código Aberto e Auditável – Transparente e seguro para uso empresarial e pessoal.
  • Cross-Platform – Compatível com Linux, Windows, macOS, Android e iOS.

Requisitos para Criar um Servidor WireGuard

Antes de iniciar a instalação, verifique se seu ambiente atende aos seguintes requisitos:

  • Um servidor Linux (Ubuntu, Debian, AlmaLinux, Rocky Linux ou CentOS).
  • Acesso root ou um usuário com permissões sudo.
  • Firewall configurado para liberar a porta do WireGuard.

Script Shell Completo para Criar um Servidor WireGuard

Criamos um script automatizado para instalar e configurar um servidor WireGuard em minutos. O script realiza:

  1. Instalação do WireGuard
  2. Geração das Chaves do Servidor
  3. Configuração do Servidor WireGuard
  4. Configuração do Firewall (iptables)
  5. Criação Automática de Clientes VPN

Passo 1: Criando o Script

Copie e cole o código abaixo em um arquivo chamado install-wireguard.sh:

#!/bin/bash

# Configurações padrão
WG_INTERFACE="wg0"
WG_PORT=51820
WG_DIR="/etc/wireguard"
WG_CONFIG="$WG_DIR/$WG_INTERFACE.conf"
WG_CLIENTS_DIR="$WG_DIR/clients"
CLIENT_CONFIG_TEMPLATE="$WG_DIR/client-template.conf"
NET_IPV4="10.0.0.1/24"

# Instalação do WireGuard
echo "[+] Instalando WireGuard..."
apt update && apt install -y wireguard qrencode || dnf install -y wireguard-tools qrencode

# Criando diretório de configuração
mkdir -p "$WG_DIR" "$WG_CLIENTS_DIR"
chmod 700 "$WG_DIR"

# Gerando chaves do servidor
echo "[+] Gerando chaves do servidor..."
wg genkey | tee "$WG_DIR/server_private.key" | wg pubkey > "$WG_DIR/server_public.key"

SERVER_PRIVATE_KEY=$(cat "$WG_DIR/server_private.key")

# Criando arquivo de configuração do servidor
echo "[+] Criando configuração do WireGuard..."
cat > "$WG_CONFIG" <<EOL
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = $WG_PORT
PrivateKey = $SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i $WG_INTERFACE -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i $WG_INTERFACE -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
EOL

# Habilitando IP Forwarding
echo "[+] Configurando roteamento..."
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

# Ativando e iniciando o serviço WireGuard
echo "[+] Iniciando WireGuard..."
systemctl enable wg-quick@$WG_INTERFACE
systemctl start wg-quick@$WG_INTERFACE

echo "[✔] WireGuard instalado com sucesso!"
echo "Para adicionar um cliente, execute: ./add-client.sh <NOME_DO_CLIENTE>"

Passo 2: Criando Script para Adicionar Clientes

Agora, vamos criar um segundo script para adicionar clientes VPN automaticamente.

Crie o arquivo add-client.sh:

#!/bin/bash

if [ -z "$1" ]; then
    echo "Uso: $0 <NOME_DO_CLIENTE>"
    exit 1
fi

WG_INTERFACE="wg0"
WG_DIR="/etc/wireguard"
WG_CONFIG="$WG_DIR/$WG_INTERFACE.conf"
WG_CLIENTS_DIR="$WG_DIR/clients"
CLIENT_NAME="$1"
CLIENT_IP="10.0.0.$((100 + $(ls $WG_CLIENTS_DIR | wc -l)))"

echo "[+] Criando cliente $CLIENT_NAME..."

# Gerando chaves do cliente
wg genkey | tee "$WG_CLIENTS_DIR/$CLIENT_NAME.key" | wg pubkey > "$WG_CLIENTS_DIR/$CLIENT_NAME.pub"

CLIENT_PRIVATE_KEY=$(cat "$WG_CLIENTS_DIR/$CLIENT_NAME.key")
CLIENT_PUBLIC_KEY=$(cat "$WG_CLIENTS_DIR/$CLIENT_NAME.pub")

# Adicionando cliente ao servidor
echo "[+] Adicionando configuração ao servidor..."
echo -e "\n[Peer]\nPublicKey = $CLIENT_PUBLIC_KEY\nAllowedIPs = $CLIENT_IP/32" >> "$WG_CONFIG"
wg set "$WG_INTERFACE" peer "$CLIENT_PUBLIC_KEY" allowed-ips "$CLIENT_IP/32"

# Criando arquivo de configuração do cliente
cat > "$WG_CLIENTS_DIR/$CLIENT_NAME.conf" <<EOL
[Interface]
PrivateKey = $CLIENT_PRIVATE_KEY
Address = $CLIENT_IP/32
DNS = 8.8.8.8

[Peer]
PublicKey = $(cat "$WG_DIR/server_public.key")
Endpoint = $(curl -s ifconfig.me):51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
EOL

echo "[✔] Cliente $CLIENT_NAME criado com sucesso!"
echo "Arquivo de configuração: $WG_CLIENTS_DIR/$CLIENT_NAME.conf"

# Gerar QR Code para configuração rápida em dispositivos móveis
qrencode -t ansiutf8 < "$WG_CLIENTS_DIR/$CLIENT_NAME.conf"

Passo 3: Executando os Scripts

Após criar os arquivos, torne-os executáveis:

chmod +x install-wireguard.sh add-client.sh

Agora, execute o script de instalação do WireGuard:

sudo ./install-wireguard.sh

Para adicionar um cliente VPN, use:

sudo ./add-client.sh cliente1

Isso criará um arquivo de configuração em /etc/wireguard/clients/cliente1.conf que pode ser importado para o cliente WireGuard.

Conectando Clientes ao Servidor WireGuard

1. Configuração no Windows/Mac/Linux

  • Baixe e instale o WireGuard.
  • Importe o arquivo gerado cliente1.conf e conecte-se.

2. Configuração no Android/iOS

  • Instale o app WireGuard VPN.
  • Use o QR Code gerado para importar a configuração rapidamente.

Conclusão

O WireGuard é uma das melhores soluções para criar uma VPN rápida, segura e eficiente. Com o script de instalação e configuração automática, qualquer usuário pode configurar um servidor WireGuard em minutos.

Agora você pode criar sua própria VPN segura com facilidade!

Conheça nosso Canal do Youtube
Escute Nosso DoluCast
Melhores da Semana