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.

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:
- Instalação do WireGuard
- Geração das Chaves do Servidor
- Configuração do Servidor WireGuard
- Configuração do Firewall (iptables)
- 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!

Amante por tecnologia Especialista em Cibersegurança e Big Data, Formado em Administração de Infraestrutura de Redes, Pós-Graduado em Ciências de Dados e Big Data Analytics e Machine Learning, Com MBA em Segurança da Informação, Escritor do livro ” Cibersegurança: Protegendo a sua Reputação Digital”.