#!/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'