64 lines
3.0 KiB
Bash
Executable File
64 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
|
|
#
|
|
# rc.local — server-mv
|
|
#
|
|
# Versão nftables. O firewall (antes ~200 linhas de iptables/ip6tables
|
|
# espalhadas entre rc.local e test.sh) agora é um único arquivo
|
|
# declarativo: nftables.conf. A versão anterior, baseada em
|
|
# iptables/ip6tables, foi preservada em rc.local.iptables — troque de
|
|
# volta se algo aqui quebrar e você precisar reverter rápido.
|
|
#
|
|
# Antes de usar este arquivo em produção:
|
|
# nft -c -f /home/rodrigo/server-mv/nftables.conf # valida sintaxe
|
|
# systemctl enable nftables # persistência
|
|
# Não rode este rc.local E o antigo (rc.local.iptables) ao mesmo tempo —
|
|
# são duas ferramentas de firewall (nft e iptables-legacy/nft-em-cima-
|
|
# de-iptables) que podem conflitar se ambas tentarem gerenciar as
|
|
# mesmas chains.
|
|
|
|
set -e
|
|
|
|
# ==============================================================
|
|
# 1. FIREWALL (nftables) — carregamento atômico: se houver erro de
|
|
# sintaxe no arquivo, o "nft -f" falha ANTES de aplicar qualquer coisa,
|
|
# então nunca fica um firewall pela metade no ar.
|
|
# ==============================================================
|
|
nft -f /home/rodrigo/server-mv/nftables.conf
|
|
|
|
# ==============================================================
|
|
# 2. Ajustes de kernel dependentes de runtime (não cobertos por sysctl.conf)
|
|
# ==============================================================
|
|
echo deadline > /sys/block/sda/queue/scheduler
|
|
echo 64 > /sys/block/sda/queue/max_sectors_kb # melhor para SSD virtual
|
|
|
|
echo f > /sys/class/net/enp0s6/queues/tx-0/xps_cpus
|
|
echo f > /sys/class/net/enp0s6/queues/rx-0/rps_cpus
|
|
echo 4096 > /sys/class/net/enp0s6/queues/rx-0/rps_flow_cnt
|
|
|
|
#tc qdisc add dev enp0s6 root cake bandwidth 1000mbit besteffort
|
|
#tc qdisc add dev wg0 root cake bandwidth 500mbit besteffort dual-dsthost
|
|
|
|
touch /var/lock/subsys/local
|
|
|
|
# ==============================================================
|
|
# 3. XDP / eBPF
|
|
# ==============================================================
|
|
ip link set enp0s6 mtu 1500
|
|
ip link set dev enp0s6 xdp obj /home/rodrigo/server-mv/xdp/xdp_ddos_filter.o sec xdp
|
|
ip link set dev wg0 xdp obj /home/rodrigo/server-mv/xdp/xdp_wg_mtu_optimizer.o sec xdp
|
|
|
|
# A bridge do Docker muda de nome a cada recriação da rede (hash do ID),
|
|
# então esse link precisa ser reaplicado se a rede "dockernet" for recriada.
|
|
ip link set dev br-02f7820020b4 xdp obj /home/rodrigo/server-mv/xdp/bridge_xdp.o sec xdp
|
|
|
|
# eBPF sockmap: DESATIVADO DE PROPÓSITO. O bug de porta (byte-order
|
|
# assimétrico entre local_port/remote_port em extract_key_from_ops e
|
|
# bpf_msg_redirect) já foi corrigido e resolveu conexões pequenas/médias,
|
|
# mas arquivos grandes (streaming sustentado) ainda travam — suspeita de
|
|
# backpressure/sendfile no caminho de redirect do sk_msg, ainda em
|
|
# investigação com bpf_printk. Não reativar em produção até confirmar.
|
|
# Ganho é só performance (bypass de socket local entre containers no
|
|
# mesmo host); o site funciona normalmente sem isso.
|
|
# cd /home/rodrigo/server-mv/ebpf-sockmap/ && make load
|