Ferramenta Traceroute

Traceroute é uma ferramenta que permite descobrir o caminho feito pelos pacotes desde a sua origem até o seu destino. Ele é usado para testes, medidas e gerenciamento da rede.

O traceroute pode ser utilizado para detectar falhas como, por exemplo, gateways intermediários que descartam pacotes ou rotas que excedem a capacidade de um datagrama IP. Com esta ferramenta, o atraso da “viagem” do pacote entre a origem e gateways intermediários são reportados, permitindo determinar a contribuição de cada gateway para o atraso total da “viagem” do pacote desde a origem até o seu destino.

Versões melhoradas do traceroute permitem a especificação de “rotas livres da origem” para os datagramas. Isto permite investigar qual o caminho de retorno que as máquinas remotas fazem até o host local.

MECANISMO

O comando traceroute envia pacotes de pesquisa UDP (UDP probe packets) com um pequeno “time-to-live” máximo (variável Max_ttl), e então, espera por pacotes de resposta “ICMP TIME_EXCEEDED” dos gateways que estão no caminho. Os pacotes UDP começam com um valor Max_ttl de 1 hop, que é incrementado de 1 hop a cada vez, até que uma mensagem “ICMP PORT_UNREACHABLE” é retornada. Esta mensagem indica que o host destino foi localizado ou que o comando traceroute atingiu o valor máximo de hops permitido para o “trace”.

O traceroute envia três “probes” a cada Max_ttl indicando:

O valor Max_ttl
O endereço do gateway
O tempo de ida e volta (round trip) de cada “probe” bem sucedido.

Se as respostas ao “probe” vêm de gateways diferentes, o traceroute imprime o endereço IP de cada um deles. Se não houver resposta ao “probe” dentro de um intervalo de “time-out” de três segundos, um *(asterisco) é impresso.

Um ponto de exclamação ! é impresso depois do tempo de ida e volta (round trip time) do pacote se o valor Max_ttl é um hop ou menos. Um “time-to-live” máximo de um hop ou menos normalmente indica uma incompatibilidade na forma como as respostas ICMP são tratadas pelos diferentes softwares da rede. A incompatibilidade pode, normalmente, ser solucionada duplicando o valor do último Max_ttl usado e tentando novamente.

Outras anotações possíveis depois da indicação do tempo (round trip) são:

!H Host inacessível
!N Rede inacessível
!P Protocolo inacessível
!S Falha na rota de origem
!F Necessidade de fragmentação

Se a maioria das pesquisas (probes) resultam em um erro, o comando traceroute encerra a execução.

SINTAXE

traceroute [-m Max_ttl] [-n] [-p Port] [-q Nqueries] [-r] [-s SRC_Addr] [-t TypeOfService] [-v] [-w WaitTime] Host [PacketSize]

O único parâmetro obrigatório para o comando traceroute é o nome ou o número IP do host destino. O tamanho do pacote UDP (UDP probe packet) é de 38 bytes, mas pode ser aumentado especificando o tamanho do pacote (em bytes) após o nome ou número IP do destino.

OPÇÕES

-m Max_ttl Especifica um “time-to-live” máximo (número máximo de hops) usado nos pacotes de pesquisa UDP. O default é 30 hops (o mesmo dafault utilizado para conexões TCP).

-n Mostra o endereço IP de cada gateway encontrado no caminho (da origem ao destino).

-p Port Especifica o número base da porta UDP utilizada na pesquisa do traceroute. O default é 33434. O comando traceroute depende de um intervalo de portas UDP abertas de “base a base + número de hops – 1” no host destino. Se uma porta UDP não está disponível, esta opção pode ser usada para pegar um intervalo de portas não utilizadas.

-q Nqueries Especifica o número de pacotes UDP (UDP probes) que o comando traceroute envia a cada Max_ttl. O default é três pacotes.

-r Desvia das tabelas de roteamento e envia os pacotes de pesquisa diretamente a um host. Se este host não está na rede, um erro é retornado. Esta opção pode ser usada para “dar” um comando ping em um host local através de uma interface que não está registrada nas tabelas de roteamento.

-s SRC_Addr Usa o endereço especificado (SRC_Addr) como o endereço de origem dos pacotes UDP enviados. Em hosts com mais de um endereço IP, a opção “-s” pode ser usada para forçar o endereço de origem a ser uma interface específica e não, necessariamente, aquela de onde o pacote foi enviado. Se o endereço IP especificado não for válido, um erro é retornado e nada é enviado.

-t TypeOfService Atribui um valor entre 0 e 255 para a variável TypeOfService do pacote de pesquisa UDP. O default é 0 (zero). Esta opção pode ser utilizada para descobrir se diferentes tipos de serviços resultam em diferentes caminhos.

-v Recebe pacotes diferentes de TIME-EXCEEDED e PORT-UNREACHABLE.

-w WaitTime Especifica o tempo (em segundos) a esperar pela resposta a um pacote de pesquisa UDP. O default é 3 segundos.

Host Especifica o host destino, pelo nome ou pelo seu número IP. Este parâmetro é obrigatório.

PacketSize Especifica o tamanho (em bytes) do pacote UDP de pesquisa (probe). O default é 38 bytes.

“CAVEATS”

Algumas implementações IP enviam para outro endereço pacotes com o “ttl” (time-to-live) igual a 0 (zero), escapando, desta forma, da identificação.

Outras usam o campo “ttl” do pacote que chega, como o “ttl” do pacote de resposta ICMP, o que atrasa a identificação. Enviar datagramas com a opção de “rota da origem” pode causar “crash” em alguns gateways. Não é recomendável enviar pacotes com esta opção.

LIMITAÇÕES

A maioria das versões do UNIX têm erros no código IP bruto, que requer funções do “kernel” para executar a versão padrão do traceroute. Existe uma versão do traceroute que “roda” sem as funções do “kernel” sob SunOS 3.5, mas ela só opera em interface ethernet.

Saída (Output)

Exemplo 1.

[yak 71]% traceroute nis.nsf.net.
traceroute to nis.nsf.net (35.1.1.48), 30 hops max, 56 byte packet
 1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms
 5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms
 6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms
 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms
 8 129.140.70.13 (129.140.70.13) 99 ms 99 ms 80 ms
 9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms
10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms
11 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms


Linhas 2 e 3 sao as mesmas devido a um erro no "Kernel" no segundo  hop
(lbl-csma.arpa) que envia para outro endere‡o pacotes com um ttl (time-
to-live) igual a zero. Os nomes dos host nao sao impressos  nas  linhas
6 a 10 porque a  NFSNet  (National Science Foundation Network, 129.140)
nao prove traducoes de enderecos-para-nomes para os seus nos.

Exemplo 2. 

[yak 72]% traceroute rip.Berkeley.EDU (128.32.131.22)
traceroute to rip.Berkeley.EDU (128.32.131.22), 30 hops max
 1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms
 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 39 ms 19 ms
 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 19 ms
 5 ccn-nerif35.Berkeley.EDU (128.32.168.35) 39 ms 39 ms 39 ms
 6 csgw/Berkeley.EDU (128.32.133.254) 39 ms 59 ms 39 ms
 7 * * *
 8 * * *
 9 * * *
10 * * *
11 * * *
12 * * *
13 rip.Berkeley.EDU (128.32.131.22) 59 ms! 39 ms! 39 ms!


Neste exemplo, exatamente a  metade  dos  doze  gateways   (13 contando
com  o  destino  final)  estao  "faltando". No  entanto,  estes  "hops"
nao eram  exatamente  gateways. O  host  destino, uma  Sun-3 executando
Sun OS3.5,  usou o ttl  dos pacotes que chegavam como o ttl dos pacotes
ICMP de  resposta;  por isso, a resposta gerou um timeout  no  retorno.
Como  nao sao  enviadas  mensagens  ICMP  para  pacotes  ICMP,  nenhuma
notificacao foi recebida. O ! (ponto de exclamacao) depois da indicacao
do tempo de ida e volta do pacote  (round trip) indica  algum  tipo  de 
problema de incompatibilidade de software. (A causa  foi  diagnosticada
depois do comando traceroute ser executado e identificar  um  pacote de
pesquisa (probe) com o dobro do caminho. O destino estava a apenas sete
hops).
Esse artigo foi útil?

Também pode te interessar