Files
xdp/deploy_wg_optimizer.sh
2025-02-28 20:31:39 -03:00

74 lines
2.5 KiB
Bash

#!/bin/bash
# Compilar o programa XDP de otimização MTU para WireGuard
echo "Compilando programa XDP de otimização para WireGuard..."
clang -O2 -target bpf -c xdp_wg_mtu_optimizer.c -o xdp_wg_mtu_optimizer.o \
-I/usr/include/bpf -I/usr/include/ \
-Wno-unused-function -Wno-compare-distinct-pointer-types \
-D__TARGET_ARCH_arm64 -g
# Verificar se a compilação foi bem-sucedida
if [ $? -ne 0 ]; then
echo "ERRO: Falha na compilação do programa XDP de otimização para WireGuard"
exit 1
fi
# Gerar BTF para o programa
echo "Gerando BTF information..."
llvm-strip -g xdp_wg_mtu_optimizer.o
pahole -J xdp_wg_mtu_optimizer.o
# Verificar se existe a ferramenta bpftool
if ! command -v bpftool &> /dev/null; then
echo "AVISO: bpftool não encontrado, tentando carregar sem BTF"
fi
# Tentar várias opções para carregar o programa XDP
echo "Tentando carregar o programa XDP na interface wg0..."
LOADED=0
# Opção 1: Tentativa direta
if ip link set dev wg0 xdp obj xdp_wg_mtu_optimizer.o sec xdp verbose; then
LOADED=1
echo "Programa XDP carregado com sucesso!"
else
echo "Primeira tentativa falhou, tentando com modo generic..."
# Opção 2: Modo generic
if ip link set dev wg0 xdp obj xdp_wg_mtu_optimizer.o sec xdp verbose mode generic; then
LOADED=1
echo "Programa XDP carregado em modo generic!"
else
echo "Tentando com interface de loopback para testes..."
# Opção 3: Testes em interface loopback
if ip link set dev lo xdp obj xdp_wg_mtu_optimizer.o sec xdp verbose mode generic; then
echo "AVISO: Programa carregado apenas na interface loopback para testes"
echo "Por favor, resolva os problemas de compatibilidade antes de usar em produção"
LOADED=1
else
echo "ERRO: Todas as tentativas de carregamento do XDP falharam"
fi
fi
fi
# Verificar resultado do carregamento
if [ $LOADED -eq 0 ]; then
echo "Não foi possível carregar o programa XDP"
exit 1
fi
# Configurações de MTU e kernel que ainda funcionam mesmo sem o XDP totalmente carregado
echo "Configurando MTU otimizado para interface WireGuard..."
ip link set dev wg0 mtu 1420
echo "Aplicando ajustes de kernel para otimização de MTU..."
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv4.tcp_mtu_probing=1
sysctl -w net.ipv4.tcp_base_mss=1024
# Exibir informações
echo ""
echo "=== Otimização de MTU para WireGuard ativa ==="
ip link show dev wg0 | grep -E 'mtu|xdp'