Files
xdp/verify_nat.sh
T
2025-02-26 19:10:15 -03:00

81 lines
2.3 KiB
Bash

#!/bin/bash
# Script para verificar se o NAT está funcionando corretamente
INTERFACE=${1:-"enp0s6"}
TARGET_IP=${2:-"10.15.0.45"}
echo "=== Verificando Configuração NAT ==="
echo "Interface: $INTERFACE"
echo "Container alvo: $TARGET_IP"
# Verificar se os programas TC estão carregados
echo -e "\n[Programas TC]"
tc filter show dev $INTERFACE ingress | grep -i bpf
tc filter show dev $INTERFACE egress | grep -i bpf
# Verificar mapas BPF
echo -e "\n[Mapas BPF]"
DNAT_MAP_ID=$(bpftool map list | grep -m1 "name dnat_port_map" | awk '{print $1}' | tr -d ':')
SNAT_MAP_ID=$(bpftool map list | grep -m1 "name snat_networks" | awk '{print $1}' | tr -d ':')
if [ -n "$DNAT_MAP_ID" ]; then
echo "Mapa DNAT (ID: $DNAT_MAP_ID):"
bpftool map dump id $DNAT_MAP_ID
else
echo "Mapa DNAT não encontrado"
fi
if [ -n "$SNAT_MAP_ID" ]; then
echo -e "\nMapa SNAT (ID: $SNAT_MAP_ID):"
bpftool map dump id $SNAT_MAP_ID
else
echo -e "\nMapa SNAT não encontrado"
fi
# Verificar IP forwarding
echo -e "\n[IP Forwarding]"
IP_FWD=$(cat /proc/sys/net/ipv4/ip_forward)
echo "IP forwarding: $IP_FWD"
if [ "$IP_FWD" != "1" ]; then
echo "AVISO: IP forwarding está desativado. Ative com:"
echo " echo 1 > /proc/sys/net/ipv4/ip_forward"
fi
# Verificar conectividade com o alvo
echo -e "\n[Conectividade]"
ping -c 1 -W 1 $TARGET_IP > /dev/null
if [ $? -eq 0 ]; then
echo "Ping para $TARGET_IP: OK"
else
echo "Ping para $TARGET_IP: FALHOU"
fi
# Testar HTTP/HTTPS
echo -e "\n[Teste HTTP]"
curl -s -m 2 --head http://$TARGET_IP > /dev/null
if [ $? -eq 0 ]; then
echo "Acesso HTTP direto para $TARGET_IP: OK"
else
echo "Acesso HTTP direto para $TARGET_IP: FALHOU"
fi
# Obter IP externo
EXTERNAL_IP=$(ip -br addr show $INTERFACE | awk '{print $3}' | cut -d'/' -f1)
echo -e "\n[Teste NAT]"
echo "IP externo: $EXTERNAL_IP"
curl -s -m 2 --head http://$EXTERNAL_IP > /dev/null
if [ $? -eq 0 ]; then
echo "Acesso HTTP via NAT ($EXTERNAL_IP): OK"
else
echo "Acesso HTTP via NAT ($EXTERNAL_IP): FALHOU"
fi
# Verificar logs recentes
echo -e "\n[Logs Recentes]"
echo "Últimas 5 linhas do trace_pipe (pode estar vazio se não houver atividade recente):"
cat /sys/kernel/debug/tracing/trace_pipe | head -n 5
echo -e "\nPara monitorar logs em tempo real: cat /sys/kernel/debug/tracing/trace_pipe"
echo "Para visualizar conexões atuais: ss -tan"