A saída do traceroute está correta em relação ao caminho real para um destino

3

A página man para traceroute diz que "traceroute rastreia os pacotes de rotas tirados de uma rede IP a caminho de um determinado host ". , mas ao fazer pesquisas sobre o tópico, não consegui encontrar nenhum dado estatístico / trabalho científico sobre a precisão do Traceroute como se a rota exibida fosse a rota realmente tomada (talvez os diferentes pacotes usem rotas completamente diferentes) e qual é o erro A margem é, e se seria possível, devido a diferentes protocolos de roteamento, um ping Traceroute poderia exibir um caminho completamente diferente do que uma solicitação TCP subsequente ou até mesmo os pacotes de ping reais levariam.

O único trabalho que encontrei, implicando que um rastreamento de Ping pode não ser perfeito, é a documentação sobre o scamper que diz "ping é útil para medir atrasos de ponta a ponta e perda, pesquisa por endereços IP responsivos e classificamos o comportamento dos hosts examinando como eles respondem a probes. "e (até onde eu entendi) usa traceroute MDA para detecção de caminho. Portanto, implicando que usar PING pode não ter o resultado desejado.

Portanto, minha pergunta é: Quão confiável é a detecção de caminho usando o Traceroute (também por que)? Eu apreciaria muito os links entrando em detalhes sobre esse tópico, mas uma explicação geral por que ou por que não também basta.

    
por Sim 18.03.2014 / 14:32

1 resposta

3

A coisa mais importante a lembrar é que as rotas não são estáticas . Por design, rotas na internet pública estão mudando o tempo todo. Às vezes, as rotas mudam devido ao balanceamento de carga; às vezes eles mudam porque um nó desce; às vezes eles mudam porque os roteadores decidem literalmente ao acaso alterar as regras de roteamento (apenas para agitar as coisas).

Do ponto de vista de um usuário final que não tem acesso de nível Administrador do Sistema a cada único roteador intermediário e hub da Internet entre a origem e o destino de um pacote, você deve tratá-lo como o Princípio de Incerteza de Heisenberg.

Coisas a considerar:

  1. Com base no IP "destino" declarado em seu pacote, os roteadores intermediários podem decidir rotear você de forma diferente . Portanto, se um traceroute é uma tentativa de mapear sequencialmente os roteadores entre a origem e o destino, um traceroute pode ser lançado fora do curso fazendo com que as rotas tomem caminhos diferentes dependendo de qual nó você está tentando alcançar.

  2. Nem todos os roteadores ouvirão pings ICMP ou UDP. Eles podem optar por ignorar silenciosamente esse tráfego e simplesmente descartá-lo na NIC (geralmente para ajudar a combater o DDoS). Isso pode frustrar sua tentativa de mapear uma rota.

  3. Mesmo que você mapeie com sucesso uma rota, e todos os nós intermediários respondam aos seus pings e não tentem jogar com sua tentativa de mapeamento, a rota pode mudar para os próximos pacotes que você enviar usando algum protocolo "real" (ou mesmo se você tentar um traceroute pela segunda vez).

  4. A QoS pode fazer com que redes com comportamento normal direcionem o tráfego de maneira diferente. Por exemplo, VoIP ou streaming de vídeo podem ter um caminho, enquanto a navegação normal na web pode levar outro.

  5. O tipo de tráfego pode fazer com que o roteamento seja diferente. Por exemplo, mesmo sem considerar a QoS, você pode obter um caminho diferente para o FTP do que para o SSH. Os nós intermediários podem exercer qualquer qualquer critério (qualquer coisa, desde uma seleção totalmente aleatória de rotas, a uma tentativa mal-intencionada de desacelerar seu tráfego, a uma tentativa honesta de tornar sua conexão mais rápida encaminhando ao nó com a menor carga) ao determinar para onde direcionar seu tráfego de cada salto.

  6. Em teoria, os roteadores intermediários também poderiam, se assim desejarem, transformar sua tentativa de rastreamento em um ciclo infinito: o nó A aponta para o nó B, o nó B aponta para o nó C e o nó C aponta para o nó A Não há nada que impeça os roteadores de fazer isso (não sei por que eles escolheriam, mas é uma possibilidade) para pacotes detectados como "traceroutes" (pings ICMP ou UDP). Pode fazer isso para tentar frustrar seus esforços ou por qualquer outro motivo.

O Algoritmo de Descoberta Multipath é útil, mas não pode superar essas limitações teóricas.

Basicamente, para determinar um caminho, você precisa enviar um ou mais pacotes. Esses pacotes podem ser roteados de qualquer forma que os nós intermediários considerem adequado. Mas assim que você envia outro pacote, não há absolutamente nada que impeça os roteadores de alterar o caminho. Esta é uma espécie de analogia de rede do Princípio de Incerteza de Heisenberg.

Os caminhos são efêmeros e transitórios . Você não deve confiar nas informações recebidas de um traceroute para nada importante, exceto para diagnosticar um problema de conectividade em uma rede onde você já possui um conhecimento profundo da topologia (em uma LAN corporativa complexa, por exemplo) e pode controlar o comportamento do nós participantes. Se algum dos nós participantes não for "seu" (se você não conseguir fazer login com privilégios de administrador do sistema), os resultados do traceroute serão efetivamente arbitrários.

Por outro lado, se todos os nós participantes forem , você poderá, como administrador, controlar o comportamento exato de cada nó. Por exemplo, você pode ativar o ICMP e configurar rotas estáticas (rotas que não mudam). Você pode então ter certeza de que seu traceroute está correto. Mas se você colocar um balanceador de carga no meio, então você terá que estar ciente do comportamento do balanceador de carga e da maneira que ele pode alternar rotas praticamente conforme necessário (embora geralmente não seja aleatório e geralmente não tente te enganar de propósito).

    
por 18.03.2014 / 14:53