Você pode usar Linux traceroute
comando para detectar o trecho lento da jornada de um pacote de rede e corrigir problemas de conexão de rede lenta. Vamos mostrar como!
Como funciona o traceroute
Quando você aprecia como traceroute
funciona, torna muito mais fácil entender os resultados. Quanto mais complicada a rota pacote de rede tem que levar para chegar ao seu destino, mais difícil é identificar onde pode estar ocorrendo qualquer desaceleração.
Uma pequena organização Rede local (LAN) poderia ser relativamente simples. Você provavelmente terá pelo menos um servidor e um roteador ou dois. A complexidade aumenta em rede de área ampla (FURGÃO) comunicação entre diferentes locais ou pela Internet. Seu pacote de rede posteriormente encontra (e é encaminhado e roteado por) muito hardware, como roteadores e passarelas.
Os cabeçalhos de metadados dos pacotes de dados descrevem seu comprimento, de onde eles vêm, onde vão, o protocolo que eles usam, etc. 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
use o TCP / IP pacote de protocolo e envia Protocolo de datagrama do usuário pacotes. O cabeçalho contém o Tempo de Viver (TTL), contendo um valor inteiro de oito bits. Apesar do que o nome sugere, representa uma contagem, não é uma duração.
Um pacote viaja de sua origem até seu destino por meio de um roteador. Cada vez que o pacote chega a um roteador, diminuir o contador TTL. Se o valor TTL chegar a um, o roteador que recebe o pacote diminui o valor e percebe que agora é zero. Depois de, o pacote é descartado e não encaminhado para o próximo salto em sua jornada devido ao tempo limite esgotado.
O roteador envia um Internet Message Control Protocol (ICMP) Tempo excedido mensagem de volta para a origem do pacote para informá-lo que o pacote expirou. A mensagem Time Exceeded contém o cabeçalho original e os primeiros 64 bits de dados do pacote original. Isso está definido na página seis do Pedido de comentários 792.
Portanto sim traceroute
enviar um pacote, mas depois defina o valor TTL para um, o pacote só alcançará o primeiro roteador antes de ser descartado. Você receberá uma mensagem de tempo excedido do ICMP do roteador e poderá registrar o tempo que levou para a viagem de ida e volta.
Em seguida, repita o exercício com TTL definido para 2, que irá falhar após dois saltos. traceroute
aumente o TTL para três e tente novamente. Este procedimento é repetido até que o destino seja alcançado ou o número máximo de saltos seja testado (30, por padrão).
Alguns roteadores não funcionam bem
Alguns roteadores têm erros. Eles tentam encaminhar pacotes com um TTL de zero em vez de descartá-los e gerar uma mensagem de tempo limite ICMP.
De acordo com Cisco, alguns provedores de serviço de internet (ISP) limitar o número de mensagens ICMP transmitidas por seus roteadores.
Alguns dispositivos são configurados para nunca enviar pacotes ICMP. Frequentemente, Isso é feito para garantir que o dispositivo não possa ser inadvertidamente coagido a participar de um Negação de serviço distribuída, como um ataque de smurfs.
traceroute
tem um tempo limite padrão para respostas de cinco segundos. Se você não obtiver uma resposta em cinco segundos, a tentativa é abandonada. Isso significa que as respostas de roteadores muito lentos são ignoradas.
Instalação do Traceroute
traceroute
já estava instalado no Fedora 31 mas deve ser instalado em Manjaro 18.1 y Ubuntu 18.04. Instalar traceroute
em Manjaro use o seguinte comando:
sudo pacman -Sy traceroute
Instalar traceroute
no Ubuntu, use o seguinte comando:
sudo apt-get install traceroute
Usando traceroute
Como cobrimos acima, traceroute's
O objetivo é obter uma resposta do roteador em cada salto do seu computador para o destino. Alguns podem ficar quietos e não revelar nada, enquanto outros provavelmente derramarão o feijão sem escrúpulos.
Como exemplo, vamos executar um traceroute
al Castelo de Blarney portal da web na Irlanda, casa do famoso Pedra de blarney. Diz a lenda que se você beijar a Pedra de Blarney, você será abençoado com o “dom da palavra”. Esperançosamente, os roteadores que encontramos ao longo do caminho são falantes o suficiente.
Nós escrevemos o seguinte comando:
traceroute www.blarneycastle.ie
A primeira linha nos dá as próximas informações:
- O destino e seu endereço IP.
- O número de saltos
traceroute
Vou tentar antes de desistir. - O tamanho dos pacotes UDP que enviamos.
Todas as outras linhas contêm informações sobre um dos saltos. Apesar disto, antes de mergulhar nos detalhes, nós podemos ver o que há 11 salta entre o nosso computador e o portal da web 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 for identificado, o endereço IP.
- O endereço IP.
- O tempo que levou para a viagem de ida e volta para cada um dos três testes. Se houver um asterisco aqui, significa que não houve resposta para esse teste. Se o dispositivo não estiver respondendo de forma alguma, você verá três asteriscos e nenhum nome de dispositivo ou endereço IP.
Vamos revisar o que temos a seguir:
- Salto 1: O primeiro porto de escala (sem trocadilhos) é o roteador DrayTek Vigor na rede local. É assim que nossos pacotes UDP deixam a rede local e se conectam à Internet.
- Salto 2: Este dispositivo não respondeu. Talvez tenha sido configurado para nunca enviar pacotes ICMP. Ou talvez ele respondeu, mas estava muito lento, pelo que
traceroute
desconectado. - Salto 3: Um dispositivo respondeu, mas não pegamos o nome dele, apenas o endereço IP. Observe que há um asterisco nesta linha, o que significa que não obtivemos uma resposta a todas as três solicitações. Isso pode indicar perda de pacote.
- Lúpulo 4 e 5: Mais saltos anônimos.
- Salto 6: Há muito texto aqui devido a um dispositivo remoto diferente que lida com cada uma de nossas três solicitações UDP. Nomes foram impressos (bastante longo) e os endereços IP de cada dispositivo. Isso pode acontecer quando você encontra uma rede “muito povoado” em que há um monte de hardware para lidar com grandes volumes de tráfego. Este salto está dentro de um dos maiores ISPs do Reino Unido. Por isso, seria um pequeno milagre se o mesmo hardware remoto administrasse nossas três solicitações de conexão.
- Salto 7: Este é o salto que nossos pacotes UDP deram quando saíram da rede do ISP.
- Salto 8: Novamente, obtemos um endereço IP, mas não o nome do dispositivo. Todos os três testes retornaram com sucesso.
- Lúpulo 9 e 10: Mais dois saltos anônimos.
- Salto 11: Chegamos ao portal da web do Castelo de Blarney. O castelo fica em Cork, Irlanda, mas, de acordo com Geolocalização de endereços IP, o portal da web é em Londres.
Então, foi um saco misturado. Alguns dispositivos jogaram bola, alguns responderam, mas não nos disseram seus nomes e outros permaneceram absolutamente anônimos.
Apesar disto, chegamos ao destino, nós sabemos que eles são 11 pula e o tempo de ida e volta para a viagem foi 13,773 e 14,715 milissegundos.
Ocultar nomes de dispositivos
Como nós vimos, às vezes, incluir nomes de dispositivos leva a uma tela desordenada. Para tornar mais fácil ver os dados, você pode usar o -n
(sem mapeamento) opção.
Para fazer isso com nosso exemplo, nós escrevemos o seguinte:
traceroute -n blarneycastle.ie
Isso torna mais fácil escolher números grandes para tempos de ida e volta que podem indicar um gargalo..
Saltar 3 está começando a parecer um pouco suspeito. A última vez, só respondeu duas vezes, e desta vez, só respondeu uma vez. Nesta fase, está fora do nosso controle, de qualquer forma.
Apesar disto, se você estivesse pesquisando sua rede corporativa, valeria a pena cavar um pouco mais fundo nesse nó.
Configurando o valor de tempo limite do traceroute
Talvez se estendermos o tempo de espera padrão (cinco segundos), vamos obter mais respostas. Para fazer isso, nós vamos usar o -w
(Tempo de espera) mudar para sete segundos. (Observe que este é um número de ponto flutuante).
Nós escrevemos o seguinte comando:
traceroute -w 7.0 blarneycastle.ie
Isso não fez grande diferença., então as respostas provavelmente estão se esgotando. Saltos anônimos provavelmente estão sendo deliberadamente reservados.
Definir o número de testes
Por padrão, traceroute
enviar três pacotes UDP para cada salto. Podemos usar o -q
(número de inquéritos) para ajustar isso para cima ou para baixo.
Para acelerar o traceroute
prova, escrevemos o seguinte para reduzir o número de pacotes de pesquisa UDP que enviamos para um:
traceroute -q 1 blarneycastle.ie
Isso envia uma única sonda para cada salto.
Definir o valor TTL inicial
Podemos definir o valor TTL inicial para algo diferente de um e pular alguns saltos. Em geral, 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, a primeira tentativa tentará pular cinco e pular os saltos de um a quatro.
Como sabemos, o portal do Castelo de Blarney está em 11 pula deste computador, escrevemos o seguinte para ir diretamente para o Jump 11:
traceroute -f 11 blarneycastle.ie
Isso nos dá um relatório bom e condensado sobre o estado da conexão com o destino..
Seja atencioso
traceroute
é uma ótima ferramenta para investigar o roteamento de rede, verificar velocidades de conexão ou identificar gargalos. O Windows também tem tracert
comando que funciona de forma semelhante.
Apesar disto, você não quer bombardear dispositivos desconhecidos com torrents de pacotes UDP e tenha o cuidado de incluir traceroute
em scripts ou trabalhos autônomos.
A carga traceroute
pode ser colocado em uma rede pode afetar adversamente seu desempenho. A menos que você esteja em uma situação de consertá-lo agora, você pode querer usá-lo fora do horário comercial normal.