O traceroute usa UDP ou ICMP ou ambos?

23

Quando faço um rastreamento no domínio www.google.com do meu laptop, estou usando icmp ou udp?
Eu pensei que era icmp tipo 11, mas enquanto procurava por algo mais me deparei com regras onde icmp tipo 30 foi usado e vi regras onde o udp foi usado.
Alguém pode me explicar como isso funciona?
Estou trabalhando em um firewall (iptables) para um servidor virtual dedicado.

    
por Kris 29.03.2012 / 00:14

2 respostas

25

O tipo de pacote enviado difere dependendo da implementação. Por padrão, o Windows tracert usa o ICMP e o Mac OS X e o Linux traceroute usam o UDP. Eu não tenho máquinas BSD ou Solaris ou qualquer outro SO disponível para checar, mas a página de manual para a versão do Mac OS X menciona sua origem é o BSD 4.3.

As versões Mac e Linux oferecem a possibilidade de escolher uma variedade de protocolos diferentes, incluindo pacotes ICMP, TCP, UDP e GRE. Outros protocolos podem ser especificados por seu nome ou número, mas o traceroute não sabe nada sobre como outros protocolos funcionam. Apenas os envia cegamente.

Eles também podem alterar a carga útil e as portas de origem e destino para evitar firewalls ou descobrir qual roteador ao longo do caminho está descartando pacotes de um determinado tamanho.

Todas as versões do traceroute contam com respostas do ICMP tipo 11 (tempo excedido) de cada salto ao longo da rota. Se as respostas do ICMP tipo 11 estiverem sendo bloqueadas pelo seu firewall, o traceroute não funcionará. Esses pacotes são de entrada, não de saída.

O ICMP tipo 30 é especificamente designado para traceroute e é rotulado como um "Pedido de Informações". Não consegui encontrar nenhum lugar onde isso seja realmente usado. A página man das versões para Mac OS X e Linux diz que -I enviará ICMP tipo 8 (solicitação de eco). A Wikipedia diz que o Windows tracert também usa solicitações de eco ICMP. Tipo ICMP 30 ou tipo 8 são pacotes de saída, não de entrada.

O ICMP tipo 0 (resposta de eco) pode retornar como o último pacote quando o TTL é exatamente igual ao número de saltos. O traceroute saberá que terminou quando receber um deles. Este é um pacote de entrada.

Os pacotes TCP SYN causarão um pacote RST ou SYN ACK em resposta quando chegarem ao destino. Se você receber um pacote SYN ACK , é educado acompanhar com um pacote RST para não deixar uma conexão semiaberta no servidor.

É possível obter respostas do código 4 do tipo 3 do ICMP em vez de respostas do tipo 11 do ICMP se você enviar um pacote grande com o sinalizador "Não fragmentar", mas é provável que permite que você encontre o salto com o menor MTU. Você normalmente só receberá esse tipo de resposta de um salto ao longo do percurso. Nem todos eles.

    
por 29.03.2012 / 01:06
8

O traceroute tradicional usa o UDP no incremento de portas para cada salto.

Você pode usar qualquer tipo de pacote para implementá-lo - ICMP, TCP SYN, etc. Tudo o que precisamos é que o pacote IP expire e você seja dourado.

Várias implementações, como o MacOS, oferecem suporte a vários tipos de traceroute, bem como a modos que não incrementam portas, etc., para contornar restrições de firewall.

    
por 29.03.2012 / 00:17