Header Ads

Como usar o comando traceroute no Linux

Fatmawati Achmad Zaenuri / Shutterstock

Você pode usar o comando traceroute do Linux para identificar a perna lenta da jornada de um pacote de rede e solucionar problemas de conexões de rede lentas. Mostraremos como!

Como funciona o traceroute

Quando você aprecia o funcionamento do traceroute, fica mais fácil entender os resultados. Quanto mais complicada a rota que um pacote de rede precisa seguir para chegar ao seu destino, mais difícil é identificar onde podem estar ocorrendo lentidão.

A rede local (LAN) de uma pequena organização pode ser relativamente simples. Provavelmente terá pelo menos um servidor e um roteador ou dois. A complexidade aumenta em uma rede de área ampla (WAN) que se comunica entre diferentes locais ou via internet. Seu pacote de rede encontra (e é encaminhado e roteado por) muito hardware, como roteadores e gateways.

Os cabeçalhos dos metadados nos pacotes de dados descrevem seu comprimento, de onde vieram, para onde estão indo, o protocolo que estão usando e assim por diante. A especificação do protocolo define o cabeçalho. Se você pode identificar o protocolo, pode determinar o início e o fim de cada campo no cabeçalho e ler os metadados.

traceroute usa o conjunto de protocolos TCP / IP e envia pacotes de protocolo de datagrama de usuário. O cabeçalho contém o campo Time to Live (TTL), que contém um valor inteiro de oito bits. Apesar do que o nome sugere, ele representa uma contagem, não uma duração.

Um pacote viaja desde a origem até o destino através de um roteador. Cada vez que o pacote chega a um roteador, ele diminui o contador TTL. Se o valor TTL chegar a um, o roteador que recebe o pacote diminui o valor e percebe que agora é zero. O pacote é então descartado e não encaminhado para o próximo salto de sua jornada porque o tempo limite expirou. ”

O roteador envia uma mensagem com tempo excedido pelo protocolo ICMP (Internet Message Control Protocol) de volta à origem do pacote para que ele saiba que o pacote expirou. A mensagem Tempo excedido contém o cabeçalho original e os primeiros 64 bits dos dados do pacote original. Isso é definido na página seis da solicitação de comentários 792.

Portanto, se o traceroute envia um pacote, mas define o valor TTL para um, o pacote chegará apenas ao primeiro roteador antes de ser descartado. Ele receberá uma mensagem de tempo excedido do ICMP do roteador e pode registrar o tempo que levou para a viagem de ida e volta.

Em seguida, repete o exercício com TTL definido como 2, que falhará após dois saltos. O traceroute aumenta o TTL para três e tenta novamente. Esse processo se repete até que o destino seja alcançado ou o número máximo de saltos (30, por padrão) seja testado.

Alguns roteadores não jogam muito bem

Alguns roteadores têm bugs. Eles tentam encaminhar pacotes com um TTL zero, em vez de descartá-los e aumentar a mensagem de tempo excedido do ICMP.

De acordo com a Cisco, alguns ISPs (Internet Service Providers) limitam a taxa de mensagens ICMP que seus roteadores retransmitem.

Alguns dispositivos estão configurados para nunca enviar pacotes ICMP. Isso geralmente garante que o dispositivo não possa ser involuntariamente coagido a participar de uma negação de serviço distribuída, como um ataque de smurf.

o traceroute tem um tempo limite padrão para respostas de cinco segundos. Se ele não receber uma resposta dentro desses cinco segundos, a tentativa será abandonada. Isso significa que as respostas de roteadores muito lentos são ignoradas.

Instalando o traceroute

O

traceroute já foi instalado no Fedora 31, mas deve ser instalado no Manjaro 18.1 e no Ubuntu 18.04. Para instalar o traceroute no Manjaro, use o seguinte comando:

 sudo pacman -Sy traceroute 

Para instalar o traceroute no Ubuntu, use o seguinte comando:

 sudo apt-get install traceroute 

Usando traceroute

Como abordamos acima, o objetivo do traceroute é obter uma resposta do roteador a cada salto do computador para o destino. Alguns podem ter a boca fechada e não revelam nada, enquanto outros provavelmente derramarão o feijão sem escrúpulos.

Como exemplo, executaremos um traceroute no site do Castelo de Blarney, na Irlanda, casa da famosa Pedra de Blarney. A lenda diz que se você beijar a Pedra Blarney, você será abençoado com o presente do gab. Vamos torcer para que os roteadores que encontramos ao longo do caminho sejam adequadamente tagarela.

Digitamos o seguinte comando:

 traceroute www. blarneycastle. ie 

A primeira linha nos fornece as seguintes informações:

  • O destino e seu endereço IP.
  • O número de traceroute de saltos tentará antes de desistir.
  • O tamanho dos pacotes UDP que estamos enviando .

Todas as outras linhas contêm informações sobre um dos saltos. Antes de nos aprofundarmos nos detalhes, no entanto, podemos ver que há 11 saltos entre nosso computador e o site do Castelo de Blarney. O salto 11 também nos diz que chegamos ao nosso destino.

O formato de cada linha de salto é o seguinte:

  • O nome do dispositivo ou, se o dispositivo não se identificar, o endereço IP.
  • O endereço IP.
  • O tempo que levou ida e volta para cada um dos três testes. Se um asterisco estiver aqui, significa que não houve uma resposta para esse teste. Se o dispositivo não responder, você verá três asteriscos e nenhum nome ou endereço IP do dispositivo.

Vamos analisar o que temos abaixo:

  • Hop 1: A primeira porta de escala (sem trocadilhos) é o DrayTek Vigor Router na rede local. É assim que nossos pacotes UDP deixam a rede local e acessam a Internet.
  • Pulo 2: Este dispositivo não respondeu. Talvez tenha sido configurado para nunca enviar pacotes ICMP. Ou talvez tenha respondido, mas foi muito lento, então o tempo limite do traceroute foi atingido.
  • Lúpulo 3: Um dispositivo respondeu, mas não obtivemos o nome, apenas o endereço IP. Observe que há um asterisco nesta linha, o que significa que não obtivemos resposta a todas as três solicitações. Isso pode indicar perda de pacotes.
  • Lúpulos 4 e 5: mais saltos anônimos.
  • Pulo 6: há muito texto aqui porque um dispositivo remoto diferente manipulou cada um de nossos três Solicitações UDP. Os nomes (bastante longos) e os endereços IP de cada dispositivo foram impressos. Isso pode acontecer quando você encontra um “ ricamente povoado ” rede na qual há muito hardware para lidar com grandes volumes de tráfego. Esse salto está dentro de um dos maiores ISPs do Reino Unido. Portanto, seria um pequeno milagre se a mesma peça de hardware remoto atendesse às nossas três solicitações de conexão.
  • Salto 7: Este é o salto que nossos pacotes UDP feitas quando deixaram a rede dos provedores.
  • Salte 8: Novamente, obtemos um endereço IP, mas não o nome do dispositivo. Todos os três testes foram bem-sucedidos.
  • Lúpulo 9 e 10: mais dois saltos anônimos.
  • Salto 11: Chegamos ao site do Blarney Castle. O castelo fica em Cork, na Irlanda, mas, de acordo com a geolocalização do endereço IP, o site está em Londres.

Então, era uma sacola misturada. Alguns dispositivos jogaram bola, alguns responderam, mas não nos disseram seus nomes, e outros permaneceram completamente anônimos.

No entanto, chegamos ao destino, sabemos que estão a 11 saltos e o tempo de ida e volta para a viagem foi de 13.773 e 14.715 milissegundos.

Ocultando nomes de dispositivos

Como vimos, às vezes incluir nomes de dispositivos leva a uma exibição desorganizada. Para facilitar a visualização dos dados, você pode usar a opção -n (sem mapeamento).

Para fazer isso com o nosso exemplo, digite o seguinte:

 traceroute -n blarneycastle. ie 

Isso facilita a seleção de grandes números para horários de ida e volta que possam indicar um gargalo.

O salto 3 está começando a parecer um pouco suspeito. Na última vez, ele respondeu apenas duas vezes e, desta vez, apenas uma vez. Nesse cenário, está fora de nosso controle, é claro.

No entanto, se você estivesse investigando sua rede corporativa, valeria a pena se aprofundar um pouco mais nesse nó.

Definindo o valor do tempo limite do traceroute

Talvez se estendermos o período de tempo limite padrão (cinco segundos), obteremos mais respostas. Para fazer isso, usaremos a opção -w (tempo de espera) para alterá-lo para sete segundos. (Observe que este é um número de ponto flutuante.)

Digitamos o seguinte comando:

 traceroute -w 7.0 blarneycastle. ie 

Isso não fez muita diferença, então as respostas provavelmente estão atingindo o tempo limite. É provável que o lúpulo anônimo esteja sendo propositadamente secreto.

Definindo o número de testes

Por padrão, o traceroute envia três pacotes UDP para cada salto. Podemos usar a opção -q (número de consultas) para ajustar isso para cima ou para baixo.

Para acelerar o teste de traceroute, digite o seguinte para reduzir o número de pacotes de sondagem UDP que enviamos para um:

 traceroute -q 1 blarneycastle. ie 

Isso envia uma única sonda para cada salto.

Configurando o valor TTL inicial

Podemos definir o valor inicial de TTL para algo diferente de um e pular alguns saltos. Geralmente, os valores TTL são definidos como um para o primeiro conjunto de testes, dois para o próximo conjunto de testes e assim por diante. Se definirmos para cinco, o primeiro teste tentará pular cinco e pular o lúpulo de um a quatro.

Como sabemos que o site do Blarney Castle está a 11 saltos deste computador, digite o seguinte para ir direto para o Hop 11:

 traceroute -f 11 blarneycastle. ie 

Isso nos fornece um bom relatório condensado sobre o estado da conexão com o destino.

Seja atencioso

O

traceroute é uma ótima ferramenta para investigar o roteamento da rede, verificar as velocidades de conexão ou identificar gargalos. O Windows também possui um comando tracert que funciona da mesma forma.

No entanto, você não deseja bombardear dispositivos desconhecidos com torrents de pacotes UDP, e tenha cuidado ao incluir o traceroute em scripts ou trabalhos autônomos.

O traceroute de carga que pode ser colocado em uma rede pode afetar negativamente seu desempenho. A menos que você esteja em um tipo de situação consertar agora, convém usá-lo fora do horário comercial.

Via: How to Geek

Veja Também:

Nenhum comentário