Files
xdp/apply_wg_mtu_optimization.sh
2025-02-28 20:34:36 -03:00

68 lines
2.7 KiB
Bash

#!/bin/bash
#
# Este script implementa otimização de MTU para WireGuard sem depender de XDP
# já que o carregamento do programa XDP falhou devido a limitações no verificador de limites
echo "Aplicando otimizações manuais de MTU para WireGuard..."
# 1. Configurar MTU ótimo para WireGuard
echo "Configurando MTU ótimo para WireGuard..."
ip link set dev wg0 mtu 1420
echo "MTU da interface wg0 configurado para 1420"
# 2. Configurar TCP MSS clamping via iptables para prevenir fragmentação
echo "Configurando TCP MSS Clamping..."
iptables -t mangle -F FORWARD
iptables -t mangle -A FORWARD -o wg0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1380
iptables -t mangle -A FORWARD -i wg0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1380
echo "TCP MSS ajustado para 1380 para pacotes passando pelo WireGuard"
# 3. Ajustar opções de kernel para melhorar o tratamento de MTU e fragmentação
echo "Ajustando parâmetros de kernel para PMTU e fragmentação..."
sysctl -w net.ipv4.tcp_mtu_probing=1
sysctl -w net.ipv4.ip_no_pmtu_disc=0
echo "net.ipv4.tcp_mtu_probing = 1" >> /etc/sysctl.conf
echo "net.ipv4.ip_no_pmtu_disc = 0" >> /etc/sysctl.conf
sysctl -p
# 4. Priorizar tráfego WireGuard no QoS
echo "Configurando QoS para priorizar pacotes WireGuard..."
# Verificar se já existe regra para não duplicar
if ! tc filter show dev enp0s6 parent 1: | grep -q "match ip protocol 17.*match ip dport 32100"; then
tc filter add dev enp0s6 parent 1: protocol ip prio 1 u32 \
match ip protocol 17 0xff \
match ip dport 32100 0xffff \
flowid 1:10
fi
# 5. Configurar o sysctl drop_path_mtu para garantir que o kernel ajuste o MTU adequadamente
sysctl -w net.ipv4.ip_forward_use_pmtu=1
echo "net.ipv4.ip_forward_use_pmtu = 1" >> /etc/sysctl.conf
# 6. Adicionar um monitoramento básico de fragmentação
echo "Configurando monitoramento de fragmentação..."
cat > /etc/cron.daily/check_ip_frag << 'EOF'
#!/bin/sh
# Monitorar estatísticas de fragmentação IP
echo "=== Estatísticas de Fragmentação $(date) ===" >> /var/log/ip_frag_stats.log
grep . /proc/net/snmp | grep -A 1 "^Ip" >> /var/log/ip_frag_stats.log
echo "" >> /var/log/ip_frag_stats.log
EOF
chmod +x /etc/cron.daily/check_ip_frag
# 7. Mostrar informações atuais
echo ""
echo "=== Otimização de MTU para WireGuard aplicada com sucesso ==="
echo "Informações da interface WireGuard:"
ip link show wg0 | grep mtu
echo ""
echo "Regras de TCP MSS clamping:"
iptables -t mangle -L FORWARD -v -n | grep TCPMSS
echo ""
echo "Esta solução irá:"
echo "- Prevenir fragmentação usando MTU 1420 e TCP MSS 1380"
echo "- Melhorar Path MTU Discovery para conexões mais estáveis"
echo "- Priorizar tráfego WireGuard no QoS"
echo "- Monitorar fragmentação para ajustes futuros"