Ícone do site Dolutech

Como Criar um Servidor WireGuard no Linux Usando um Script Shell

wireguard guia

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.

Wireguard

Benefícios do WireGuard

Requisitos para Criar um Servidor WireGuard

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

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

2. Configuração no Android/iOS

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!

Sair da versão mobile