81 lines
2.3 KiB
Bash
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"
|