Skip to main content

Como usar o comando 'traceroute' no Linux

Comando TRACEROUTE - Parte 10 de 11 - Curso de Linux - Capacity (Abril 2025)

Comando TRACEROUTE - Parte 10 de 11 - Curso de Linux - Capacity (Abril 2025)
Anonim

O comando traceroute é usado no Linux para mapear a jornada que um pacote de informações leva de sua origem até seu destino. Um uso para traceroute é localizar quando a perda de dados ocorre em toda a rede, o que poderia significar um nó que está inativo.

Como cada salto no registro reflete um novo servidor ou roteador entre o PC de origem e o destino pretendido, a análise dos resultados de uma verificação de traceroute também permite identificar pontos lentos que podem afetar negativamente o tráfego da rede.

Como funciona

Avaliar a rota específica que o tráfego de rede segue (ou encontrar o gateway miscreant que está descartando seus pacotes) apresenta vários desafios de solução de problemas. Traceroute usa o protocolo IP tempo de Viver campo para solicitar uma resposta ICMP TIME_EXCEEDED de cada gateway ao longo do caminho para um host de destino.

O único parâmetro que você deve incluir ao executar o comando traceroute é o nome do host ou o endereço IP do destino.

Sintaxe e Comutadores Traceroute

traceroute -dFInrvx -f first_ttl -g porta de entrada -Eu iface -m max_ttl -p porta -q nqueries -s src_addr -t tos -W tempo de espera -z pausemsecs hospedeiro packetlen

Enquanto o acima é como o comando traceroute tem que ser escrito para funcionar na linha de comando, o desempenho ou a saída do comando podem ser alterados especificando um ou mais switches opcionais.

  • -f: Defina o tempo de vida inicial usado no primeiro pacote de sondagem de saída.
  • -F: Defina o bit "não fragmentar".
  • -d: Ativar a depuração no nível do soquete.
  • -g: Especifique um gateway de rota de origem solto (máximo 8).
  • -Eu: Especifique uma interface de rede para obter o endereço IP de origem para pacotes de sondagem de saída. Isso normalmente só é útil em um host multi-homed. (Veja o-s bandeira para outra maneira de fazer isso.)
  • -EU: Use ICMP ECHO em vez de datagramas UDP.
  • -m: Defina o tempo máximo de vida útil (número máximo de saltos) usado nos pacotes de sondagem de saída. O padrão é 30 saltos (o mesmo padrão usado para conexões TCP).
  • -n: Imprima os endereços de salto numericamente, em vez de simbolicamente e numericamente (salva uma consulta de endereço para nome do servidor de nomes para cada gateway encontrado no caminho).
  • -p: Configure o número da porta UDP base usada nas análises (o padrão é 33434). Traceroute espera que nada esteja escutando em portas UDP base para base + nhops - 1 no host de destino (assim, uma mensagem ICMP PORT_UNREACHABLE será retornada para finalizar o rastreamento da rota). Se algo estiver escutando em uma porta no intervalo padrão, essa opção poderá ser usada para escolher um intervalo de portas não utilizado.
  • -r: Ignore as tabelas de roteamento normais e envie diretamente para um host em uma rede conectada. Se o host não estiver em uma rede conectada diretamente, um erro será retornado. Essa opção pode ser usada para executar ping em um host local por meio de uma interface que não tem rota por meio dele (por exemplo, depois que a interface foi descartada por encaminhado (8C)).
  • -s: Use o seguinte endereço IP (que geralmente é fornecido como um número IP, não um nome de host) como o endereço de origem nos pacotes de sondagem de saída. Em hosts multi-homed (aqueles com mais de um endereço IP), essa opção pode ser usada para forçar o endereço de origem a ser algo diferente do endereço IP da interface em que o pacote de sondagem é enviado. Se o endereço IP não for um dos endereços de interface da máquina, um erro será retornado e nada será enviado. (Veja o-Eu bandeira para outra maneira de fazer isso.)
  • -t: Colocou o tipo de serviço em pacotes de sondagem para o seguinte valor (padrão zero). O valor deve ser um inteiro decimal no intervalo de 0 a 255. Essa opção pode ser usada para ver se diferentes tipos de serviço resultam em caminhos diferentes. (Se você não estiver executando 4.4bsd, isso pode ser acadêmico, já que os serviços de rede normais, como telnet e ftp, não permitem controlar os TOS.) Nem todos os valores de TOS são legais ou significativos - consulte a especificação de IP para definições. Valores úteis são provavelmente `-t 16 '(atraso baixo) e'-t 8 '(alta taxa de transferência).
  • -v: Saída detalhada. Pacotes ICMP recebidos, com exceção de TIME_EXCEEDED e UNREACHABLEs, são listados.
  • -W: Defina o tempo (em segundos) para aguardar uma resposta a uma sonda (padrão 5 segundos).
  • -x: Alternar as somas de verificação de IP. Normalmente, isso impede que o traceroute calcule as somas de verificação de IP. Em alguns casos, o sistema operacional pode sobrescrever partes do pacote de saída, mas não recalcular a soma de verificação; assim, em alguns casos, o padrão é não calcular checksums e usar-x faz com que eles sejam calculados. Observe que as somas de verificação são normalmente necessárias para o último salto ao usar os probes ICMP ECHO (-EU), de modo que são sempre calculados quando se utiliza o ICMP.
  • -z: Defina o tempo (em milissegundos) para fazer uma pausa entre os probes (padrão 0). Alguns sistemas, como Solaris e roteadores da Cisco, limitam as mensagens icmp de limite. Um bom valor para usar com isto é 500 (por exemplo, 1/2 segundo).

Interpretando os Resultados

O traceroute descreve o caminho que um pacote IP segue para um host da Internet, disparando pacotes de sondagem UDP com um TTL pequeno (tempo de vida) e, em seguida, escutando uma resposta de "tempo excedido" do ICMP de um gateway. Começamos nossos probes com um TTL de um e aumentamos um até chegarmos a um "ICMP" inacessível (o que significa que o pacote chegou ao seu destino) ou atingimos um valor máximo de tentativas, cujo padrão é 30 saltos e pode ser alterado com a-m bandeira.

Quando o traceroute é executado, ele envia três testes em cada configuração de TTL e, em seguida, imprime uma linha no console mostrando o TTL, o endereço do gateway e o tempo de ida e volta de cada probe. Se as respostas da sonda vierem de diferentes gateways, o endereço de cada sistema respondente será impresso. Se não houver resposta dentro de um intervalo de tempo limite de cinco segundos-W flag), um asterisco é impresso para esse probe.

Para impedir que o host de destino seja sobrecarregado pelo processamento do pacote de teste UDP, a porta de destino é definida como um valor que provavelmente não será usado por esse dispositivo. Se uma rede ou serviço no destino usar essa porta, altere o valor usando o-p bandeira.

Um uso e uma saída de amostra retornará resultados semelhantes a este exemplo:

iaque 71% traceroute nis.nsf.net. traceroute para nis.nsf.net (35.1.1.48), 30 hops max, pacote de 38 bytes 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

Note que a segunda e terceira linhas são as mesmas. Este resultado está relacionado a um kernel buggy no sistema de segundo salto - lbl-csam.arpa - que encaminha pacotes com um TTL zero (um bug na versão distribuída do 4.3 BSD). Você deve adivinhar o caminho que os pacotes estão tomando pelo país, já que a NSFNet (129.140) não fornece traduções de endereço para nome para seus NSS.

Um exemplo mais interessante é:

yak 72% traceroute allspice.lcs.mit.edu. traceroute para allspice.lcs.mit.edu (18.26.0.115), 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) 19 ms 19 ms 19 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms 5 ccn-nerif22 .Berkeley.EDU (128.32.168.22) 20 ms 39 ms 39 ms 6 128.32.197.4 (128.32.197.4) 59 ms 119 ms 39 ms 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 39 ms 8 129.140.70.13 ( 129.140.70.13) 80 ms 79 ms 99 ms 9 129.140.71.6 (129.140.71.6) 139 ms 139 ms 159 ms 10 129.140.81.7 (129.140.81.7) 199 ms 180 ms 300 ms 11 129.140.72.17 (129.140.72.17) 300 ms 239 ms 239 ms 12 * * * 13 128.121.54.72 (128.121.54.72) 259 ms 499 ms 279 ms 14 * * * 15 * * * 16 * * * 17 * * * 18 ALLSPICE.LCS.MIT.EDU (18,26 0,011) 339 ms 279 ms 279 ms

Observe que os gateways em 12, 14, 15, 16 e 17 saltam ou não enviam mensagens ICMP de "tempo excedido" ou as enviam com um TTL muito pequeno para chegar até nós. As linhas 14 a 17 estão executando o código MIT C Gateway que não envia mensagens de "tempo excedido".

O gateway silencioso 12 no exemplo acima pode ser o resultado de um bug no código de rede 4. 23 BSD e seus derivados: Máquinas executando código 4.3 e anterior enviam uma mensagem inacessível usando qualquer TTL que permaneça no datagrama original. Uma vez que, para gateways, o TTL restante é zero, o "tempo excedido" do ICMP tem a garantia de não voltar para nós. O comportamento desse bug é um pouco mais interessante quando aparece no sistema de destino:

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 Senhora ! 39 ms! 39 ms!

Observe que há 12 "gateways" (13 é o destino final) e a última metade deles está faltando. O que realmente está acontecendo é que o servidor chamado Descanse em paz (um Sun-3 executando o Sun OS 3.5) está usando o TTL de nosso datagrama de chegada como o TTL em sua resposta ICMP. Assim, a resposta expirará no caminho de retorno (sem nenhum aviso enviado a ninguém, já que os ICMPs não são enviados para ICMPs) até tentarmos um TTL com pelo menos o dobro do comprimento do caminho - em outras palavras, rip é na verdade apenas sete pula fora.

Uma resposta que retorna com um TTL de 1 é uma pista de que esse problema existe. Traceroute imprime um "!" após o tempo, se o TTL for menor ou igual a 1. Como os fornecedores enviam muitos softwares obsoletos (DEC's Ultrix, Sun 3.x) ou não-padrão (HPUX), espere ver esse problema com frequência e tome cuidado ao selecionar host alvo de suas sondas.

Outras anotações possíveis após o tempo são! H, ! Nou! P (host, rede ou protocolo inacessível),! S (rota de origem falhada),! F- (fragmentação necessária - o valor da Descoberta da MTU do Caminho RFC1191 é exibido),! X (comunicação administrativamente proibida),! V (violação de precedência do host),! C (corte de precedência em vigor), ou! (Código inacessível ICMP). Esses códigos são definidos pelo RFC1812, que substitui o RFC1716. Se quase todas as sondas resultarem em algum tipo de host inacessível, o traceroute irá desistir e sair.

Este programa destina-se ao uso em testes, medições e gerenciamento de rede. Deve ser usado principalmente para isolamento manual de falhas. Por causa da carga que poderia impor na rede, não é aconselhável usar o traceroute durante operações normais ou de scripts automatizados.