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