Você pode obter informações sobre a travessia de pacotes na pilha do Kernel do Linux sondando os contadores de estatísticas / SNMP exportados pelo kernel para o userspace. Por exemplo, por "netstat -s" (ou também por "cat / proc / net / snmp", que é um pouco menos fácil de ler). Por exemplo, se houve algum erro devido ao cabeçalho IPv4 incorreto, InHdrErrors será incrementado e "cat / proc / net / snmp" mostrará que este erro ocorreu; olhar na quarta coluna que você começa quando você executa "cat / proc / net / snmp" (que é chamado "InHdrErrors") Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors
Se você olhar no código do kernel, você verá isso no método ip_recv (), que é o manipulador
para o tráfego IPv4, há uma verificação do tamanho mínimo do cabeçalho ou de que o membro da versão
no cabeçalho IPv4 é "4", e se não for assim, o contador IPSTATS_MIB_INHDRERRORS é
incrementado:
E, claro, existem outros tipos de erros, e também há contadores SNMP / stats para Travessia normal de um pacote na pilha do kernel Linux, que você pode explorar ao executar "netstat -s" e / ou "cat / proc / net / snmp".
Rami Rosen