Interpretando TTL nos resultados de ping

11

Eu trabalho para um provedor de serviços de VoIP e estou resolvendo um problema com um cliente que possui uma conexão de Internet a cabo que está me dando uma volta.

Ele tem um único bloco, que fingiremos ser 70.141.15.0/29, com o gateway em .1 e os roteadores em .2 e .3. Ambos os roteadores estão conectados ao seu modem a cabo, que é, até onde sabemos, definido como qualquer provedor de cabo que imagine que seja o "modo bridge".

Estou executando o ping desses dois roteadores simultaneamente da mesma caixa, que é um sistema Linux conectado à fibra do (provavelmente) nível (3). É desnecessário dizer que ninguém no planeta sabe quantos nós existem entre aqui e ali. Mas confira os resultados do ping.

Para o primeiro roteador:

64 bytes from 70.141.15.2: icmp_seq=2637 ttl=47 time=45.0 ms
64 bytes from 70.141.15.2: icmp_seq=2638 ttl=47 time=39.2 ms
64 bytes from 70.141.15.2: icmp_seq=2639 ttl=47 time=37.3 ms
64 bytes from 70.141.15.2: icmp_seq=2640 ttl=47 time=46.1 ms
64 bytes from 70.141.15.2: icmp_seq=2641 ttl=47 time=45.8 ms
64 bytes from 70.141.15.2: icmp_seq=2642 ttl=47 time=46.5 ms
64 bytes from 70.141.15.2: icmp_seq=2643 ttl=47 time=40.9 ms

A partir do segundo:

64 bytes from 70.141.15.3: icmp_seq=631 ttl=239 time=54.7 ms
64 bytes from 70.141.15.3: icmp_seq=637 ttl=239 time=40.5 ms
64 bytes from 70.141.15.3: icmp_seq=638 ttl=239 time=40.3 ms
64 bytes from 70.141.15.3: icmp_seq=639 ttl=239 time=38.4 ms
64 bytes from 70.141.15.3: icmp_seq=640 ttl=239 time=44.9 ms
64 bytes from 70.141.15.3: icmp_seq=641 ttl=239 time=38.4 ms
64 bytes from 70.141.15.3: icmp_seq=642 ttl=239 time=38.8 ms

Confira os valores TTL. Isso faz sentido? Esses dispositivos são diretamente adjacentes um ao outro, conectados ao modem através de portas de switch separadas. Como alguém parece ter quase 200 lúpulos a mais? Ao fazer ping em outros sites, tenho a impressão de que o TTL não é implementado da maneira que eu acho. Duvido que haja 200 saltos entre mim e 4.2.2.2, ou woot.com, mas recebo menos de 50 resultados TTL de ambos.

Um desses roteadores (aquele com TTL mais alto) é da Fortinet, enquanto o outro é um dispositivo baseado em Linux personalizado. Tenho certeza de que o Forti tem uma pilha de rede doméstica, enquanto a caixa do Linux usa o que veio com o tarball de origem que os desenvolvedores de hardware baixaram. É provável que o eco do ICMP seja implementado de forma bizarra em um deles e envie deliberadamente todas as respostas com um TTL de 50?

Percebo também que um dos únicos sites em que posso encontrar respostas com TTL de aparência sã é slashdot e posso imaginar que seus servidores e roteadores possam ser um pouco menos "o que encontramos na garagem" do que o site médio, que meio que me faz sentir como se estivesse no caminho certo com essa última suposição.

Resumindo: TTL no ping significa alguma coisa confiável?

Daniel Thompson
fonte
3
Li em algum lugar que o Windows XP e o Windows 7 definem o TTL como 128 e, para sistemas Linux, eles geralmente possuem o TTL 64. Não é perfeito, mas é muito útil saber algumas vezes.
Sean

Respostas:

22

É desnecessário dizer que ninguém no planeta sabe quantos nós existem entre aqui e ali.

Eu sei quantos nós. Existem exatamente 16. A razão pela qual você obtém respostas diferentes é porque diferentes sistemas operacionais usam valores iniciais diferentes para TTL. Alguns dispositivos usam 255, enquanto outros usam 63. Portanto, um dos dispositivos que você está executando o ping envia a resposta com o TTL definido como 255. No momento em que ele retorna, ele diminui para 239. São 16 saltos.

O outro dispositivo que você executa ping define o TTL para 63. Portanto, quando chegar a você, o valor é 47.

255-239 = 63-47 = 16.

Se você quiser ter certeza do número de saltos entre você e o alvo, use o traceroute.

Ron Trunk
fonte
Obrigado! Eu estava fazendo uma suposição que agora percebi que era infundada (que o TTL do pacote de retorno era de alguma forma ditado pelo pacote TTL de solicitação). Mais uma pergunta: os valores baseados em padrões 255 e 63 são arbitrários? Ou seja, posso assumir com segurança que qualquer TTL de três dígitos iniciou a vida como 255 etc.?
Daniel Thompson
3
Eu não acho que existem "padrões" sobre isso. OTOH, nunca vi um sistema que não fosse um ou outro.
Ron Trunk
63 soa como um valor incomum para um TTL inicial.
JeanPierre
2

Os valores TTL são determinados pela máquina remota. Por exemplo, se você executar ping em uma máquina Linux, seu valor TTL de origem é 64. Dependendo de quantas redes ele cruza para retornar a você, o TTL é deduzido pelo valor 1. Portanto, se você executar ping em 8.8.8.8, que é Servidor de nomes do Google, ele tem um valor originário de 128. No momento em que ele voltar para você, ele poderá ter um valor de 121 (o que significa para mim). Isso significa que ele atravessou 7 redes para chegar até mim e era uma máquina Windows.

Valores TTL comuns

  • Roteador - 255
  • Windows - 128
  • Linux-Mac - 64
dubu2
fonte
0

128-Windows, 64 na maioria dos Linux e roteadores, 60-muito raros, 32-Windows 95.

E ninguém usa 63, provavelmente está atingindo outro roteador no caminho de retorno.

Fred Phillips
fonte
0

tente "Tracert [ENDEREÇO ​​IP]" para ver o número total de rotas.

Se o sistema iniciar em 64 TTL, se você TRACERTAR um dispositivo com um salto de distância, receberá TTL = 63.

Eu tentei e foi o que consegui. Eu sempre me pergunto TTL ... hmm legal 😎

user56130
fonte
Isso não responde à pergunta.
Teun Vink